| Index: runtime/vm/intrinsifier.cc
|
| diff --git a/runtime/vm/intrinsifier.cc b/runtime/vm/intrinsifier.cc
|
| index c94fe26de5c37b97d5e560a53ec709c3a52b7f51..7e7207f518e0ffa4d102d929d9d5a89dcd292411 100644
|
| --- a/runtime/vm/intrinsifier.cc
|
| +++ b/runtime/vm/intrinsifier.cc
|
| @@ -532,15 +532,13 @@ static bool IntrinsifyArraySetIndexed(FlowGraph* flow_graph,
|
| // Float32/Float64 case already handled.
|
| break;
|
| }
|
| - const ICData& value_check = ICData::ZoneHandle(
|
| - ICData::New(flow_graph->function(),
|
| - Symbols::Empty(), // Dummy function name.
|
| - Object::empty_array(), // Dummy args. descr.
|
| - Thread::kNoDeoptId, 1, false));
|
| - value_check.AddReceiverCheck(value_check_cid, flow_graph->function());
|
| + Zone* zone = flow_graph->zone();
|
| + CallTargets* value_check = new (zone) CallTargets();
|
| + value_check->Add(CidRangeTarget(value_check_cid, value_check_cid,
|
| + &flow_graph->function(), 1));
|
| builder.AddInstruction(
|
| - new CheckClassInstr(new Value(value), Thread::kNoDeoptId, value_check,
|
| - builder.TokenPos()));
|
| + new CheckClassInstr(new Value(value), Thread::kNoDeoptId,
|
| + *value_check, builder.TokenPos()));
|
| value = builder.AddUnboxInstr(rep, new Value(value),
|
| /* is_checked = */ true);
|
| if (array_cid == kTypedDataFloat32ArrayCid) {
|
| @@ -730,6 +728,7 @@ bool Intrinsifier::Build_ExternalTwoByteStringCodeUnitAt(
|
| static bool BuildBinaryFloat32x4Op(FlowGraph* flow_graph, Token::Kind kind) {
|
| if (!FlowGraphCompiler::SupportsUnboxedSimd128()) return false;
|
|
|
| + Zone* zone = flow_graph->zone();
|
| GraphEntryInstr* graph_entry = flow_graph->graph_entry();
|
| TargetEntryInstr* normal_entry = graph_entry->normal_entry();
|
| BlockBuilder builder(flow_graph, normal_entry);
|
| @@ -737,14 +736,12 @@ static bool BuildBinaryFloat32x4Op(FlowGraph* flow_graph, Token::Kind kind) {
|
| Definition* right = builder.AddParameter(1);
|
| Definition* left = builder.AddParameter(2);
|
|
|
| - const ICData& value_check = ICData::ZoneHandle(ICData::New(
|
| - flow_graph->function(), String::Handle(flow_graph->function().name()),
|
| - Object::empty_array(), // Dummy args. descr.
|
| - Thread::kNoDeoptId, 1, false));
|
| - value_check.AddReceiverCheck(kFloat32x4Cid, flow_graph->function());
|
| + CallTargets* value_check = new (zone) CallTargets();
|
| + value_check->Add(
|
| + CidRangeTarget(kFloat32x4Cid, kFloat32x4Cid, &flow_graph->function(), 1));
|
| // Check argument. Receiver (left) is known to be a Float32x4.
|
| builder.AddInstruction(new CheckClassInstr(
|
| - new Value(right), Thread::kNoDeoptId, value_check, builder.TokenPos()));
|
| + new Value(right), Thread::kNoDeoptId, *value_check, builder.TokenPos()));
|
| Definition* left_simd =
|
| builder.AddUnboxInstr(kUnboxedFloat32x4, new Value(left),
|
| /* is_checked = */ true);
|
| @@ -946,14 +943,13 @@ bool Intrinsifier::Build_GrowableArraySetData(FlowGraph* flow_graph) {
|
|
|
| Definition* data = builder.AddParameter(1);
|
| Definition* growable_array = builder.AddParameter(2);
|
| + Zone* zone = flow_graph->zone();
|
|
|
| - const ICData& value_check = ICData::ZoneHandle(ICData::New(
|
| - flow_graph->function(), String::Handle(flow_graph->function().name()),
|
| - Object::empty_array(), // Dummy args. descr.
|
| - Thread::kNoDeoptId, 1, false));
|
| - value_check.AddReceiverCheck(kArrayCid, flow_graph->function());
|
| + CallTargets* value_check = new (zone) CallTargets();
|
| + value_check->Add(
|
| + CidRangeTarget(kArrayCid, kArrayCid, &flow_graph->function(), 1));
|
| builder.AddInstruction(new CheckClassInstr(
|
| - new Value(data), Thread::kNoDeoptId, value_check, builder.TokenPos()));
|
| + new Value(data), Thread::kNoDeoptId, *value_check, builder.TokenPos()));
|
|
|
| builder.AddInstruction(new StoreInstanceFieldInstr(
|
| GrowableObjectArray::data_offset(), new Value(growable_array),
|
|
|