| Index: runtime/vm/intermediate_language_x64.cc
|
| diff --git a/runtime/vm/intermediate_language_x64.cc b/runtime/vm/intermediate_language_x64.cc
|
| index 5ae112aa976848944fce7ef3a7bcf9fd4eed24cf..67d6d8e8283740354ee08edf4e58fd9d10324049 100644
|
| --- a/runtime/vm/intermediate_language_x64.cc
|
| +++ b/runtime/vm/intermediate_language_x64.cc
|
| @@ -253,6 +253,7 @@ LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Isolate* isolate,
|
|
|
|
|
| void UnboxedConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| + ASSERT(representation_ == kUnboxedDouble);
|
| // The register allocator drops constant definitions that have no uses.
|
| if (!locs()->out(0).IsInvalid()) {
|
| XmmRegister result = locs()->out(0).fpu_reg();
|
| @@ -970,13 +971,11 @@ LocationSummary* LoadIndexedInstr::MakeLocationSummary(Isolate* isolate,
|
| // tagged (for all element sizes > 1).
|
| if (index_scale() == 1) {
|
| locs->set_in(1, CanBeImmediateIndex(index(), class_id())
|
| - ? Location::Constant(
|
| - index()->definition()->AsConstant()->value())
|
| + ? Location::Constant(index()->definition()->AsConstant())
|
| : Location::WritableRegister());
|
| } else {
|
| locs->set_in(1, CanBeImmediateIndex(index(), class_id())
|
| - ? Location::Constant(
|
| - index()->definition()->AsConstant()->value())
|
| + ? Location::Constant(index()->definition()->AsConstant())
|
| : Location::RequiresRegister());
|
| }
|
| if ((representation() == kUnboxedDouble) ||
|
| @@ -1113,13 +1112,11 @@ LocationSummary* StoreIndexedInstr::MakeLocationSummary(Isolate* isolate,
|
| // tagged (for all element sizes > 1).
|
| if (index_scale() == 1) {
|
| locs->set_in(1, CanBeImmediateIndex(index(), class_id())
|
| - ? Location::Constant(
|
| - index()->definition()->AsConstant()->value())
|
| + ? Location::Constant(index()->definition()->AsConstant())
|
| : Location::WritableRegister());
|
| } else {
|
| locs->set_in(1, CanBeImmediateIndex(index(), class_id())
|
| - ? Location::Constant(
|
| - index()->definition()->AsConstant()->value())
|
| + ? Location::Constant(index()->definition()->AsConstant())
|
| : Location::RequiresRegister());
|
| }
|
| switch (class_id()) {
|
| @@ -2653,7 +2650,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
|
| LocationSummary* summary = new(isolate) LocationSummary(
|
| isolate, kNumInputs, kNumTemps, LocationSummary::kNoCall);
|
| summary->set_in(0, Location::RequiresRegister());
|
| - summary->set_in(1, Location::Constant(right_constant->value()));
|
| + summary->set_in(1, Location::Constant(right_constant));
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| return summary;
|
| }
|
| @@ -2665,7 +2662,7 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Isolate* isolate,
|
| if (RightIsPowerOfTwoConstant()) {
|
| summary->set_in(0, Location::RequiresRegister());
|
| ConstantInstr* right_constant = right()->definition()->AsConstant();
|
| - summary->set_in(1, Location::Constant(right_constant->value()));
|
| + summary->set_in(1, Location::Constant(right_constant));
|
| summary->set_temp(0, Location::RequiresRegister());
|
| summary->set_out(0, Location::SameAsFirstInput());
|
| } else {
|
| @@ -4625,6 +4622,9 @@ void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
|
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(Int32ToDoubleInstr)
|
| +
|
| +
|
| LocationSummary* SmiToDoubleInstr::MakeLocationSummary(Isolate* isolate,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5512,50 +5512,14 @@ CompileType UnaryUint32OpInstr::ComputeType() const {
|
| }
|
|
|
|
|
| -CompileType BoxUint32Instr::ComputeType() const {
|
| - return CompileType::FromCid(kSmiCid);
|
| -}
|
| -
|
| -
|
| -CompileType UnboxUint32Instr::ComputeType() const {
|
| - return CompileType::FromCid(kSmiCid);
|
| -}
|
| -
|
| -
|
| -LocationSummary* BinaryUint32OpInstr::MakeLocationSummary(Isolate* isolate,
|
| - bool opt) const {
|
| - UNIMPLEMENTED();
|
| - return NULL;
|
| -}
|
| -
|
| -
|
| -void BinaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - UNIMPLEMENTED();
|
| -}
|
| -
|
| -
|
| -LocationSummary* ShiftUint32OpInstr::MakeLocationSummary(Isolate* isolate,
|
| - bool opt) const {
|
| - UNIMPLEMENTED();
|
| - return NULL;
|
| -}
|
| -
|
| -
|
| -void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - UNIMPLEMENTED();
|
| -}
|
| -
|
| -
|
| -LocationSummary* UnaryUint32OpInstr::MakeLocationSummary(Isolate* isolate,
|
| - bool opt) const {
|
| - UNIMPLEMENTED();
|
| - return NULL;
|
| -}
|
| -
|
| -
|
| -void UnaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - UNIMPLEMENTED();
|
| -}
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(BinaryUint32OpInstr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(ShiftUint32OpInstr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(UnaryUint32OpInstr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(BoxInt32Instr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(UnboxInt32Instr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(BinaryInt32OpInstr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(BoxUint32Instr)
|
| +DEFINE_UNIMPLEMENTED_INSTRUCTION(UnboxedIntConverterInstr)
|
|
|
|
|
| LocationSummary* UnboxUint32Instr::MakeLocationSummary(Isolate* isolate,
|
| @@ -5587,30 +5551,6 @@ void UnboxUint32Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
|
|
|
|
| -LocationSummary* BoxUint32Instr::MakeLocationSummary(Isolate* isolate,
|
| - bool opt) const {
|
| - UNIMPLEMENTED();
|
| - return NULL;
|
| -}
|
| -
|
| -
|
| -void BoxUint32Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - UNIMPLEMENTED();
|
| -}
|
| -
|
| -
|
| -LocationSummary* UnboxedIntConverterInstr::MakeLocationSummary(Isolate* isolate,
|
| - bool opt) const {
|
| - UNIMPLEMENTED();
|
| - return NULL;
|
| -}
|
| -
|
| -
|
| -void UnboxedIntConverterInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| - UNIMPLEMENTED();
|
| -}
|
| -
|
| -
|
| LocationSummary* ThrowInstr::MakeLocationSummary(Isolate* isolate,
|
| bool opt) const {
|
| return new(isolate) LocationSummary(isolate, 0, 0, LocationSummary::kCall);
|
|
|