OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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/globals.h" // Needed here to get TARGET_ARCH_XXX. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX. |
6 | 6 |
7 #include "vm/flow_graph_compiler.h" | 7 #include "vm/flow_graph_compiler.h" |
8 | 8 |
9 #include "vm/bit_vector.h" | 9 #include "vm/bit_vector.h" |
10 #include "vm/cha.h" | 10 #include "vm/cha.h" |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
533 ASSERT(Code::kSCallTableOffsetEntry == 0); | 533 ASSERT(Code::kSCallTableOffsetEntry == 0); |
534 static_calls_target_table_.Add( | 534 static_calls_target_table_.Add( |
535 Smi::Handle(Smi::New(assembler()->CodeSize()))); | 535 Smi::Handle(Smi::New(assembler()->CodeSize()))); |
536 ASSERT(Code::kSCallTableFunctionEntry == 1); | 536 ASSERT(Code::kSCallTableFunctionEntry == 1); |
537 static_calls_target_table_.Add(func); | 537 static_calls_target_table_.Add(func); |
538 ASSERT(Code::kSCallTableCodeEntry == 2); | 538 ASSERT(Code::kSCallTableCodeEntry == 2); |
539 static_calls_target_table_.Add(Code::Handle()); | 539 static_calls_target_table_.Add(Code::Handle()); |
540 } | 540 } |
541 | 541 |
542 | 542 |
| 543 void FlowGraphCompiler::AddStubCallTarget(const Code& code) { |
| 544 ASSERT(Code::kSCallTableEntryLength == 3); |
| 545 ASSERT(Code::kSCallTableOffsetEntry == 0); |
| 546 static_calls_target_table_.Add( |
| 547 Smi::Handle(Smi::New(assembler()->CodeSize()))); |
| 548 ASSERT(Code::kSCallTableFunctionEntry == 1); |
| 549 static_calls_target_table_.Add(Function::Handle()); |
| 550 ASSERT(Code::kSCallTableCodeEntry == 2); |
| 551 static_calls_target_table_.Add(code); |
| 552 } |
| 553 |
| 554 |
543 void FlowGraphCompiler::AddDeoptIndexAtCall(intptr_t deopt_id, | 555 void FlowGraphCompiler::AddDeoptIndexAtCall(intptr_t deopt_id, |
544 intptr_t token_pos) { | 556 intptr_t token_pos) { |
545 ASSERT(is_optimizing()); | 557 ASSERT(is_optimizing()); |
546 ASSERT(!intrinsic_mode()); | 558 ASSERT(!intrinsic_mode()); |
547 CompilerDeoptInfo* info = | 559 CompilerDeoptInfo* info = |
548 new CompilerDeoptInfo(deopt_id, | 560 new CompilerDeoptInfo(deopt_id, |
549 ICData::kDeoptAtCall, | 561 ICData::kDeoptAtCall, |
550 pending_deoptimization_env_); | 562 pending_deoptimization_env_); |
551 info->set_pc_offset(assembler()->CodeSize()); | 563 info->set_pc_offset(assembler()->CodeSize()); |
552 deopt_infos_.Add(info); | 564 deopt_infos_.Add(info); |
(...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1470 threshold = FLAG_optimization_counter_scale * basic_blocks + | 1482 threshold = FLAG_optimization_counter_scale * basic_blocks + |
1471 FLAG_min_optimization_counter_threshold; | 1483 FLAG_min_optimization_counter_threshold; |
1472 if (threshold > FLAG_optimization_counter_threshold) { | 1484 if (threshold > FLAG_optimization_counter_threshold) { |
1473 threshold = FLAG_optimization_counter_threshold; | 1485 threshold = FLAG_optimization_counter_threshold; |
1474 } | 1486 } |
1475 } | 1487 } |
1476 return threshold; | 1488 return threshold; |
1477 } | 1489 } |
1478 | 1490 |
1479 } // namespace dart | 1491 } // namespace dart |
OLD | NEW |