| Index: runtime/vm/intrinsifier.cc
|
| diff --git a/runtime/vm/intrinsifier.cc b/runtime/vm/intrinsifier.cc
|
| index aa5ba86cb22dc5cfe93aa6166d5421b0cba1e485..c3356b3a1942d37578e358486bb39a495cb97733 100644
|
| --- a/runtime/vm/intrinsifier.cc
|
| +++ b/runtime/vm/intrinsifier.cc
|
| @@ -868,4 +868,23 @@ bool Intrinsifier::Build_GrowableArraySetLength(FlowGraph* flow_graph) {
|
| return true;
|
| }
|
|
|
| +
|
| +bool Intrinsifier::Build_DoubleFlipSignBit(FlowGraph* flow_graph) {
|
| + GraphEntryInstr* graph_entry = flow_graph->graph_entry();
|
| + TargetEntryInstr* normal_entry = graph_entry->normal_entry();
|
| + BlockBuilder builder(flow_graph, normal_entry);
|
| +
|
| + Definition* receiver = builder.AddParameter(1);
|
| + Definition* unboxed_value =
|
| + builder.AddUnboxInstr(kUnboxedDouble, new Value(receiver));
|
| + Definition* unboxed_result = builder.AddDefinition(
|
| + new UnaryDoubleOpInstr(Token::kNEGATE,
|
| + new Value(unboxed_value),
|
| + Thread::kNoDeoptId));
|
| + Definition* result = builder.AddDefinition(
|
| + BoxInstr::Create(kUnboxedDouble, new Value(unboxed_result)));
|
| + builder.AddIntrinsicReturn(new Value(result));
|
| + return true;
|
| +}
|
| +
|
| } // namespace dart
|
|
|