Index: runtime/vm/intermediate_language.cc |
diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc |
index d05c601b87d7ae16473d35ed8491142a97f88521..b7bacba5eda7e0c6eb1edf8f2b84d5ad58a7ed71 100644 |
--- a/runtime/vm/intermediate_language.cc |
+++ b/runtime/vm/intermediate_language.cc |
@@ -2945,15 +2945,15 @@ LocationSummary* InstanceCallInstr::MakeLocationSummary(Zone* zone, |
} |
-static uword TwoArgsSmiOpInlineCacheEntry(Token::Kind kind) { |
+static const StubEntry* TwoArgsSmiOpInlineCacheEntry(Token::Kind kind) { |
if (!FLAG_two_args_smi_icd) { |
return 0; |
} |
switch (kind) { |
- case Token::kADD: return StubCode::SmiAddInlineCacheEntryPoint(); |
- case Token::kSUB: return StubCode::SmiSubInlineCacheEntryPoint(); |
- case Token::kEQ: return StubCode::SmiEqualInlineCacheEntryPoint(); |
- default: return 0; |
+ case Token::kADD: return StubCode::SmiAddInlineCache_entry(); |
+ case Token::kSUB: return StubCode::SmiSubInlineCache_entry(); |
+ case Token::kEQ: return StubCode::SmiEqualInlineCache_entry(); |
+ default: return NULL; |
} |
} |
@@ -2994,8 +2994,8 @@ void InstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
// Unoptimized code. |
ASSERT(!HasICData()); |
bool is_smi_two_args_op = false; |
- const uword label_address = TwoArgsSmiOpInlineCacheEntry(token_kind()); |
- if (label_address != 0) { |
+ const StubEntry* stub_entry = TwoArgsSmiOpInlineCacheEntry(token_kind()); |
+ if (stub_entry != NULL) { |
// We have a dedicated inline cache stub for this operation, add an |
// an initial Smi/Smi check with count 0. |
ASSERT(call_ic_data->NumArgsTested() == 2); |
@@ -3023,8 +3023,7 @@ void InstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
} |
if (is_smi_two_args_op) { |
ASSERT(ArgumentCount() == 2); |
- ExternalLabel target_label(label_address); |
- compiler->EmitInstanceCall(&target_label, *call_ic_data, ArgumentCount(), |
+ compiler->EmitInstanceCall(*stub_entry, *call_ic_data, ArgumentCount(), |
deopt_id(), token_pos(), locs()); |
} else if (FLAG_ic_range_profiling && |
(Token::IsBinaryArithmeticOperator(token_kind()) || |
@@ -3033,10 +3032,10 @@ void InstanceCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
(ArgumentCount() == 1)); |
ASSERT(Token::IsBinaryArithmeticOperator(token_kind()) == |
(ArgumentCount() == 2)); |
- ExternalLabel target_label((ArgumentCount() == 1) ? |
- StubCode::UnaryRangeCollectingInlineCacheEntryPoint() : |
- StubCode::BinaryRangeCollectingInlineCacheEntryPoint()); |
- compiler->EmitInstanceCall(&target_label, *call_ic_data, ArgumentCount(), |
+ const StubEntry* stub_entry = (ArgumentCount() == 1) |
+ ? StubCode::UnaryRangeCollectingInlineCache_entry() |
+ : StubCode::BinaryRangeCollectingInlineCache_entry(); |
+ compiler->EmitInstanceCall(*stub_entry, *call_ic_data, ArgumentCount(), |
deopt_id(), token_pos(), locs()); |
} else { |
compiler->GenerateInstanceCall(deopt_id(), |