| 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 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 graph_compiler.FinalizeStaticCallTargetsTable(code); | 508 graph_compiler.FinalizeStaticCallTargetsTable(code); |
| 509 | 509 |
| 510 if (optimized) { | 510 if (optimized) { |
| 511 CodePatcher::PatchEntry(Code::Handle(function.CurrentCode())); | 511 CodePatcher::PatchEntry(Code::Handle(function.CurrentCode())); |
| 512 function.SetCode(code); | 512 function.SetCode(code); |
| 513 if (FLAG_trace_compiler) { | 513 if (FLAG_trace_compiler) { |
| 514 OS::Print("--> patching entry %#"Px"\n", | 514 OS::Print("--> patching entry %#"Px"\n", |
| 515 Code::Handle(function.unoptimized_code()).EntryPoint()); | 515 Code::Handle(function.unoptimized_code()).EntryPoint()); |
| 516 } | 516 } |
| 517 | 517 |
| 518 // If not yet present, allocate deoptimization history array. | |
| 519 function.EnsureDeoptHistory(); | |
| 520 | |
| 521 for (intptr_t i = 0; i < guarded_fields.length(); i++) { | 518 for (intptr_t i = 0; i < guarded_fields.length(); i++) { |
| 522 const Field& field = *guarded_fields[i]; | 519 const Field& field = *guarded_fields[i]; |
| 523 field.RegisterDependentCode(code); | 520 field.RegisterDependentCode(code); |
| 524 } | 521 } |
| 525 } else { | 522 } else { |
| 526 function.set_unoptimized_code(code); | 523 function.set_unoptimized_code(code); |
| 527 function.SetCode(code); | 524 function.SetCode(code); |
| 528 ASSERT(CodePatcher::CodeIsPatchable(code)); | 525 ASSERT(CodePatcher::CodeIsPatchable(code)); |
| 529 } | 526 } |
| 530 } | 527 } |
| (...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 877 Object::Handle(isolate->object_store()->sticky_error()); | 874 Object::Handle(isolate->object_store()->sticky_error()); |
| 878 isolate->object_store()->clear_sticky_error(); | 875 isolate->object_store()->clear_sticky_error(); |
| 879 isolate->set_long_jump_base(base); | 876 isolate->set_long_jump_base(base); |
| 880 return result.raw(); | 877 return result.raw(); |
| 881 } | 878 } |
| 882 UNREACHABLE(); | 879 UNREACHABLE(); |
| 883 return Object::null(); | 880 return Object::null(); |
| 884 } | 881 } |
| 885 | 882 |
| 886 } // namespace dart | 883 } // namespace dart |
| OLD | NEW |