| Index: runtime/vm/intermediate_language_arm.cc
|
| diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
|
| index 995c1cd866cb947eb2d25850a61dac94d9bcb201..b3d0f06a48c1c73008501722490ce2f01751ceb8 100644
|
| --- a/runtime/vm/intermediate_language_arm.cc
|
| +++ b/runtime/vm/intermediate_language_arm.cc
|
| @@ -36,7 +36,6 @@ LocationSummary* Instruction::MakeCallSummary(Zone* zone) {
|
| return result;
|
| }
|
|
|
| -
|
| LocationSummary* PushArgumentInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -47,7 +46,6 @@ LocationSummary* PushArgumentInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void PushArgumentInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // In SSA mode, we need an explicit push. Nothing to do in non-SSA mode
|
| // where PushArgument is handled by BindInstr::EmitNativeCode.
|
| @@ -66,7 +64,6 @@ void PushArgumentInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* ReturnInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 0;
|
| @@ -76,7 +73,6 @@ LocationSummary* ReturnInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return locs;
|
| }
|
|
|
| -
|
| // Attempt optimized compilation at return instruction instead of at the entry.
|
| // The entry needs to be patchable, no inlined objects are allowed in the area
|
| // that will be overwritten by the patch instructions: a branch macro sequence.
|
| @@ -110,7 +106,6 @@ void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ set_constant_pool_allowed(true);
|
| }
|
|
|
| -
|
| static Condition NegateCondition(Condition condition) {
|
| switch (condition) {
|
| case EQ:
|
| @@ -143,21 +138,18 @@ static Condition NegateCondition(Condition condition) {
|
| }
|
| }
|
|
|
| -
|
| // Detect pattern when one value is zero and another is a power of 2.
|
| static bool IsPowerOfTwoKind(intptr_t v1, intptr_t v2) {
|
| return (Utils::IsPowerOfTwo(v1) && (v2 == 0)) ||
|
| (Utils::IsPowerOfTwo(v2) && (v1 == 0));
|
| }
|
|
|
| -
|
| LocationSummary* IfThenElseInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| comparison()->InitializeLocationSummary(zone, opt);
|
| return comparison()->locs();
|
| }
|
|
|
| -
|
| void IfThenElseInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register result = locs()->out(0).reg();
|
|
|
| @@ -212,7 +204,6 @@ void IfThenElseInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* ClosureCallInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -224,7 +215,6 @@ LocationSummary* ClosureCallInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // Load arguments descriptor in R4.
|
| const intptr_t argument_count = ArgumentCount(); // Includes type args.
|
| @@ -258,27 +248,23 @@ void ClosureCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Drop(argument_count);
|
| }
|
|
|
| -
|
| LocationSummary* LoadLocalInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| return LocationSummary::Make(zone, 0, Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void LoadLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register result = locs()->out(0).reg();
|
| __ LoadFromOffset(kWord, result, FP, local().index() * kWordSize);
|
| }
|
|
|
| -
|
| LocationSummary* StoreLocalInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| return LocationSummary::Make(zone, 1, Location::SameAsFirstInput(),
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void StoreLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -286,14 +272,12 @@ void StoreLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ StoreToOffset(kWord, value, FP, local().index() * kWordSize);
|
| }
|
|
|
| -
|
| LocationSummary* ConstantInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| return LocationSummary::Make(zone, 0, Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void ConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The register allocator drops constant definitions that have no uses.
|
| if (!locs()->out(0).IsInvalid()) {
|
| @@ -302,7 +286,6 @@ void ConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| @@ -321,7 +304,6 @@ LocationSummary* UnboxedConstantInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void UnboxedConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The register allocator drops constant definitions that have no uses.
|
| if (!locs()->out(0).IsInvalid()) {
|
| @@ -347,7 +329,6 @@ void UnboxedConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* AssertAssignableInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| @@ -361,7 +342,6 @@ LocationSummary* AssertAssignableInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| LocationSummary* AssertBooleanInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -373,7 +353,6 @@ LocationSummary* AssertBooleanInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| static void EmitAssertBoolean(Register reg,
|
| TokenPosition token_pos,
|
| intptr_t deopt_id,
|
| @@ -403,7 +382,6 @@ static void EmitAssertBoolean(Register reg,
|
| __ Bind(&done);
|
| }
|
|
|
| -
|
| void AssertBooleanInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register obj = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -412,7 +390,6 @@ void AssertBooleanInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(obj == result);
|
| }
|
|
|
| -
|
| static Condition TokenKindToSmiCondition(Token::Kind kind) {
|
| switch (kind) {
|
| case Token::kEQ:
|
| @@ -433,7 +410,6 @@ static Condition TokenKindToSmiCondition(Token::Kind kind) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* EqualityCompareInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -474,7 +450,6 @@ LocationSummary* EqualityCompareInstr::MakeLocationSummary(Zone* zone,
|
| return NULL;
|
| }
|
|
|
| -
|
| static void LoadValueCid(FlowGraphCompiler* compiler,
|
| Register value_cid_reg,
|
| Register value_reg,
|
| @@ -491,7 +466,6 @@ static void LoadValueCid(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| static Condition FlipCondition(Condition condition) {
|
| switch (condition) {
|
| case EQ:
|
| @@ -520,7 +494,6 @@ static Condition FlipCondition(Condition condition) {
|
| }
|
| }
|
|
|
| -
|
| static void EmitBranchOnCondition(FlowGraphCompiler* compiler,
|
| Condition true_condition,
|
| BranchLabels labels) {
|
| @@ -539,7 +512,6 @@ static void EmitBranchOnCondition(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| static Condition EmitSmiComparisonOp(FlowGraphCompiler* compiler,
|
| LocationSummary* locs,
|
| Token::Kind kind) {
|
| @@ -560,7 +532,6 @@ static Condition EmitSmiComparisonOp(FlowGraphCompiler* compiler,
|
| return true_condition;
|
| }
|
|
|
| -
|
| static Condition TokenKindToMintCondition(Token::Kind kind) {
|
| switch (kind) {
|
| case Token::kEQ:
|
| @@ -581,7 +552,6 @@ static Condition TokenKindToMintCondition(Token::Kind kind) {
|
| }
|
| }
|
|
|
| -
|
| static Condition EmitUnboxedMintEqualityOp(FlowGraphCompiler* compiler,
|
| LocationSummary* locs,
|
| Token::Kind kind) {
|
| @@ -600,7 +570,6 @@ static Condition EmitUnboxedMintEqualityOp(FlowGraphCompiler* compiler,
|
| return TokenKindToMintCondition(kind);
|
| }
|
|
|
| -
|
| static Condition EmitUnboxedMintComparisonOp(FlowGraphCompiler* compiler,
|
| LocationSummary* locs,
|
| Token::Kind kind,
|
| @@ -645,7 +614,6 @@ static Condition EmitUnboxedMintComparisonOp(FlowGraphCompiler* compiler,
|
| return lo_cond;
|
| }
|
|
|
| -
|
| static Condition TokenKindToDoubleCondition(Token::Kind kind) {
|
| switch (kind) {
|
| case Token::kEQ:
|
| @@ -666,7 +634,6 @@ static Condition TokenKindToDoubleCondition(Token::Kind kind) {
|
| }
|
| }
|
|
|
| -
|
| static Condition EmitDoubleComparisonOp(FlowGraphCompiler* compiler,
|
| LocationSummary* locs,
|
| BranchLabels labels,
|
| @@ -686,7 +653,6 @@ static Condition EmitDoubleComparisonOp(FlowGraphCompiler* compiler,
|
| return true_condition;
|
| }
|
|
|
| -
|
| Condition EqualityCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| if (operation_cid() == kSmiCid) {
|
| @@ -699,7 +665,6 @@ Condition EqualityCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* TestSmiInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| const intptr_t kNumTemps = 0;
|
| @@ -712,7 +677,6 @@ LocationSummary* TestSmiInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return locs;
|
| }
|
|
|
| -
|
| Condition TestSmiInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| const Register left = locs()->in(0).reg();
|
| @@ -728,7 +692,6 @@ Condition TestSmiInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return true_condition;
|
| }
|
|
|
| -
|
| LocationSummary* TestCidsInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -741,18 +704,16 @@ LocationSummary* TestCidsInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| Condition TestCidsInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| ASSERT((kind() == Token::kIS) || (kind() == Token::kISNOT));
|
| const Register val_reg = locs()->in(0).reg();
|
| const Register cid_reg = locs()->temp(0).reg();
|
|
|
| - Label* deopt =
|
| - CanDeoptimize()
|
| - ? compiler->AddDeoptStub(deopt_id(), ICData::kDeoptTestCids,
|
| - licm_hoisted_ ? ICData::kHoisted : 0)
|
| - : NULL;
|
| + Label* deopt = CanDeoptimize() ? compiler->AddDeoptStub(
|
| + deopt_id(), ICData::kDeoptTestCids,
|
| + licm_hoisted_ ? ICData::kHoisted : 0)
|
| + : NULL;
|
|
|
| const intptr_t true_result = (kind() == Token::kIS) ? 1 : 0;
|
| const ZoneGrowableArray<intptr_t>& data = cid_results();
|
| @@ -786,7 +747,6 @@ Condition TestCidsInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return kInvalidCondition;
|
| }
|
|
|
| -
|
| LocationSummary* RelationalOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -823,7 +783,6 @@ LocationSummary* RelationalOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| Condition RelationalOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| if (operation_cid() == kSmiCid) {
|
| @@ -836,13 +795,11 @@ Condition RelationalOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* NativeCallInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| return MakeCallSummary(zone);
|
| }
|
|
|
| -
|
| void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| SetupNative();
|
| const Register result = locs()->out(0).reg();
|
| @@ -898,7 +855,6 @@ void NativeCallInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Pop(result);
|
| }
|
|
|
| -
|
| LocationSummary* OneByteStringFromCharCodeInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -908,7 +864,6 @@ LocationSummary* OneByteStringFromCharCodeInstr::MakeLocationSummary(
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void OneByteStringFromCharCodeInstr::EmitNativeCode(
|
| FlowGraphCompiler* compiler) {
|
| ASSERT(compiler->is_optimizing());
|
| @@ -920,7 +875,6 @@ void OneByteStringFromCharCodeInstr::EmitNativeCode(
|
| __ ldr(result, Address(result, char_code, LSL, 1)); // Char code is a smi.
|
| }
|
|
|
| -
|
| LocationSummary* StringToCharCodeInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -928,7 +882,6 @@ LocationSummary* StringToCharCodeInstr::MakeLocationSummary(Zone* zone,
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(cid_ == kOneByteStringCid);
|
| const Register str = locs()->in(0).reg();
|
| @@ -940,7 +893,6 @@ void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ SmiTag(result);
|
| }
|
|
|
| -
|
| LocationSummary* StringInterpolateInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -952,7 +904,6 @@ LocationSummary* StringInterpolateInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void StringInterpolateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register array = locs()->in(0).reg();
|
| __ Push(array);
|
| @@ -965,7 +916,6 @@ void StringInterpolateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->out(0).reg() == R0);
|
| }
|
|
|
| -
|
| LocationSummary* LoadUntaggedInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -973,7 +923,6 @@ LocationSummary* LoadUntaggedInstr::MakeLocationSummary(Zone* zone,
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void LoadUntaggedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register obj = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -985,7 +934,6 @@ void LoadUntaggedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* LoadClassIdInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -993,7 +941,6 @@ LocationSummary* LoadClassIdInstr::MakeLocationSummary(Zone* zone,
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void LoadClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register object = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -1007,7 +954,6 @@ void LoadClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| CompileType LoadIndexedInstr::ComputeType() const {
|
| switch (class_id_) {
|
| case kArrayCid:
|
| @@ -1047,7 +993,6 @@ CompileType LoadIndexedInstr::ComputeType() const {
|
| }
|
| }
|
|
|
| -
|
| Representation LoadIndexedInstr::representation() const {
|
| switch (class_id_) {
|
| case kArrayCid:
|
| @@ -1083,7 +1028,6 @@ Representation LoadIndexedInstr::representation() const {
|
| }
|
| }
|
|
|
| -
|
| static bool CanBeImmediateIndex(Value* value,
|
| intptr_t cid,
|
| bool is_external,
|
| @@ -1121,7 +1065,6 @@ static bool CanBeImmediateIndex(Value* value,
|
| return false;
|
| }
|
|
|
| -
|
| LocationSummary* LoadIndexedInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -1175,7 +1118,6 @@ LocationSummary* LoadIndexedInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The array register points to the backing store for external arrays.
|
| const Register array = locs()->in(0).reg();
|
| @@ -1326,7 +1268,6 @@ void LoadIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| Representation StoreIndexedInstr::RequiredInputRepresentation(
|
| intptr_t idx) const {
|
| // Array can be a Dart object or a pointer to external data.
|
| @@ -1363,7 +1304,6 @@ Representation StoreIndexedInstr::RequiredInputRepresentation(
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* StoreIndexedInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| @@ -1435,7 +1375,6 @@ LocationSummary* StoreIndexedInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The array register points to the backing store for external arrays.
|
| const Register array = locs()->in(0).reg();
|
| @@ -1587,7 +1526,6 @@ void StoreIndexedInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* GuardFieldClassInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -1621,7 +1559,6 @@ LocationSummary* GuardFieldClassInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void GuardFieldClassInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(sizeof(classid_t) == kInt16Size);
|
|
|
| @@ -1763,7 +1700,6 @@ void GuardFieldClassInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&ok);
|
| }
|
|
|
| -
|
| LocationSummary* GuardFieldLengthInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -1790,7 +1726,6 @@ LocationSummary* GuardFieldLengthInstr::MakeLocationSummary(Zone* zone,
|
| UNREACHABLE();
|
| }
|
|
|
| -
|
| void GuardFieldLengthInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (field().guarded_list_length() == Field::kNoFixedLength) {
|
| if (Compiler::IsBackgroundCompilation()) {
|
| @@ -1866,7 +1801,6 @@ void GuardFieldLengthInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| class BoxAllocationSlowPath : public SlowPathCode {
|
| public:
|
| BoxAllocationSlowPath(Instruction* instruction,
|
| @@ -1920,7 +1854,6 @@ class BoxAllocationSlowPath : public SlowPathCode {
|
| const Register result_;
|
| };
|
|
|
| -
|
| LocationSummary* LoadCodeUnitsInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const bool might_box = (representation() == kTagged) && !can_pack_into_smi();
|
| @@ -1947,7 +1880,6 @@ LocationSummary* LoadCodeUnitsInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void LoadCodeUnitsInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The string register points to the backing store for external strings.
|
| const Register str = locs()->in(0).reg();
|
| @@ -2044,7 +1976,6 @@ void LoadCodeUnitsInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -2077,7 +2008,6 @@ LocationSummary* StoreInstanceFieldInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| static void EnsureMutableBox(FlowGraphCompiler* compiler,
|
| StoreInstanceFieldInstr* instruction,
|
| Register box_reg,
|
| @@ -2097,7 +2027,6 @@ static void EnsureMutableBox(FlowGraphCompiler* compiler,
|
| __ Bind(&done);
|
| }
|
|
|
| -
|
| void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(sizeof(classid_t) == kInt16Size);
|
|
|
| @@ -2246,7 +2175,6 @@ void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&skip_store);
|
| }
|
|
|
| -
|
| LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -2258,7 +2186,6 @@ LocationSummary* LoadStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| // When the parser is building an implicit static getter for optimization,
|
| // it can generate a function body where deoptimization ids do not line up
|
| // with the unoptimized code.
|
| @@ -2270,7 +2197,6 @@ void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ LoadFieldFromOffset(kWord, result, field, Field::static_value_offset());
|
| }
|
|
|
| -
|
| LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| LocationSummary* locs =
|
| @@ -2281,7 +2207,6 @@ LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| const Register temp = locs()->temp(0).reg();
|
| @@ -2296,7 +2221,6 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* InstanceOfInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| @@ -2310,7 +2234,6 @@ LocationSummary* InstanceOfInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void InstanceOfInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->in(0).reg() == R0); // Value.
|
| ASSERT(locs()->in(1).reg() == R2); // Instantiator type arguments.
|
| @@ -2320,7 +2243,6 @@ void InstanceOfInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->out(0).reg() == R0);
|
| }
|
|
|
| -
|
| LocationSummary* CreateArrayInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -2333,7 +2255,6 @@ LocationSummary* CreateArrayInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| // Inlines array allocation for known constant values.
|
| static void InlineArrayAllocation(FlowGraphCompiler* compiler,
|
| intptr_t num_elements,
|
| @@ -2387,7 +2308,6 @@ static void InlineArrayAllocation(FlowGraphCompiler* compiler,
|
| __ b(done);
|
| }
|
|
|
| -
|
| void CreateArrayInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register kLengthReg = R2;
|
| const Register kElemTypeReg = R1;
|
| @@ -2424,7 +2344,6 @@ void CreateArrayInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->out(0).reg() == kResultReg);
|
| }
|
|
|
| -
|
| LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -2432,9 +2351,9 @@ LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone,
|
| (IsUnboxedLoad() && opt) ? 1 : ((IsPotentialUnboxedLoad()) ? 3 : 0);
|
|
|
| LocationSummary* locs = new (zone) LocationSummary(
|
| - zone, kNumInputs, kNumTemps, (opt && !IsPotentialUnboxedLoad())
|
| - ? LocationSummary::kNoCall
|
| - : LocationSummary::kCallOnSlowPath);
|
| + zone, kNumInputs, kNumTemps,
|
| + (opt && !IsPotentialUnboxedLoad()) ? LocationSummary::kNoCall
|
| + : LocationSummary::kCallOnSlowPath);
|
|
|
| locs->set_in(0, Location::RequiresRegister());
|
|
|
| @@ -2450,7 +2369,6 @@ LocationSummary* LoadFieldInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(sizeof(classid_t) == kInt16Size);
|
|
|
| @@ -2556,7 +2474,6 @@ void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&done);
|
| }
|
|
|
| -
|
| LocationSummary* InstantiateTypeInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -2569,7 +2486,6 @@ LocationSummary* InstantiateTypeInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void InstantiateTypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register instantiator_type_args_reg = locs()->in(0).reg();
|
| const Register function_type_args_reg = locs()->in(1).reg();
|
| @@ -2588,7 +2504,6 @@ void InstantiateTypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Pop(result_reg); // Pop instantiated type.
|
| }
|
|
|
| -
|
| LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -2602,7 +2517,6 @@ LocationSummary* InstantiateTypeArgumentsInstr::MakeLocationSummary(
|
| return locs;
|
| }
|
|
|
| -
|
| void InstantiateTypeArgumentsInstr::EmitNativeCode(
|
| FlowGraphCompiler* compiler) {
|
| const Register instantiator_type_args_reg = locs()->in(0).reg();
|
| @@ -2669,7 +2583,6 @@ void InstantiateTypeArgumentsInstr::EmitNativeCode(
|
| __ Bind(&type_arguments_instantiated);
|
| }
|
|
|
| -
|
| LocationSummary* AllocateUninitializedContextInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -2685,7 +2598,6 @@ LocationSummary* AllocateUninitializedContextInstr::MakeLocationSummary(
|
| return locs;
|
| }
|
|
|
| -
|
| class AllocateContextSlowPath : public SlowPathCode {
|
| public:
|
| explicit AllocateContextSlowPath(
|
| @@ -2717,7 +2629,6 @@ class AllocateContextSlowPath : public SlowPathCode {
|
| AllocateUninitializedContextInstr* instruction_;
|
| };
|
|
|
| -
|
| void AllocateUninitializedContextInstr::EmitNativeCode(
|
| FlowGraphCompiler* compiler) {
|
| Register temp0 = locs()->temp(0).reg();
|
| @@ -2740,7 +2651,6 @@ void AllocateUninitializedContextInstr::EmitNativeCode(
|
| __ Bind(slow_path->exit_label());
|
| }
|
|
|
| -
|
| LocationSummary* AllocateContextInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| @@ -2752,7 +2662,6 @@ LocationSummary* AllocateContextInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void AllocateContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->temp(0).reg() == R1);
|
| ASSERT(locs()->out(0).reg() == R0);
|
| @@ -2762,7 +2671,6 @@ void AllocateContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| RawPcDescriptors::kOther, locs());
|
| }
|
|
|
| -
|
| LocationSummary* InitStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -2774,7 +2682,6 @@ LocationSummary* InitStaticFieldInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void InitStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register field = locs()->in(0).reg();
|
| Register temp = locs()->temp(0).reg();
|
| @@ -2796,7 +2703,6 @@ void InitStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&no_call);
|
| }
|
|
|
| -
|
| LocationSummary* CloneContextInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -2808,7 +2714,6 @@ LocationSummary* CloneContextInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void CloneContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register context_value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -2821,14 +2726,12 @@ void CloneContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Pop(result); // Get result (cloned context).
|
| }
|
|
|
| -
|
| LocationSummary* CatchBlockEntryInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| UNREACHABLE();
|
| return NULL;
|
| }
|
|
|
| -
|
| void CatchBlockEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(compiler->GetJumpLabel(this));
|
| compiler->AddExceptionHandler(catch_try_index(), try_index(),
|
| @@ -2890,7 +2793,6 @@ void CatchBlockEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| @@ -2901,7 +2803,6 @@ LocationSummary* CheckStackOverflowInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| class CheckStackOverflowSlowPath : public SlowPathCode {
|
| public:
|
| explicit CheckStackOverflowSlowPath(CheckStackOverflowInstr* instruction)
|
| @@ -2949,7 +2850,6 @@ class CheckStackOverflowSlowPath : public SlowPathCode {
|
| Label osr_entry_label_;
|
| };
|
|
|
| -
|
| void CheckStackOverflowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| CheckStackOverflowSlowPath* slow_path = new CheckStackOverflowSlowPath(this);
|
| compiler->AddSlowPathCode(slow_path);
|
| @@ -2975,7 +2875,6 @@ void CheckStackOverflowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(slow_path->exit_label());
|
| }
|
|
|
| -
|
| static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| BinarySmiOpInstr* shift_left) {
|
| const LocationSummary& locs = *shift_left->locs();
|
| @@ -3068,7 +2967,6 @@ static void EmitSmiShiftLeft(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| class CheckedSmiSlowPath : public SlowPathCode {
|
| public:
|
| CheckedSmiSlowPath(CheckedSmiOpInstr* instruction, intptr_t try_index)
|
| @@ -3110,7 +3008,6 @@ class CheckedSmiSlowPath : public SlowPathCode {
|
| intptr_t try_index_;
|
| };
|
|
|
| -
|
| LocationSummary* CheckedSmiOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -3123,7 +3020,6 @@ LocationSummary* CheckedSmiOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void CheckedSmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| CheckedSmiSlowPath* slow_path =
|
| new CheckedSmiSlowPath(this, compiler->CurrentTryIndex());
|
| @@ -3205,7 +3101,6 @@ void CheckedSmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(slow_path->exit_label());
|
| }
|
|
|
| -
|
| class CheckedSmiComparisonSlowPath : public SlowPathCode {
|
| public:
|
| CheckedSmiComparisonSlowPath(CheckedSmiComparisonInstr* instruction,
|
| @@ -3264,7 +3159,6 @@ class CheckedSmiComparisonSlowPath : public SlowPathCode {
|
| bool merged_;
|
| };
|
|
|
| -
|
| LocationSummary* CheckedSmiComparisonInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -3279,14 +3173,12 @@ LocationSummary* CheckedSmiComparisonInstr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| Condition CheckedSmiComparisonInstr::EmitComparisonCode(
|
| FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| return EmitSmiComparisonOp(compiler, locs(), kind());
|
| }
|
|
|
| -
|
| #define EMIT_SMI_CHECK \
|
| Register left = locs()->in(0).reg(); \
|
| Register right = locs()->in(1).reg(); \
|
| @@ -3305,7 +3197,6 @@ Condition CheckedSmiComparisonInstr::EmitComparisonCode(
|
| } \
|
| __ b(slow_path->entry_label(), NE)
|
|
|
| -
|
| void CheckedSmiComparisonInstr::EmitBranchCode(FlowGraphCompiler* compiler,
|
| BranchInstr* branch) {
|
| BranchLabels labels = compiler->CreateBranchLabels(branch);
|
| @@ -3320,7 +3211,6 @@ void CheckedSmiComparisonInstr::EmitBranchCode(FlowGraphCompiler* compiler,
|
| __ Bind(slow_path->exit_label());
|
| }
|
|
|
| -
|
| void CheckedSmiComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| BranchLabels labels = {NULL, NULL, NULL};
|
| CheckedSmiComparisonSlowPath* slow_path = new CheckedSmiComparisonSlowPath(
|
| @@ -3337,7 +3227,6 @@ void CheckedSmiComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| #undef EMIT_SMI_CHECK
|
|
|
| -
|
| LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -3391,7 +3280,6 @@ LocationSummary* BinarySmiOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (op_kind() == Token::kSHL) {
|
| EmitSmiShiftLeft(compiler, this);
|
| @@ -3652,7 +3540,6 @@ void BinarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| static void EmitInt32ShiftLeft(FlowGraphCompiler* compiler,
|
| BinaryInt32OpInstr* shift_left) {
|
| const LocationSummary& locs = *shift_left->locs();
|
| @@ -3679,7 +3566,6 @@ static void EmitInt32ShiftLeft(FlowGraphCompiler* compiler,
|
| __ Lsl(result, left, Operand(value));
|
| }
|
|
|
| -
|
| LocationSummary* BinaryInt32OpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -3703,7 +3589,6 @@ LocationSummary* BinaryInt32OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryInt32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (op_kind() == Token::kSHL) {
|
| EmitInt32ShiftLeft(compiler, this);
|
| @@ -3856,7 +3741,6 @@ void BinaryInt32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| intptr_t left_cid = left()->Type()->ToCid();
|
| @@ -3871,7 +3755,6 @@ LocationSummary* CheckEitherNonSmiInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void CheckEitherNonSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label* deopt =
|
| compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinaryDoubleOp,
|
| @@ -3893,7 +3776,6 @@ void CheckEitherNonSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ b(deopt, EQ);
|
| }
|
|
|
| -
|
| LocationSummary* BoxInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| const intptr_t kNumTemps = 1;
|
| @@ -3905,7 +3787,6 @@ LocationSummary* BoxInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return summary;
|
| }
|
|
|
| -
|
| void BoxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register out_reg = locs()->out(0).reg();
|
| const DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg());
|
| @@ -3930,7 +3811,6 @@ void BoxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnboxInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| const bool needs_temp = CanDeoptimize();
|
| const intptr_t kNumInputs = 1;
|
| @@ -3950,7 +3830,6 @@ LocationSummary* UnboxInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return summary;
|
| }
|
|
|
| -
|
| void UnboxInstr::EmitLoadFromBox(FlowGraphCompiler* compiler) {
|
| const Register box = locs()->in(0).reg();
|
|
|
| @@ -3984,7 +3863,6 @@ void UnboxInstr::EmitLoadFromBox(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| void UnboxInstr::EmitSmiConversion(FlowGraphCompiler* compiler) {
|
| const Register box = locs()->in(0).reg();
|
|
|
| @@ -4010,7 +3888,6 @@ void UnboxInstr::EmitSmiConversion(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| void UnboxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const intptr_t box_cid = BoxCid();
|
| @@ -4049,7 +3926,6 @@ void UnboxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BoxInteger32Instr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| ASSERT((from_representation() == kUnboxedInt32) ||
|
| @@ -4068,7 +3944,6 @@ LocationSummary* BoxInteger32Instr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BoxInteger32Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| Register out = locs()->out(0).reg();
|
| @@ -4102,7 +3977,6 @@ void BoxInteger32Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BoxInt64Instr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4120,7 +3994,6 @@ LocationSummary* BoxInt64Instr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BoxInt64Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (ValueFitsSmi()) {
|
| PairLocation* value_pair = locs()->in(0).AsPairLocation();
|
| @@ -4151,7 +4024,6 @@ void BoxInt64Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&done);
|
| }
|
|
|
| -
|
| static void LoadInt32FromMint(FlowGraphCompiler* compiler,
|
| Register mint,
|
| Register result,
|
| @@ -4165,7 +4037,6 @@ static void LoadInt32FromMint(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnboxInteger32Instr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| ASSERT((representation() == kUnboxedInt32) ||
|
| @@ -4183,16 +4054,14 @@ LocationSummary* UnboxInteger32Instr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void UnboxInteger32Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t value_cid = value()->Type()->ToCid();
|
| const Register value = locs()->in(0).reg();
|
| const Register out = locs()->out(0).reg();
|
| const Register temp = CanDeoptimize() ? locs()->temp(0).reg() : kNoRegister;
|
| - Label* deopt =
|
| - CanDeoptimize()
|
| - ? compiler->AddDeoptStub(GetDeoptId(), ICData::kDeoptUnboxInteger)
|
| - : NULL;
|
| + Label* deopt = CanDeoptimize() ? compiler->AddDeoptStub(
|
| + GetDeoptId(), ICData::kDeoptUnboxInteger)
|
| + : NULL;
|
| Label* out_of_range = !is_truncating() ? deopt : NULL;
|
| ASSERT(value != out);
|
|
|
| @@ -4215,7 +4084,6 @@ void UnboxInteger32Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4228,7 +4096,6 @@ LocationSummary* BinaryDoubleOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const DRegister left = EvenDRegisterOf(locs()->in(0).fpu_reg());
|
| const DRegister right = EvenDRegisterOf(locs()->in(1).fpu_reg());
|
| @@ -4251,7 +4118,6 @@ void BinaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* DoubleTestOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4267,7 +4133,6 @@ LocationSummary* DoubleTestOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| Condition DoubleTestOpInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| const DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg());
|
| @@ -4305,7 +4170,6 @@ LocationSummary* BinaryFloat32x4OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryFloat32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -4329,7 +4193,6 @@ void BinaryFloat32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4342,7 +4205,6 @@ LocationSummary* BinaryFloat64x2OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryFloat64x2OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -4379,7 +4241,6 @@ void BinaryFloat64x2OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4392,7 +4253,6 @@ LocationSummary* Simd32x4ShuffleInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Simd32x4ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
| const QRegister result = locs()->out(0).fpu_reg();
|
| @@ -4461,7 +4321,6 @@ void Simd32x4ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4475,7 +4334,6 @@ LocationSummary* Simd32x4ShuffleMixInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Simd32x4ShuffleMixInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -4519,7 +4377,6 @@ void Simd32x4ShuffleMixInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4532,7 +4389,6 @@ LocationSummary* Simd32x4GetSignMaskInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
| const DRegister dvalue0 = EvenDRegisterOf(value);
|
| @@ -4560,7 +4416,6 @@ void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ SmiTag(out);
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -4577,7 +4432,6 @@ LocationSummary* Float32x4ConstructorInstr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q0 = locs()->in(0).fpu_reg();
|
| const QRegister q1 = locs()->in(1).fpu_reg();
|
| @@ -4594,7 +4448,6 @@ void Float32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtsd(OddSRegisterOf(dr1), EvenDRegisterOf(q3));
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| @@ -4605,13 +4458,11 @@ LocationSummary* Float32x4ZeroInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ZeroInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q = locs()->out(0).fpu_reg();
|
| __ veorq(q, q, q);
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4SplatInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4623,7 +4474,6 @@ LocationSummary* Float32x4SplatInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
| const QRegister result = locs()->out(0).fpu_reg();
|
| @@ -4637,7 +4487,6 @@ void Float32x4SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vdup(kWord, result, DTMP, 0);
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4650,7 +4499,6 @@ LocationSummary* Float32x4ComparisonInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -4683,7 +4531,6 @@ void Float32x4ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4696,7 +4543,6 @@ LocationSummary* Float32x4MinMaxInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4MinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -4714,7 +4560,6 @@ void Float32x4MinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4727,7 +4572,6 @@ LocationSummary* Float32x4SqrtInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4SqrtInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister result = locs()->out(0).fpu_reg();
|
| @@ -4748,7 +4592,6 @@ void Float32x4SqrtInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4761,7 +4604,6 @@ LocationSummary* Float32x4ScaleInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ScaleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -4778,7 +4620,6 @@ void Float32x4ScaleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4790,7 +4631,6 @@ LocationSummary* Float32x4ZeroArgInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister result = locs()->out(0).fpu_reg();
|
| @@ -4807,7 +4647,6 @@ void Float32x4ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ClampInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| @@ -4821,7 +4660,6 @@ LocationSummary* Float32x4ClampInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ClampInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister lower = locs()->in(1).fpu_reg();
|
| @@ -4831,7 +4669,6 @@ void Float32x4ClampInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vmaxqs(result, result, lower);
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4WithInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -4845,7 +4682,6 @@ LocationSummary* Float32x4WithInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister replacement = locs()->in(0).fpu_reg();
|
| const QRegister value = locs()->in(1).fpu_reg();
|
| @@ -4881,7 +4717,6 @@ void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4893,7 +4728,6 @@ LocationSummary* Float32x4ToInt32x4Instr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ToInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
| const QRegister result = locs()->out(0).fpu_reg();
|
| @@ -4903,7 +4737,6 @@ void Float32x4ToInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4915,7 +4748,6 @@ LocationSummary* Simd64x2ShuffleInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Simd64x2ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
|
|
| @@ -4938,7 +4770,6 @@ void Simd64x2ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 0;
|
| @@ -4949,13 +4780,11 @@ LocationSummary* Float64x2ZeroInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float64x2ZeroInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q = locs()->out(0).fpu_reg();
|
| __ veorq(q, q, q);
|
| }
|
|
|
| -
|
| LocationSummary* Float64x2SplatInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -4967,7 +4796,6 @@ LocationSummary* Float64x2SplatInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float64x2SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
|
|
| @@ -4983,7 +4811,6 @@ void Float64x2SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vmovd(dresult1, dvalue);
|
| }
|
|
|
| -
|
| LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -4997,7 +4824,6 @@ LocationSummary* Float64x2ConstructorInstr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| void Float64x2ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q0 = locs()->in(0).fpu_reg();
|
| const QRegister q1 = locs()->in(1).fpu_reg();
|
| @@ -5013,7 +4839,6 @@ void Float64x2ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vmovd(dr1, d1);
|
| }
|
|
|
| -
|
| LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -5027,7 +4852,6 @@ LocationSummary* Float64x2ToFloat32x4Instr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| void Float64x2ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q = locs()->in(0).fpu_reg();
|
| const QRegister r = locs()->out(0).fpu_reg();
|
| @@ -5045,7 +4869,6 @@ void Float64x2ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtsd(OddSRegisterOf(dr0), dq1);
|
| }
|
|
|
| -
|
| LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -5059,7 +4882,6 @@ LocationSummary* Float32x4ToFloat64x2Instr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| void Float32x4ToFloat64x2Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q = locs()->in(0).fpu_reg();
|
| const QRegister r = locs()->out(0).fpu_reg();
|
| @@ -5075,7 +4897,6 @@ void Float32x4ToFloat64x2Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtds(dr1, OddSRegisterOf(dq0));
|
| }
|
|
|
| -
|
| LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5095,7 +4916,6 @@ LocationSummary* Float64x2ZeroArgInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float64x2ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister q = locs()->in(0).fpu_reg();
|
|
|
| @@ -5142,7 +4962,6 @@ void Float64x2ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -5155,7 +4974,6 @@ LocationSummary* Float64x2OneArgInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Float64x2OneArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const DRegister left0 = EvenDRegisterOf(left);
|
| @@ -5216,7 +5034,6 @@ void Float64x2OneArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Int32x4ConstructorInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 4;
|
| @@ -5231,7 +5048,6 @@ LocationSummary* Int32x4ConstructorInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Int32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register v0 = locs()->in(0).reg();
|
| const Register v1 = locs()->in(1).reg();
|
| @@ -5245,7 +5061,6 @@ void Int32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vmovdrr(dresult1, v2, v3);
|
| }
|
|
|
| -
|
| LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -5262,7 +5077,6 @@ LocationSummary* Int32x4BoolConstructorInstr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register v0 = locs()->in(0).reg();
|
| const Register v1 = locs()->in(1).reg();
|
| @@ -5290,7 +5104,6 @@ void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vmovdr(dresult1, 1, temp, EQ);
|
| }
|
|
|
| -
|
| LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5303,7 +5116,6 @@ LocationSummary* Int32x4GetFlagInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -5337,7 +5149,6 @@ void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ LoadObject(result, Bool::False(), EQ);
|
| }
|
|
|
| -
|
| LocationSummary* Int32x4SelectInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 3;
|
| @@ -5352,7 +5163,6 @@ LocationSummary* Int32x4SelectInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister mask = locs()->in(0).fpu_reg();
|
| const QRegister trueValue = locs()->in(1).fpu_reg();
|
| @@ -5372,7 +5182,6 @@ void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vorrq(out, mask, temp);
|
| }
|
|
|
| -
|
| LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -5385,7 +5194,6 @@ LocationSummary* Int32x4SetFlagInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister mask = locs()->in(0).fpu_reg();
|
| const Register flag = locs()->in(1).reg();
|
| @@ -5419,7 +5227,6 @@ void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5431,7 +5238,6 @@ LocationSummary* Int32x4ToFloat32x4Instr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void Int32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister value = locs()->in(0).fpu_reg();
|
| const QRegister result = locs()->out(0).fpu_reg();
|
| @@ -5441,7 +5247,6 @@ void Int32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -5454,7 +5259,6 @@ LocationSummary* BinaryInt32x4OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const QRegister left = locs()->in(0).fpu_reg();
|
| const QRegister right = locs()->in(1).fpu_reg();
|
| @@ -5480,7 +5284,6 @@ void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* MathUnaryInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| ASSERT((kind() == MathUnaryInstr::kSqrt) ||
|
| @@ -5494,7 +5297,6 @@ LocationSummary* MathUnaryInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (kind() == MathUnaryInstr::kSqrt) {
|
| const DRegister val = EvenDRegisterOf(locs()->in(0).fpu_reg());
|
| @@ -5509,7 +5311,6 @@ void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* CaseInsensitiveCompareUC16Instr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| @@ -5524,14 +5325,12 @@ LocationSummary* CaseInsensitiveCompareUC16Instr::MakeLocationSummary(
|
| return summary;
|
| }
|
|
|
| -
|
| void CaseInsensitiveCompareUC16Instr::EmitNativeCode(
|
| FlowGraphCompiler* compiler) {
|
| // Call the function.
|
| __ CallRuntime(TargetFunction(), TargetFunction().argument_count());
|
| }
|
|
|
| -
|
| LocationSummary* MathMinMaxInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| if (result_cid() == kDoubleCid) {
|
| @@ -5558,7 +5357,6 @@ LocationSummary* MathMinMaxInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT((op_kind() == MethodRecognizer::kMathMin) ||
|
| (op_kind() == MethodRecognizer::kMathMax));
|
| @@ -5617,7 +5415,6 @@ void MathMinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5631,7 +5428,6 @@ LocationSummary* UnarySmiOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void UnarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -5652,7 +5448,6 @@ void UnarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5664,14 +5459,12 @@ LocationSummary* UnaryDoubleOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void UnaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg());
|
| const DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg());
|
| __ vnegd(result, value);
|
| }
|
|
|
| -
|
| LocationSummary* Int32ToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5683,7 +5476,6 @@ LocationSummary* Int32ToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| void Int32ToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg());
|
| @@ -5691,7 +5483,6 @@ void Int32ToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtdi(result, STMP);
|
| }
|
|
|
| -
|
| LocationSummary* SmiToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5703,7 +5494,6 @@ LocationSummary* SmiToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| void SmiToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg());
|
| @@ -5712,19 +5502,16 @@ void SmiToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtdi(result, STMP);
|
| }
|
|
|
| -
|
| LocationSummary* MintToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
|
|
| -
|
| void MintToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| UNIMPLEMENTED();
|
| }
|
|
|
| -
|
| LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5736,7 +5523,6 @@ LocationSummary* DoubleToIntegerInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| void DoubleToIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register result = locs()->out(0).reg();
|
| const Register value_obj = locs()->in(0).reg();
|
| @@ -5775,7 +5561,6 @@ void DoubleToIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&done);
|
| }
|
|
|
| -
|
| LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5787,7 +5572,6 @@ LocationSummary* DoubleToSmiInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| void DoubleToSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptDoubleToSmi);
|
| const Register result = locs()->out(0).reg();
|
| @@ -5806,19 +5590,16 @@ void DoubleToSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ SmiTag(result);
|
| }
|
|
|
| -
|
| LocationSummary* DoubleToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| UNIMPLEMENTED();
|
| return NULL;
|
| }
|
|
|
| -
|
| void DoubleToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| UNIMPLEMENTED();
|
| }
|
|
|
| -
|
| LocationSummary* DoubleToFloatInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5831,7 +5612,6 @@ LocationSummary* DoubleToFloatInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| void DoubleToFloatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg());
|
| const SRegister result =
|
| @@ -5839,7 +5619,6 @@ void DoubleToFloatInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtsd(result, value);
|
| }
|
|
|
| -
|
| LocationSummary* FloatToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -5852,7 +5631,6 @@ LocationSummary* FloatToDoubleInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| void FloatToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const SRegister value =
|
| EvenSRegisterOf(EvenDRegisterOf(locs()->in(0).fpu_reg()));
|
| @@ -5860,7 +5638,6 @@ void FloatToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ vcvtds(result, value);
|
| }
|
|
|
| -
|
| LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| ASSERT((InputCount() == 1) || (InputCount() == 2));
|
| @@ -5891,7 +5668,6 @@ LocationSummary* InvokeMathCFunctionInstr::MakeLocationSummary(Zone* zone,
|
| return result;
|
| }
|
|
|
| -
|
| // Pseudo code:
|
| // if (exponent == 0.0) return 1.0;
|
| // // Speed up simple cases.
|
| @@ -6027,7 +5803,6 @@ static void InvokeDoublePow(FlowGraphCompiler* compiler,
|
| __ Bind(&skip_call);
|
| }
|
|
|
| -
|
| void InvokeMathCFunctionInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (recognized_kind() == MethodRecognizer::kMathDoublePow) {
|
| InvokeDoublePow(compiler, this);
|
| @@ -6052,7 +5827,6 @@ void InvokeMathCFunctionInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* ExtractNthOutputInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| // Only use this instruction in optimized code.
|
| @@ -6085,7 +5859,6 @@ LocationSummary* ExtractNthOutputInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void ExtractNthOutputInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(locs()->in(0).IsPairLocation());
|
| PairLocation* pair = locs()->in(0).AsPairLocation();
|
| @@ -6102,7 +5875,6 @@ void ExtractNthOutputInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* TruncDivModInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6119,7 +5891,6 @@ LocationSummary* TruncDivModInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void TruncDivModInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(CanDeoptimize());
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinarySmiOp);
|
| @@ -6170,14 +5941,12 @@ void TruncDivModInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Bind(&done);
|
| }
|
|
|
| -
|
| LocationSummary* PolymorphicInstanceCallInstr::MakeLocationSummary(
|
| Zone* zone,
|
| bool opt) const {
|
| return MakeCallSummary(zone);
|
| }
|
|
|
| -
|
| LocationSummary* BranchInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| comparison()->InitializeLocationSummary(zone, opt);
|
| // Branches don't produce a result.
|
| @@ -6185,12 +5954,10 @@ LocationSummary* BranchInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return comparison()->locs();
|
| }
|
|
|
| -
|
| void BranchInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| comparison()->EmitBranchCode(compiler, this);
|
| }
|
|
|
| -
|
| LocationSummary* CheckClassInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6208,7 +5975,6 @@ LocationSummary* CheckClassInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void CheckClassInstr::EmitNullCheck(FlowGraphCompiler* compiler, Label* deopt) {
|
| __ CompareObject(locs()->in(0).reg(), Object::null_object());
|
| ASSERT(IsDeoptIfNull() || IsDeoptIfNotNull());
|
| @@ -6216,7 +5982,6 @@ void CheckClassInstr::EmitNullCheck(FlowGraphCompiler* compiler, Label* deopt) {
|
| __ b(deopt, cond);
|
| }
|
|
|
| -
|
| void CheckClassInstr::EmitBitTest(FlowGraphCompiler* compiler,
|
| intptr_t min,
|
| intptr_t max,
|
| @@ -6234,7 +5999,6 @@ void CheckClassInstr::EmitBitTest(FlowGraphCompiler* compiler,
|
| __ b(deopt, EQ);
|
| }
|
|
|
| -
|
| int CheckClassInstr::EmitCheckCid(FlowGraphCompiler* compiler,
|
| int bias,
|
| intptr_t cid_start,
|
| @@ -6266,7 +6030,6 @@ int CheckClassInstr::EmitCheckCid(FlowGraphCompiler* compiler,
|
| return bias;
|
| }
|
|
|
| -
|
| LocationSummary* CheckSmiInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6277,7 +6040,6 @@ LocationSummary* CheckSmiInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void CheckSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckSmi,
|
| @@ -6285,7 +6047,6 @@ void CheckSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ BranchIfNotSmi(value, deopt);
|
| }
|
|
|
| -
|
| LocationSummary* CheckClassIdInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6297,7 +6058,6 @@ LocationSummary* CheckClassIdInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void CheckClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register value = locs()->in(0).reg();
|
| Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckClass);
|
| @@ -6311,7 +6071,6 @@ void CheckClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* GenericCheckBoundInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6323,7 +6082,6 @@ LocationSummary* GenericCheckBoundInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| class RangeErrorSlowPath : public SlowPathCode {
|
| public:
|
| RangeErrorSlowPath(GenericCheckBoundInstr* instruction, intptr_t try_index)
|
| @@ -6353,7 +6111,6 @@ class RangeErrorSlowPath : public SlowPathCode {
|
| intptr_t try_index_;
|
| };
|
|
|
| -
|
| void GenericCheckBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| RangeErrorSlowPath* slow_path =
|
| new RangeErrorSlowPath(this, compiler->CurrentTryIndex());
|
| @@ -6371,7 +6128,6 @@ void GenericCheckBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ b(slow_path->entry_label(), CS);
|
| }
|
|
|
| -
|
| LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6383,7 +6139,6 @@ LocationSummary* CheckArrayBoundInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| uint32_t flags = generalized_ ? ICData::kGeneralized : 0;
|
| flags |= licm_hoisted_ ? ICData::kHoisted : 0;
|
| @@ -6433,7 +6188,6 @@ void CheckArrayBoundInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6449,7 +6203,6 @@ LocationSummary* BinaryMintOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| PairLocation* left_pair = locs()->in(0).AsPairLocation();
|
| Register left_lo = left_pair->At(0).reg();
|
| @@ -6513,7 +6266,6 @@ void BinaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6528,7 +6280,6 @@ LocationSummary* ShiftMintOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| PairLocation* left_pair = locs()->in(0).AsPairLocation();
|
| Register left_lo = left_pair->At(0).reg();
|
| @@ -6651,7 +6402,6 @@ void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6665,7 +6415,6 @@ LocationSummary* UnaryMintOpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void UnaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(op_kind() == Token::kBIT_NOT);
|
| PairLocation* left_pair = locs()->in(0).AsPairLocation();
|
| @@ -6679,22 +6428,18 @@ void UnaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ mvn(out_hi, Operand(left_hi));
|
| }
|
|
|
| -
|
| CompileType BinaryUint32OpInstr::ComputeType() const {
|
| return CompileType::Int();
|
| }
|
|
|
| -
|
| CompileType ShiftUint32OpInstr::ComputeType() const {
|
| return CompileType::Int();
|
| }
|
|
|
| -
|
| CompileType UnaryUint32OpInstr::ComputeType() const {
|
| return CompileType::Int();
|
| }
|
|
|
| -
|
| LocationSummary* BinaryUint32OpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6707,7 +6452,6 @@ LocationSummary* BinaryUint32OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void BinaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register left = locs()->in(0).reg();
|
| Register right = locs()->in(1).reg();
|
| @@ -6737,7 +6481,6 @@ void BinaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* ShiftUint32OpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -6751,7 +6494,6 @@ LocationSummary* ShiftUint32OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const intptr_t kShifterLimit = 31;
|
|
|
| @@ -6807,7 +6549,6 @@ void ShiftUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* UnaryUint32OpInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6819,7 +6560,6 @@ LocationSummary* UnaryUint32OpInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void UnaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register left = locs()->in(0).reg();
|
| Register out = locs()->out(0).reg();
|
| @@ -6830,7 +6570,6 @@ void UnaryUint32OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ mvn(out, Operand(left));
|
| }
|
|
|
| -
|
| LocationSummary* UnboxedIntConverterInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6856,7 +6595,6 @@ LocationSummary* UnboxedIntConverterInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void UnboxedIntConverterInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (from() == kUnboxedInt32 && to() == kUnboxedUint32) {
|
| const Register out = locs()->out(0).reg();
|
| @@ -6906,24 +6644,20 @@ void UnboxedIntConverterInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* ThrowInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return new (zone) LocationSummary(zone, 0, 0, LocationSummary::kCall);
|
| }
|
|
|
| -
|
| void ThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| compiler->GenerateRuntimeCall(token_pos(), deopt_id(), kThrowRuntimeEntry, 1,
|
| locs());
|
| __ bkpt(0);
|
| }
|
|
|
| -
|
| LocationSummary* ReThrowInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return new (zone) LocationSummary(zone, 0, 0, LocationSummary::kCall);
|
| }
|
|
|
| -
|
| void ReThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| compiler->SetNeedsStackTrace(catch_try_index());
|
| compiler->GenerateRuntimeCall(token_pos(), deopt_id(), kReThrowRuntimeEntry,
|
| @@ -6931,29 +6665,24 @@ void ReThrowInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ bkpt(0);
|
| }
|
|
|
| -
|
| LocationSummary* StopInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return new (zone) LocationSummary(zone, 0, 0, LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void StopInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Stop(message());
|
| }
|
|
|
| -
|
| void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (!compiler->CanFallThroughTo(normal_entry())) {
|
| __ b(compiler->GetJumpLabel(normal_entry()));
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* GotoInstr::MakeLocationSummary(Zone* zone, bool opt) const {
|
| return new (zone) LocationSummary(zone, 0, 0, LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void GotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| if (!compiler->is_optimizing()) {
|
| if (FLAG_reorder_basic_blocks) {
|
| @@ -6975,7 +6704,6 @@ void GotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* IndirectGotoInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 1;
|
| @@ -6990,7 +6718,6 @@ LocationSummary* IndirectGotoInstr::MakeLocationSummary(Zone* zone,
|
| return summary;
|
| }
|
|
|
| -
|
| void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| Register target_address_reg = locs()->temp_slot(0)->reg();
|
|
|
| @@ -7009,7 +6736,6 @@ void IndirectGotoInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ bx(target_address_reg);
|
| }
|
|
|
| -
|
| LocationSummary* StrictCompareInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| const intptr_t kNumInputs = 2;
|
| @@ -7048,7 +6774,6 @@ LocationSummary* StrictCompareInstr::MakeLocationSummary(Zone* zone,
|
| return locs;
|
| }
|
|
|
| -
|
| Condition StrictCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| BranchLabels labels) {
|
| Location left = locs()->in(0);
|
| @@ -7074,7 +6799,6 @@ Condition StrictCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
|
| return true_condition;
|
| }
|
|
|
| -
|
| void ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| // The ARM code may not use true- and false-labels here.
|
| Label is_true, is_false, done;
|
| @@ -7101,7 +6825,6 @@ void ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| }
|
| }
|
|
|
| -
|
| void ComparisonInstr::EmitBranchCode(FlowGraphCompiler* compiler,
|
| BranchInstr* branch) {
|
| BranchLabels labels = compiler->CreateBranchLabels(branch);
|
| @@ -7111,14 +6834,12 @@ void ComparisonInstr::EmitBranchCode(FlowGraphCompiler* compiler,
|
| }
|
| }
|
|
|
| -
|
| LocationSummary* BooleanNegateInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| return LocationSummary::Make(zone, 1, Location::RequiresRegister(),
|
| LocationSummary::kNoCall);
|
| }
|
|
|
| -
|
| void BooleanNegateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Register value = locs()->in(0).reg();
|
| const Register result = locs()->out(0).reg();
|
| @@ -7128,13 +6849,11 @@ void BooleanNegateInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ LoadObject(result, Bool::False(), EQ);
|
| }
|
|
|
| -
|
| LocationSummary* AllocateObjectInstr::MakeLocationSummary(Zone* zone,
|
| bool opt) const {
|
| return MakeCallSummary(zone);
|
| }
|
|
|
| -
|
| void AllocateObjectInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| const Code& stub = Code::ZoneHandle(
|
| compiler->zone(), StubCode::GetAllocationStubForClass(cls()));
|
| @@ -7145,7 +6864,6 @@ void AllocateObjectInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| __ Drop(ArgumentCount()); // Discard arguments.
|
| }
|
|
|
| -
|
| void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| ASSERT(!compiler->is_optimizing());
|
| __ BranchLinkPatchable(*StubCode::DebugStepCheck_entry());
|
| @@ -7153,7 +6871,6 @@ void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| compiler->RecordSafepoint(locs());
|
| }
|
|
|
| -
|
| } // namespace dart
|
|
|
| #endif // defined TARGET_ARCH_ARM
|
|
|