OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/compiler.h" | 5 #include "vm/compiler.h" |
6 | 6 |
7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
8 | 8 |
9 #include "vm/ast_printer.h" | 9 #include "vm/ast_printer.h" |
10 #include "vm/code_generator.h" | 10 #include "vm/code_generator.h" |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 Object::Handle(object_table.At(i)).ToCString()); | 378 Object::Handle(object_table.At(i)).ToCString()); |
379 } | 379 } |
380 OS::Print("}\n"); | 380 OS::Print("}\n"); |
381 } | 381 } |
382 | 382 |
383 OS::Print("Stackmaps for function '%s' {\n", function_fullname); | 383 OS::Print("Stackmaps for function '%s' {\n", function_fullname); |
384 if (code.stackmaps() != Array::null()) { | 384 if (code.stackmaps() != Array::null()) { |
385 const Array& stackmap_table = Array::Handle(code.stackmaps()); | 385 const Array& stackmap_table = Array::Handle(code.stackmaps()); |
386 Stackmap& map = Stackmap::Handle(); | 386 Stackmap& map = Stackmap::Handle(); |
387 for (intptr_t i = 0; i < stackmap_table.Length(); ++i) { | 387 for (intptr_t i = 0; i < stackmap_table.Length(); ++i) { |
388 map |= stackmap_table.At(i); | 388 map ^= stackmap_table.At(i); |
389 OS::Print("%s\n", map.ToCString()); | 389 OS::Print("%s\n", map.ToCString()); |
390 } | 390 } |
391 } | 391 } |
392 OS::Print("}\n"); | 392 OS::Print("}\n"); |
393 | 393 |
394 OS::Print("Variable Descriptors for function '%s' {\n", | 394 OS::Print("Variable Descriptors for function '%s' {\n", |
395 function_fullname); | 395 function_fullname); |
396 const LocalVarDescriptors& var_descriptors = | 396 const LocalVarDescriptors& var_descriptors = |
397 LocalVarDescriptors::Handle(code.var_descriptors()); | 397 LocalVarDescriptors::Handle(code.var_descriptors()); |
398 intptr_t var_desc_length = | 398 intptr_t var_desc_length = |
(...skipping 29 matching lines...) Expand all Loading... |
428 OS::Print("%s}\n", handlers.ToCString()); | 428 OS::Print("%s}\n", handlers.ToCString()); |
429 | 429 |
430 { | 430 { |
431 OS::Print("Static call target functions {\n"); | 431 OS::Print("Static call target functions {\n"); |
432 const Array& table = Array::Handle(code.static_calls_target_table()); | 432 const Array& table = Array::Handle(code.static_calls_target_table()); |
433 Smi& offset = Smi::Handle(); | 433 Smi& offset = Smi::Handle(); |
434 Function& function = Function::Handle(); | 434 Function& function = Function::Handle(); |
435 Code& code = Code::Handle(); | 435 Code& code = Code::Handle(); |
436 for (intptr_t i = 0; i < table.Length(); | 436 for (intptr_t i = 0; i < table.Length(); |
437 i += Code::kSCallTableEntryLength) { | 437 i += Code::kSCallTableEntryLength) { |
438 offset |= table.At(i + Code::kSCallTableOffsetEntry); | 438 offset ^= table.At(i + Code::kSCallTableOffsetEntry); |
439 function |= table.At(i + Code::kSCallTableFunctionEntry); | 439 function ^= table.At(i + Code::kSCallTableFunctionEntry); |
440 code |= table.At(i + Code::kSCallTableCodeEntry); | 440 code ^= table.At(i + Code::kSCallTableCodeEntry); |
441 OS::Print(" 0x%"Px": %s, %p\n", | 441 OS::Print(" 0x%"Px": %s, %p\n", |
442 start + offset.Value(), | 442 start + offset.Value(), |
443 function.ToFullyQualifiedCString(), | 443 function.ToFullyQualifiedCString(), |
444 code.raw()); | 444 code.raw()); |
445 } | 445 } |
446 OS::Print("}\n"); | 446 OS::Print("}\n"); |
447 } | 447 } |
448 } | 448 } |
449 | 449 |
450 | 450 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 Error& error = Error::Handle(); | 566 Error& error = Error::Handle(); |
567 Array& functions = Array::Handle(cls.functions()); | 567 Array& functions = Array::Handle(cls.functions()); |
568 Function& func = Function::Handle(); | 568 Function& func = Function::Handle(); |
569 // Class dynamic lives in the vm isolate. Its array fields cannot be set to | 569 // Class dynamic lives in the vm isolate. Its array fields cannot be set to |
570 // an empty array. | 570 // an empty array. |
571 if (functions.IsNull()) { | 571 if (functions.IsNull()) { |
572 ASSERT(cls.IsDynamicClass()); | 572 ASSERT(cls.IsDynamicClass()); |
573 return error.raw(); | 573 return error.raw(); |
574 } | 574 } |
575 for (int i = 0; i < functions.Length(); i++) { | 575 for (int i = 0; i < functions.Length(); i++) { |
576 func |= functions.At(i); | 576 func ^= functions.At(i); |
577 ASSERT(!func.IsNull()); | 577 ASSERT(!func.IsNull()); |
578 if (!func.HasCode() && | 578 if (!func.HasCode() && |
579 !func.is_abstract() && | 579 !func.is_abstract() && |
580 !func.IsRedirectingFactory()) { | 580 !func.IsRedirectingFactory()) { |
581 error = CompileFunction(func); | 581 error = CompileFunction(func); |
582 if (!error.IsNull()) { | 582 if (!error.IsNull()) { |
583 return error.raw(); | 583 return error.raw(); |
584 } | 584 } |
585 } | 585 } |
586 } | 586 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
642 Object::Handle(isolate->object_store()->sticky_error()); | 642 Object::Handle(isolate->object_store()->sticky_error()); |
643 isolate->object_store()->clear_sticky_error(); | 643 isolate->object_store()->clear_sticky_error(); |
644 isolate->set_long_jump_base(base); | 644 isolate->set_long_jump_base(base); |
645 return result.raw(); | 645 return result.raw(); |
646 } | 646 } |
647 UNREACHABLE(); | 647 UNREACHABLE(); |
648 return Object::null(); | 648 return Object::null(); |
649 } | 649 } |
650 | 650 |
651 } // namespace dart | 651 } // namespace dart |
OLD | NEW |