| Index: runtime/vm/intermediate_language_dbc.cc
|
| diff --git a/runtime/vm/intermediate_language_dbc.cc b/runtime/vm/intermediate_language_dbc.cc
|
| index 06c483dec102ccc091e35d5e0988ac27a1063eb0..b3f5d4a42f03966f039b5581803af68b7d615a67 100644
|
| --- a/runtime/vm/intermediate_language_dbc.cc
|
| +++ b/runtime/vm/intermediate_language_dbc.cc
|
| @@ -7,8 +7,8 @@
|
|
|
| #include "vm/intermediate_language.h"
|
|
|
| -#include "vm/cpu.h"
|
| #include "vm/compiler.h"
|
| +#include "vm/cpu.h"
|
| #include "vm/dart_entry.h"
|
| #include "vm/flow_graph.h"
|
| #include "vm/flow_graph_compiler.h"
|
| @@ -118,7 +118,6 @@ static LocationSummary* CreateLocationSummary(
|
| return locs;
|
| }
|
|
|
| -
|
| #define DEFINE_MAKE_LOCATION_SUMMARY(Name, ...) \
|
| LocationSummary* Name##Instr::MakeLocationSummary(Zone* zone, bool opt) \
|
| const { \
|
| @@ -179,11 +178,9 @@ FOR_EACH_UNREACHABLE_INSTRUCTION(DEFINE_UNREACHABLE)
|
|
|
| #undef DEFINE_UNREACHABLE
|
|
|
| -
|
| // Only used in AOT compilation.
|
| DEFINE_UNIMPLEMENTED_EMIT_BRANCH_CODE(CheckedSmiComparison)
|
|
|
| -
|
| EMIT_NATIVE_CODE(InstanceOf,
|
| 3,
|
| Location::SameAsFirstInput(),
|
| @@ -210,13 +207,11 @@ EMIT_NATIVE_CODE(InstanceOf,
|
| }
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(AssertAssignable,
|
| 3,
|
| Location::SameAsFirstInput(),
|
| LocationSummary::kCall);
|
|
|
| -
|
| EMIT_NATIVE_CODE(AssertBoolean,
|
| 1,
|
| Location::SameAsFirstInput(),
|
| @@ -233,7 +228,6 @@ EMIT_NATIVE_CODE(AssertBoolean,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(PolymorphicInstanceCall,
|
| 0,
|
| Location::RegisterLocation(0),
|
| @@ -282,12 +276,10 @@ EMIT_NATIVE_CODE(PolymorphicInstanceCall,
|
| __ PopLocal(locs()->out(0).reg());
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Stop, 0) {
|
| __ Stop(message());
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CheckStackOverflow,
|
| 0,
|
| Location::NoLocation(),
|
| @@ -302,21 +294,18 @@ EMIT_NATIVE_CODE(CheckStackOverflow,
|
| compiler->RecordAfterCall(this, FlowGraphCompiler::kNoResult);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(PushArgument, 1) {
|
| if (compiler->is_optimizing()) {
|
| __ Push(locs()->in(0).reg());
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(LoadLocal, 0) {
|
| ASSERT(!compiler->is_optimizing());
|
| ASSERT(local().index() != 0);
|
| __ Push((local().index() > 0) ? (-local().index()) : (-local().index() - 1));
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(StoreLocal, 0) {
|
| ASSERT(!compiler->is_optimizing());
|
| ASSERT(local().index() != 0);
|
| @@ -329,7 +318,6 @@ EMIT_NATIVE_CODE(StoreLocal, 0) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(LoadClassId, 1, Location::RequiresRegister()) {
|
| if (compiler->is_optimizing()) {
|
| __ LoadClassId(locs()->out(0).reg(), locs()->in(0).reg());
|
| @@ -338,7 +326,6 @@ EMIT_NATIVE_CODE(LoadClassId, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Constant, 0, Location::RequiresRegister()) {
|
| if (compiler->is_optimizing()) {
|
| if (locs()->out(0).IsRegister()) {
|
| @@ -349,7 +336,6 @@ EMIT_NATIVE_CODE(Constant, 0, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(UnboxedConstant, 0, Location::RequiresRegister()) {
|
| // The register allocator drops constant definitions that have no uses.
|
| if (locs()->out(0).IsInvalid()) {
|
| @@ -368,7 +354,6 @@ EMIT_NATIVE_CODE(UnboxedConstant, 0, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Return, 1) {
|
| if (compiler->is_optimizing()) {
|
| __ Return(locs()->in(0).reg());
|
| @@ -377,7 +362,6 @@ EMIT_NATIVE_CODE(Return, 1) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -393,7 +377,6 @@ LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (compiler->is_optimizing()) {
|
| __ LoadConstant(locs()->temp(0).reg(),
|
| @@ -407,7 +390,6 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(LoadStaticField, 1, Location::RequiresRegister()) {
|
| if (compiler->is_optimizing()) {
|
| __ LoadField(locs()->out(0).reg(), locs()->in(0).reg(),
|
| @@ -418,7 +400,6 @@ EMIT_NATIVE_CODE(LoadStaticField, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(InitStaticField,
|
| 1,
|
| Location::NoLocation(),
|
| @@ -432,7 +413,6 @@ EMIT_NATIVE_CODE(InitStaticField,
|
| compiler->RecordAfterCall(this, FlowGraphCompiler::kNoResult);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(ClosureCall,
|
| 1,
|
| Location::RegisterLocation(0),
|
| @@ -452,7 +432,6 @@ EMIT_NATIVE_CODE(ClosureCall,
|
| }
|
| }
|
|
|
| -
|
| static void EmitBranchOnCondition(FlowGraphCompiler* compiler,
|
| Condition true_condition,
|
| BranchLabels labels) {
|
| @@ -481,7 +460,6 @@ static void EmitBranchOnCondition(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| Condition StrictCompareInstr::GetNextInstructionCondition(
|
| FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| @@ -489,7 +467,6 @@ Condition StrictCompareInstr::GetNextInstructionCondition(
|
| : NEXT_IS_FALSE;
|
| }
|
|
|
| -
|
| Condition StrictCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| ASSERT((kind() == Token::kNE_STRICT) || (kind() == Token::kEQ_STRICT));
|
| @@ -532,14 +509,12 @@ Condition StrictCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return condition;
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(StrictCompare,
|
| 2,
|
| Location::RequiresRegister(),
|
| needs_number_check() ? LocationSummary::kCall
|
| : LocationSummary::kNoCall)
|
|
|
| -
|
| void ComparisonInstr::EmitBranchCode(FlowGraphCompiler* compiler,
|
| BranchInstr* branch) {
|
| BranchLabels labels = compiler->CreateBranchLabels(branch);
|
| @@ -549,7 +524,6 @@ void ComparisonInstr::EmitBranchCode(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| void ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label is_true, is_false;
|
| BranchLabels labels = {&is_true, &is_false, &is_false};
|
| @@ -598,7 +572,6 @@ void ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BranchInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| comparison()->InitializeLocationSummary(zone, opt);
|
| if (!comparison()->HasLocs()) {
|
| @@ -609,12 +582,10 @@ LocationSummary* BranchInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return comparison()->locs();
|
| }
|
|
|
| -
|
| void BranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| comparison()->EmitBranchCode(compiler, this);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Goto, 0) {
|
| if (!compiler->is_optimizing()) {
|
| // Add a deoptimization descriptor for deoptimizing instructions that
|
| @@ -632,14 +603,12 @@ EMIT_NATIVE_CODE(Goto, 0) {
|
| }
|
| }
|
|
|
| -
|
| Condition TestSmiInstr::GetNextInstructionCondition(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| ASSERT((kind() == Token::kEQ) || (kind() == Token::kNE));
|
| return (kind() == Token::kEQ) ? NEXT_IS_TRUE : NEXT_IS_FALSE;
|
| }
|
|
|
| -
|
| Condition TestSmiInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| ASSERT((kind() == Token::kEQ) || (kind() == Token::kNE));
|
| @@ -649,13 +618,11 @@ Condition TestSmiInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return (kind() == Token::kEQ) ? NEXT_IS_TRUE : NEXT_IS_FALSE;
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(TestSmi,
|
| 2,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall)
|
|
|
| -
|
| Condition TestCidsInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| ASSERT((kind() == Token::kIS) || (kind() == Token::kISNOT));
|
| @@ -689,20 +656,17 @@ Condition TestCidsInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return NEXT_IS_TRUE;
|
| }
|
|
|
| -
|
| Condition TestCidsInstr::GetNextInstructionCondition(
|
| FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| return NEXT_IS_TRUE;
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(TestCids,
|
| 1,
|
| Location::RequiresRegister(),
|
| LocationSummary::kNoCall)
|
|
|
| -
|
| EMIT_NATIVE_CODE(CreateArray,
|
| 2,
|
| Location::RequiresRegister(),
|
| @@ -723,7 +687,6 @@ EMIT_NATIVE_CODE(CreateArray,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(StoreIndexed,
|
| 3,
|
| Location::NoLocation(),
|
| @@ -806,7 +769,6 @@ EMIT_NATIVE_CODE(StoreIndexed,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(LoadIndexed,
|
| 2,
|
| Location::RequiresRegister(),
|
| @@ -919,7 +881,6 @@ EMIT_NATIVE_CODE(LoadIndexed,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(StringInterpolate,
|
| 1,
|
| Location::RegisterLocation(0),
|
| @@ -947,7 +908,6 @@ EMIT_NATIVE_CODE(StringInterpolate,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(NativeCall,
|
| 0,
|
| Location::NoLocation(),
|
| @@ -976,7 +936,6 @@ EMIT_NATIVE_CODE(NativeCall,
|
| token_pos());
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(OneByteStringFromCharCode,
|
| 1,
|
| Location::RequiresRegister(),
|
| @@ -987,7 +946,6 @@ EMIT_NATIVE_CODE(OneByteStringFromCharCode,
|
| __ OneByteStringFromCharCode(result, char_code);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(StringToCharCode,
|
| 1,
|
| Location::RequiresRegister(),
|
| @@ -998,7 +956,6 @@ EMIT_NATIVE_CODE(StringToCharCode,
|
| __ StringToCharCode(result, str);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(AllocateObject,
|
| 0,
|
| Location::RequiresRegister(),
|
| @@ -1066,7 +1023,6 @@ EMIT_NATIVE_CODE(AllocateObject,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(StoreInstanceField, 2) {
|
| ASSERT(!HasTemp());
|
| ASSERT(offset_in_bytes() % kWordSize == 0);
|
| @@ -1084,7 +1040,6 @@ EMIT_NATIVE_CODE(StoreInstanceField, 2) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(LoadField, 1, Location::RequiresRegister()) {
|
| ASSERT(offset_in_bytes() % kWordSize == 0);
|
| if (compiler->is_optimizing()) {
|
| @@ -1101,7 +1056,6 @@ EMIT_NATIVE_CODE(LoadField, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(LoadUntagged, 1, Location::RequiresRegister()) {
|
| const Register obj = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -1113,7 +1067,6 @@ EMIT_NATIVE_CODE(LoadUntagged, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(BooleanNegate, 1, Location::RequiresRegister()) {
|
| if (compiler->is_optimizing()) {
|
| __ BooleanNegate(locs()->out(0).reg(), locs()->in(0).reg());
|
| @@ -1122,7 +1075,6 @@ EMIT_NATIVE_CODE(BooleanNegate, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(AllocateContext,
|
| 0,
|
| Location::RequiresRegister(),
|
| @@ -1134,7 +1086,6 @@ EMIT_NATIVE_CODE(AllocateContext,
|
| token_pos());
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(AllocateUninitializedContext,
|
| 0,
|
| Location::RequiresRegister(),
|
| @@ -1149,7 +1100,6 @@ EMIT_NATIVE_CODE(AllocateUninitializedContext,
|
| __ PopLocal(locs()->out(0).reg());
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CloneContext,
|
| 1,
|
| Location::RequiresRegister(),
|
| @@ -1166,7 +1116,6 @@ EMIT_NATIVE_CODE(CloneContext,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CatchBlockEntry, 0) {
|
| __ Bind(compiler->GetJumpLabel(this));
|
| compiler->AddExceptionHandler(catch_try_index(), try_index(),
|
| @@ -1250,7 +1199,6 @@ EMIT_NATIVE_CODE(CatchBlockEntry, 0) {
|
| __ SetFrame(compiler->StackSize());
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Throw, 0, Location::NoLocation(), LocationSummary::kCall) {
|
| __ Throw(0);
|
| compiler->AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id(),
|
| @@ -1259,7 +1207,6 @@ EMIT_NATIVE_CODE(Throw, 0, Location::NoLocation(), LocationSummary::kCall) {
|
| __ Trap();
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(ReThrow, 0, Location::NoLocation(), LocationSummary::kCall) {
|
| compiler->SetNeedsStackTrace(catch_try_index());
|
| __ Throw(1);
|
| @@ -1305,20 +1252,17 @@ EMIT_NATIVE_CODE(InstantiateTypeArguments,
|
| }
|
| }
|
|
|
| -
|
| void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ DebugStep();
|
| compiler->AddCurrentDescriptor(stub_kind_, deopt_id_, token_pos());
|
| }
|
|
|
| -
|
| void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (!compiler->CanFallThroughTo(normal_entry())) {
|
| __ Jump(compiler->GetJumpLabel(normal_entry()));
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Instruction::MakeCallSummary(Zone* zone) {
|
| LocationSummary* result =
|
| new (zone) LocationSummary(zone, 0, 0, LocationSummary::kCall);
|
| @@ -1328,22 +1272,18 @@ LocationSummary* Instruction::MakeCallSummary(Zone* zone) {
|
| return result;
|
| }
|
|
|
| -
|
| CompileType BinaryUint32OpInstr::ComputeType() const {
|
| return CompileType::Int();
|
| }
|
|
|
| -
|
| CompileType ShiftUint32OpInstr::ComputeType() const {
|
| return CompileType::Int();
|
| }
|
|
|
| -
|
| CompileType UnaryUint32OpInstr::ComputeType() const {
|
| return CompileType::Int();
|
| }
|
|
|
| -
|
| CompileType LoadIndexedInstr::ComputeType() const {
|
| switch (class_id_) {
|
| case kArrayCid:
|
| @@ -1383,7 +1323,6 @@ CompileType LoadIndexedInstr::ComputeType() const {
|
| }
|
| }
|
|
|
| -
|
| Representation LoadIndexedInstr::representation() const {
|
| switch (class_id_) {
|
| case kArrayCid:
|
| @@ -1419,7 +1358,6 @@ Representation LoadIndexedInstr::representation() const {
|
| }
|
| }
|
|
|
| -
|
| Representation StoreIndexedInstr::RequiredInputRepresentation(
|
| intptr_t idx) const {
|
| // Array can be a Dart object or a pointer to external data.
|
| @@ -1463,7 +1401,6 @@ Representation StoreIndexedInstr::RequiredInputRepresentation(
|
| }
|
| }
|
|
|
| -
|
| void Environment::DropArguments(intptr_t argc) {
|
| #if defined(DEBUG)
|
| // Check that we are in the backend - register allocation has been run.
|
| @@ -1476,14 +1413,12 @@ void Environment::DropArguments(intptr_t argc) {
|
| values_.TruncateTo(values_.length() - argc);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CheckSmi, 1) {
|
| __ CheckSmi(locs()->in(0).reg());
|
| compiler->EmitDeopt(deopt_id(), ICData::kDeoptCheckSmi,
|
| licm_hoisted_ ? ICData::kHoisted : 0);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CheckEitherNonSmi, 2) {
|
| const Register left = locs()->in(0).reg();
|
| const Register right = locs()->in(1).reg();
|
| @@ -1492,7 +1427,6 @@ EMIT_NATIVE_CODE(CheckEitherNonSmi, 2) {
|
| licm_hoisted_ ? ICData::kHoisted : 0);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CheckClassId, 1) {
|
| if (cids_.IsSingleCid()) {
|
| __ CheckClassId(locs()->in(0).reg(),
|
| @@ -1505,7 +1439,6 @@ EMIT_NATIVE_CODE(CheckClassId, 1) {
|
| compiler->EmitDeopt(deopt_id(), ICData::kDeoptCheckClass);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(CheckClass, 1) {
|
| const Register value = locs()->in(0).reg();
|
| if (IsNullCheck()) {
|
| @@ -1570,7 +1503,6 @@ EMIT_NATIVE_CODE(CheckClass, 1) {
|
| licm_hoisted_ ? ICData::kHoisted : 0);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(BinarySmiOp, 2, Location::RequiresRegister()) {
|
| const Register left = locs()->in(0).reg();
|
| const Register right = locs()->in(1).reg();
|
| @@ -1628,7 +1560,6 @@ EMIT_NATIVE_CODE(BinarySmiOp, 2, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(UnarySmiOp, 1, Location::RequiresRegister()) {
|
| switch (op_kind()) {
|
| case Token::kNEGATE: {
|
| @@ -1645,7 +1576,6 @@ EMIT_NATIVE_CODE(UnarySmiOp, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Box, 1, Location::RequiresRegister(), LocationSummary::kCall) {
|
| ASSERT(from_representation() == kUnboxedDouble);
|
| const Register value = locs()->in(0).reg();
|
| @@ -1672,7 +1602,6 @@ EMIT_NATIVE_CODE(Box, 1, Location::RequiresRegister(), LocationSummary::kCall) {
|
| __ WriteIntoDouble(out, value);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(Unbox, 1, Location::RequiresRegister()) {
|
| ASSERT(representation() == kUnboxedDouble);
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| @@ -1694,7 +1623,6 @@ EMIT_NATIVE_CODE(Unbox, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(UnboxInteger32, 1, Location::RequiresRegister()) {
|
| #if defined(ARCH_IS_64_BIT)
|
| const Register out = locs()->out(0).reg();
|
| @@ -1712,7 +1640,6 @@ EMIT_NATIVE_CODE(UnboxInteger32, 1, Location::RequiresRegister()) {
|
| #endif // defined(ARCH_IS_64_BIT)
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(BoxInteger32, 1, Location::RequiresRegister()) {
|
| #if defined(ARCH_IS_64_BIT)
|
| const Register out = locs()->out(0).reg();
|
| @@ -1729,7 +1656,6 @@ EMIT_NATIVE_CODE(BoxInteger32, 1, Location::RequiresRegister()) {
|
| #endif // defined(ARCH_IS_64_BIT)
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(DoubleToSmi, 1, Location::RequiresRegister()) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -1737,14 +1663,12 @@ EMIT_NATIVE_CODE(DoubleToSmi, 1, Location::RequiresRegister()) {
|
| compiler->EmitDeopt(deopt_id(), ICData::kDeoptDoubleToSmi);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(SmiToDouble, 1, Location::RequiresRegister()) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| __ SmiToDouble(result, value);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(BinaryDoubleOp, 2, Location::RequiresRegister()) {
|
| const Register left = locs()->in(0).reg();
|
| const Register right = locs()->in(1).reg();
|
| @@ -1767,7 +1691,6 @@ EMIT_NATIVE_CODE(BinaryDoubleOp, 2, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| Condition DoubleTestOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| ASSERT(compiler->is_optimizing());
|
| @@ -1786,7 +1709,6 @@ Condition DoubleTestOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return is_negated ? NEXT_IS_FALSE : NEXT_IS_TRUE;
|
| }
|
|
|
| -
|
| Condition DoubleTestOpInstr::GetNextInstructionCondition(
|
| FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| @@ -1794,17 +1716,14 @@ Condition DoubleTestOpInstr::GetNextInstructionCondition(
|
| return is_negated ? NEXT_IS_FALSE : NEXT_IS_TRUE;
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(DoubleTestOp, 1, Location::RequiresRegister())
|
|
|
| -
|
| EMIT_NATIVE_CODE(UnaryDoubleOp, 1, Location::RequiresRegister()) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| __ DNeg(result, value);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(MathUnary, 1, Location::RequiresRegister()) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -1818,7 +1737,6 @@ EMIT_NATIVE_CODE(MathUnary, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(DoubleToDouble, 1, Location::RequiresRegister()) {
|
| const Register in = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -1837,21 +1755,18 @@ EMIT_NATIVE_CODE(DoubleToDouble, 1, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(DoubleToFloat, 1, Location::RequiresRegister()) {
|
| const Register in = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| __ DoubleToFloat(result, in);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(FloatToDouble, 1, Location::RequiresRegister()) {
|
| const Register in = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| __ FloatToDouble(result, in);
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(InvokeMathCFunction,
|
| InputCount(),
|
| Location::RequiresRegister()) {
|
| @@ -1873,7 +1788,6 @@ EMIT_NATIVE_CODE(InvokeMathCFunction,
|
| }
|
| }
|
|
|
| -
|
| EMIT_NATIVE_CODE(MathMinMax, 2, Location::RequiresRegister()) {
|
| ASSERT((op_kind() == MethodRecognizer::kMathMin) ||
|
| (op_kind() == MethodRecognizer::kMathMax));
|
| @@ -1896,7 +1810,6 @@ EMIT_NATIVE_CODE(MathMinMax, 2, Location::RequiresRegister()) {
|
| }
|
| }
|
|
|
| -
|
| static Token::Kind FlipCondition(Token::Kind kind) {
|
| switch (kind) {
|
| case Token::kEQ:
|
| @@ -1917,7 +1830,6 @@ static Token::Kind FlipCondition(Token::Kind kind) {
|
| }
|
| }
|
|
|
| -
|
| static Bytecode::Opcode OpcodeForSmiCondition(Token::Kind kind) {
|
| switch (kind) {
|
| case Token::kEQ:
|
| @@ -1938,7 +1850,6 @@ static Bytecode::Opcode OpcodeForSmiCondition(Token::Kind kind) {
|
| }
|
| }
|
|
|
| -
|
| static Bytecode::Opcode OpcodeForDoubleCondition(Token::Kind kind) {
|
| switch (kind) {
|
| case Token::kEQ:
|
| @@ -1959,7 +1870,6 @@ static Bytecode::Opcode OpcodeForDoubleCondition(Token::Kind kind) {
|
| }
|
| }
|
|
|
| -
|
| static Condition EmitSmiComparisonOp(FlowGraphCompiler* compiler,
|
| LocationSummary* locs,
|
| Token::Kind kind,
|
| @@ -1981,7 +1891,6 @@ static Condition EmitSmiComparisonOp(FlowGraphCompiler* compiler,
|
| return condition;
|
| }
|
|
|
| -
|
| static Condition EmitDoubleComparisonOp(FlowGraphCompiler* compiler,
|
| LocationSummary* locs,
|
| Token::Kind kind) {
|
| @@ -1998,7 +1907,6 @@ static Condition EmitDoubleComparisonOp(FlowGraphCompiler* compiler,
|
| return condition;
|
| }
|
|
|
| -
|
| Condition EqualityCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| if (operation_cid() == kSmiCid) {
|
| @@ -2009,7 +1917,6 @@ Condition EqualityCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| Condition EqualityCompareInstr::GetNextInstructionCondition(
|
| FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| @@ -2022,10 +1929,8 @@ Condition EqualityCompareInstr::GetNextInstructionCondition(
|
| }
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(EqualityCompare, 2, Location::RequiresRegister());
|
|
|
| -
|
| Condition RelationalOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| if (operation_cid() == kSmiCid) {
|
| @@ -2036,7 +1941,6 @@ Condition RelationalOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| Condition RelationalOpInstr::GetNextInstructionCondition(
|
| FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| @@ -2049,10 +1953,8 @@ Condition RelationalOpInstr::GetNextInstructionCondition(
|
| }
|
| }
|
|
|
| -
|
| DEFINE_MAKE_LOCATION_SUMMARY(RelationalOp, 2, Location::RequiresRegister())
|
|
|
| -
|
| EMIT_NATIVE_CODE(CheckArrayBound, 2) {
|
| const Register length = locs()->in(kLengthPos).reg();
|
| const Register index = locs()->in(kIndexPos).reg();
|
|
|