Index: runtime/vm/intermediate_language_arm.cc |
=================================================================== |
--- runtime/vm/intermediate_language_arm.cc (revision 36461) |
+++ runtime/vm/intermediate_language_arm.cc (working copy) |
@@ -78,7 +78,7 @@ |
// 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. |
void ReturnInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register result = locs()->in(0).reg(); |
+ const Register result = locs()->in(0).reg(); |
ASSERT(result == R0); |
#if defined(DEBUG) |
Label stack_ok; |
@@ -240,7 +240,7 @@ |
void LoadLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadFromOffset(kWord, result, FP, local().index() * kWordSize); |
} |
@@ -253,8 +253,8 @@ |
void StoreLocalInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register value = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register value = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
ASSERT(result == value); // Assert that register assignment is correct. |
__ str(value, Address(FP, local().index() * kWordSize)); |
} |
@@ -270,7 +270,7 @@ |
void ConstantInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
// The register allocator drops constant definitions that have no uses. |
if (!locs()->out(0).IsInvalid()) { |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadObject(result, value()); |
} |
} |
@@ -354,8 +354,8 @@ |
void AssertBooleanInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register obj = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register obj = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
EmitAssertBoolean(obj, token_pos(), deopt_id(), locs(), compiler); |
ASSERT(obj == result); |
@@ -515,11 +515,11 @@ |
LocationSummary* locs, |
Token::Kind kind) { |
ASSERT(Token::IsEqualityOperator(kind)); |
- QRegister left = locs->in(0).fpu_reg(); |
- QRegister right = locs->in(1).fpu_reg(); |
- QRegister tmpq = locs->temp(0).fpu_reg(); |
- Register tmp_lo = locs->temp(1).reg(); |
- Register tmp_hi = locs->temp(2).reg(); |
+ const QRegister left = locs->in(0).fpu_reg(); |
+ const QRegister right = locs->in(1).fpu_reg(); |
+ const QRegister tmpq = locs->temp(0).fpu_reg(); |
+ const Register tmp_lo = locs->temp(1).reg(); |
+ const Register tmp_hi = locs->temp(2).reg(); |
__ vceqqi(kWord, tmpq, left, right); |
__ vmovrrd(tmp_lo, tmp_hi, EvenDRegisterOf(tmpq)); |
@@ -535,17 +535,17 @@ |
static Condition EmitUnboxedMintComparisonOp(FlowGraphCompiler* compiler, |
LocationSummary* locs, |
Token::Kind kind) { |
- QRegister left = locs->in(0).fpu_reg(); |
- QRegister right = locs->in(1).fpu_reg(); |
- DRegister dleft0 = EvenDRegisterOf(left); |
- DRegister dright0 = EvenDRegisterOf(right); |
- SRegister sleft0 = EvenSRegisterOf(dleft0); |
- SRegister sleft1 = OddSRegisterOf(dleft0); |
- SRegister sright0 = EvenSRegisterOf(dright0); |
- SRegister sright1 = OddSRegisterOf(dright0); |
+ const QRegister left = locs->in(0).fpu_reg(); |
+ const QRegister right = locs->in(1).fpu_reg(); |
+ const DRegister dleft0 = EvenDRegisterOf(left); |
+ const DRegister dright0 = EvenDRegisterOf(right); |
+ const SRegister sleft0 = EvenSRegisterOf(dleft0); |
+ const SRegister sleft1 = OddSRegisterOf(dleft0); |
+ const SRegister sright0 = EvenSRegisterOf(dright0); |
+ const SRegister sright1 = OddSRegisterOf(dright0); |
- Register tmp_left = locs->temp(0).reg(); |
- Register tmp_right = locs->temp(1).reg(); |
+ const Register tmp_left = locs->temp(0).reg(); |
+ const Register tmp_right = locs->temp(1).reg(); |
// 64-bit comparison |
Condition hi_true_cond, hi_false_cond, lo_false_cond; |
@@ -609,10 +609,10 @@ |
static Condition EmitDoubleComparisonOp(FlowGraphCompiler* compiler, |
LocationSummary* locs, |
Token::Kind kind) { |
- QRegister left = locs->in(0).fpu_reg(); |
- QRegister right = locs->in(1).fpu_reg(); |
- DRegister dleft = EvenDRegisterOf(left); |
- DRegister dright = EvenDRegisterOf(right); |
+ const QRegister left = locs->in(0).fpu_reg(); |
+ const QRegister right = locs->in(1).fpu_reg(); |
+ const DRegister dleft = EvenDRegisterOf(left); |
+ const DRegister dright = EvenDRegisterOf(right); |
__ vcmpd(dleft, dright); |
__ vmstat(); |
Condition true_condition = TokenKindToDoubleCondition(kind); |
@@ -640,7 +640,7 @@ |
BranchLabels labels = { NULL, NULL, NULL }; |
Condition true_condition = EmitComparisonCode(compiler, labels); |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
if ((operation_cid() == kSmiCid) || (operation_cid() == kMintCid)) { |
__ LoadObject(result, Bool::True(), true_condition); |
__ LoadObject(result, Bool::False(), NegateCondition(true_condition)); |
@@ -688,7 +688,7 @@ |
Condition TestSmiInstr::EmitComparisonCode(FlowGraphCompiler* compiler, |
BranchLabels labels) { |
- Register left = locs()->in(0).reg(); |
+ const Register left = locs()->in(0).reg(); |
Location right = locs()->in(1); |
if (right.IsConstant()) { |
ASSERT(right.constant().IsSmi()); |
@@ -732,8 +732,8 @@ |
Condition TestCidsInstr::EmitComparisonCode(FlowGraphCompiler* compiler, |
BranchLabels labels) { |
ASSERT((kind() == Token::kIS) || (kind() == Token::kISNOT)); |
- Register val_reg = locs()->in(0).reg(); |
- Register cid_reg = locs()->temp(0).reg(); |
+ 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) : NULL; |
@@ -776,7 +776,7 @@ |
void TestCidsInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register result_reg = locs()->out(0).reg(); |
+ const Register result_reg = locs()->out(0).reg(); |
Label is_true, is_false, done; |
BranchLabels labels = { &is_true, &is_false, &is_false }; |
EmitComparisonCode(compiler, labels); |
@@ -843,12 +843,12 @@ |
BranchLabels labels = { NULL, NULL, NULL }; |
Condition true_condition = EmitComparisonCode(compiler, labels); |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
if (operation_cid() == kSmiCid) { |
__ LoadObject(result, Bool::True(), true_condition); |
__ LoadObject(result, Bool::False(), NegateCondition(true_condition)); |
} else if (operation_cid() == kMintCid) { |
- Register cr = locs()->temp(0).reg(); |
+ const Register cr = locs()->temp(0).reg(); |
__ LoadObject(result, Bool::True()); |
__ CompareImmediate(cr, 1); |
__ LoadObject(result, Bool::False(), NE); |
@@ -873,7 +873,7 @@ |
if (operation_cid() == kSmiCid) { |
EmitBranchOnCondition(compiler, true_condition, labels); |
} else if (operation_cid() == kMintCid) { |
- Register result = locs()->temp(0).reg(); |
+ const Register result = locs()->temp(0).reg(); |
__ CompareImmediate(result, 1); |
__ b(labels.true_label, EQ); |
__ b(labels.false_label, NE); |
@@ -903,7 +903,7 @@ |
ASSERT(locs()->temp(0).reg() == R1); |
ASSERT(locs()->temp(1).reg() == R2); |
ASSERT(locs()->temp(2).reg() == R5); |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
// Push the result place holder initialized to NULL. |
__ PushObject(Object::ZoneHandle()); |
@@ -957,8 +957,8 @@ |
void StringFromCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register char_code = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register char_code = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadImmediate(result, |
reinterpret_cast<uword>(Symbols::PredefinedAddress())); |
__ AddImmediate(result, Symbols::kNullCharCodeSymbolOffset * kWordSize); |
@@ -976,8 +976,8 @@ |
void StringToCharCodeInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
ASSERT(cid_ == kOneByteStringCid); |
- Register str = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register str = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ ldr(result, FieldAddress(str, String::length_offset())); |
__ cmp(result, ShifterOperand(Smi::RawValue(1))); |
__ LoadImmediate(result, -1, NE); |
@@ -998,7 +998,7 @@ |
void StringInterpolateInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register array = locs()->in(0).reg(); |
+ const Register array = locs()->in(0).reg(); |
__ Push(array); |
const int kNumberOfArguments = 1; |
const Array& kNoArgumentNames = Object::null_array(); |
@@ -1021,8 +1021,8 @@ |
void LoadUntaggedInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register object = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register object = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadFromOffset(kWord, result, object, offset() - kHeapObjectTag); |
} |
@@ -1036,8 +1036,8 @@ |
void LoadClassIdInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register object = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register object = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
Label load, done; |
__ tst(object, ShifterOperand(kSmiTagMask)); |
__ b(&load, NE); |
@@ -1166,8 +1166,8 @@ |
(representation() == kUnboxedFloat32x4) || |
(representation() == kUnboxedInt32x4) || |
(representation() == kUnboxedFloat64x2)) { |
- Register array = locs()->in(0).reg(); |
- Register idx = locs()->in(1).reg(); |
+ const Register array = locs()->in(0).reg(); |
+ const Register idx = locs()->in(1).reg(); |
switch (index_scale()) { |
case 1: |
__ add(idx, array, ShifterOperand(idx, ASR, kSmiTagSize)); |
@@ -1229,7 +1229,7 @@ |
return; |
} |
- Register array = locs()->in(0).reg(); |
+ const Register array = locs()->in(0).reg(); |
Location index = locs()->in(1); |
ASSERT(index.IsRegister()); // TODO(regis): Revisit. |
Address element_address(kNoRegister, 0); |
@@ -1267,7 +1267,7 @@ |
UNREACHABLE(); |
} |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
switch (class_id()) { |
case kTypedDataInt8ArrayCid: |
ASSERT(index_scale() == 1); |
@@ -1414,8 +1414,8 @@ |
(class_id() == kTypedDataFloat32x4ArrayCid) || |
(class_id() == kTypedDataFloat64x2ArrayCid) || |
(class_id() == kTypedDataInt32x4ArrayCid)) { |
- Register array = locs()->in(0).reg(); |
- Register idx = locs()->in(1).reg(); |
+ const Register array = locs()->in(0).reg(); |
+ const Register idx = locs()->in(1).reg(); |
Location value = locs()->in(2); |
switch (index_scale()) { |
case 1: |
@@ -1441,13 +1441,13 @@ |
} |
switch (class_id()) { |
case kTypedDataFloat32ArrayCid: { |
- SRegister value_reg = |
+ const SRegister value_reg = |
EvenSRegisterOf(EvenDRegisterOf(value.fpu_reg())); |
__ StoreSToOffset(value_reg, idx, 0); |
break; |
} |
case kTypedDataFloat64ArrayCid: { |
- DRegister value_reg = EvenDRegisterOf(value.fpu_reg()); |
+ const DRegister value_reg = EvenDRegisterOf(value.fpu_reg()); |
__ StoreDToOffset(value_reg, idx, 0); |
break; |
} |
@@ -1464,7 +1464,7 @@ |
return; |
} |
- Register array = locs()->in(0).reg(); |
+ const Register array = locs()->in(0).reg(); |
Location index = locs()->in(1); |
Address element_address(kNoRegister, 0); |
@@ -1505,13 +1505,13 @@ |
switch (class_id()) { |
case kArrayCid: |
if (ShouldEmitStoreBarrier()) { |
- Register value = locs()->in(2).reg(); |
+ const Register value = locs()->in(2).reg(); |
__ StoreIntoObject(array, element_address, value); |
} else if (locs()->in(2).IsConstant()) { |
const Object& constant = locs()->in(2).constant(); |
__ StoreIntoObjectNoBarrier(array, element_address, constant); |
} else { |
- Register value = locs()->in(2).reg(); |
+ const Register value = locs()->in(2).reg(); |
__ StoreIntoObjectNoBarrier(array, element_address, value); |
} |
break; |
@@ -1524,7 +1524,7 @@ |
__ LoadImmediate(IP, static_cast<int8_t>(constant.Value())); |
__ strb(IP, element_address); |
} else { |
- Register value = locs()->in(2).reg(); |
+ const Register value = locs()->in(2).reg(); |
__ SmiUntag(value); |
__ strb(value, element_address); |
} |
@@ -1544,7 +1544,7 @@ |
__ LoadImmediate(IP, static_cast<int8_t>(value)); |
__ strb(IP, element_address); |
} else { |
- Register value = locs()->in(2).reg(); |
+ const Register value = locs()->in(2).reg(); |
Label store_value; |
__ SmiUntag(value); |
__ cmp(value, ShifterOperand(0xFF)); |
@@ -1559,7 +1559,7 @@ |
} |
case kTypedDataInt16ArrayCid: |
case kTypedDataUint16ArrayCid: { |
- Register value = locs()->in(2).reg(); |
+ const Register value = locs()->in(2).reg(); |
__ SmiUntag(value); |
__ strh(value, element_address); |
break; |
@@ -1568,12 +1568,12 @@ |
case kTypedDataUint32ArrayCid: { |
if (value()->IsSmiValue()) { |
ASSERT(RequiredInputRepresentation(2) == kTagged); |
- Register value = locs()->in(2).reg(); |
+ const Register value = locs()->in(2).reg(); |
__ SmiUntag(value); |
__ str(value, element_address); |
} else { |
ASSERT(RequiredInputRepresentation(2) == kUnboxedMint); |
- QRegister value = locs()->in(2).fpu_reg(); |
+ const QRegister value = locs()->in(2).fpu_reg(); |
ASSERT(value == Q7); |
__ vmovrs(TMP, EvenSRegisterOf(EvenDRegisterOf(value))); |
__ str(TMP, element_address); |
@@ -1622,11 +1622,11 @@ |
const intptr_t value_cid = value()->Type()->ToCid(); |
- Register value_reg = locs()->in(0).reg(); |
+ const Register value_reg = locs()->in(0).reg(); |
- Register value_cid_reg = locs()->temp(0).reg(); |
+ const Register value_cid_reg = locs()->temp(0).reg(); |
- Register temp_reg = locs()->temp(1).reg(); |
+ const Register temp_reg = locs()->temp(1).reg(); |
Register field_reg = needs_field_temp_reg ? |
locs()->temp(locs()->temp_count() - 1).reg() : kNoRegister; |
@@ -1975,7 +1975,7 @@ |
void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
Label skip_store; |
- Register instance_reg = locs()->in(0).reg(); |
+ const Register instance_reg = locs()->in(0).reg(); |
if (IsUnboxedStore() && compiler->is_optimizing()) { |
const DRegister value = EvenDRegisterOf(locs()->in(1).fpu_reg()); |
@@ -2160,7 +2160,7 @@ |
} |
if (ShouldEmitStoreBarrier()) { |
- Register value_reg = locs()->in(1).reg(); |
+ const Register value_reg = locs()->in(1).reg(); |
__ StoreIntoObject(instance_reg, |
FieldAddress(instance_reg, offset_in_bytes_), |
value_reg, |
@@ -2172,7 +2172,7 @@ |
FieldAddress(instance_reg, offset_in_bytes_), |
locs()->in(1).constant()); |
} else { |
- Register value_reg = locs()->in(1).reg(); |
+ const Register value_reg = locs()->in(1).reg(); |
__ StoreIntoObjectNoBarrier(instance_reg, |
FieldAddress(instance_reg, offset_in_bytes_), value_reg); |
} |
@@ -2198,8 +2198,8 @@ |
// |
// This is safe only so long as LoadStaticFieldInstr cannot deoptimize. |
void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register field = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register field = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadFromOffset(kWord, result, |
field, Field::value_offset() - kHeapObjectTag); |
} |
@@ -2215,8 +2215,8 @@ |
void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register value = locs()->in(0).reg(); |
- Register temp = locs()->temp(0).reg(); |
+ const Register value = locs()->in(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
__ LoadObject(temp, field()); |
if (this->value()->NeedsStoreBuffer()) { |
@@ -2531,7 +2531,7 @@ |
} |
Label done; |
- Register result_reg = locs()->out(0).reg(); |
+ const Register result_reg = locs()->out(0).reg(); |
if (IsPotentialUnboxedLoad()) { |
const DRegister value = EvenDRegisterOf(locs()->temp(0).fpu_reg()); |
const Register temp = locs()->temp(1).reg(); |
@@ -2636,8 +2636,8 @@ |
void InstantiateTypeInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register instantiator_reg = locs()->in(0).reg(); |
- Register result_reg = locs()->out(0).reg(); |
+ const Register instantiator_reg = locs()->in(0).reg(); |
+ const Register result_reg = locs()->out(0).reg(); |
// 'instantiator_reg' is the instantiator TypeArguments object (or null). |
// A runtime call to instantiate the type is required. |
@@ -2669,8 +2669,8 @@ |
void InstantiateTypeArgumentsInstr::EmitNativeCode( |
FlowGraphCompiler* compiler) { |
- Register instantiator_reg = locs()->in(0).reg(); |
- Register result_reg = locs()->out(0).reg(); |
+ const Register instantiator_reg = locs()->in(0).reg(); |
+ const Register result_reg = locs()->out(0).reg(); |
ASSERT(instantiator_reg == R0); |
ASSERT(instantiator_reg == result_reg); |
@@ -2761,8 +2761,8 @@ |
void CloneContextInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register context_value = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register context_value = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ PushObject(Object::ZoneHandle()); // Make room for the result. |
__ Push(context_value); |
@@ -2833,7 +2833,7 @@ |
virtual void EmitNativeCode(FlowGraphCompiler* compiler) { |
if (FLAG_use_osr) { |
uword flags_address = Isolate::Current()->stack_overflow_flags_address(); |
- Register value = instruction_->locs()->temp(0).reg(); |
+ const Register value = instruction_->locs()->temp(0).reg(); |
__ Comment("CheckStackOverflowSlowPathOsr"); |
__ Bind(osr_entry_label()); |
__ LoadImmediate(IP, flags_address); |
@@ -2885,7 +2885,7 @@ |
__ cmp(SP, ShifterOperand(IP)); |
__ b(slow_path->entry_label(), LS); |
if (compiler->CanOSRFunction() && in_loop()) { |
- Register temp = locs()->temp(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
// In unoptimized code check the usage counter to trigger OSR at loop |
// stack checks. Use progressively higher thresholds for more deeply |
// nested loops to attempt to hit outer loops with OSR when possible. |
@@ -2907,8 +2907,8 @@ |
BinarySmiOpInstr* shift_left) { |
const bool is_truncating = shift_left->is_truncating(); |
const LocationSummary& locs = *shift_left->locs(); |
- Register left = locs.in(0).reg(); |
- Register result = locs.out(0).reg(); |
+ const Register left = locs.in(0).reg(); |
+ const Register result = locs.out(0).reg(); |
Label* deopt = shift_left->CanDeoptimize() ? |
compiler->AddDeoptStub(shift_left->deopt_id(), ICData::kDeoptBinarySmiOp) |
: NULL; |
@@ -2943,7 +2943,7 @@ |
} |
// Right (locs.in(1)) is not constant. |
- Register right = locs.in(1).reg(); |
+ const Register right = locs.in(1).reg(); |
Range* right_range = shift_left->right()->definition()->range(); |
if (shift_left->left()->BindsToConstant() && !is_truncating) { |
// TODO(srdjan): Implement code below for is_truncating(). |
@@ -3005,7 +3005,7 @@ |
// Check if count too large for handling it inlined. |
__ Asr(IP, right, kSmiTagSize); // SmiUntag right into IP. |
// Overflow test (preserve left, right, and IP); |
- Register temp = locs.temp(0).reg(); |
+ const Register temp = locs.temp(0).reg(); |
__ Lsl(temp, left, IP); |
__ cmp(left, ShifterOperand(temp, ASR, IP)); |
__ b(deopt, NE); // Overflow. |
@@ -3067,8 +3067,8 @@ |
} |
ASSERT(!is_truncating()); |
- Register left = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register left = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
Label* deopt = NULL; |
if (CanDeoptimize()) { |
deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinarySmiOp); |
@@ -3154,7 +3154,7 @@ |
ASSERT(kSmiTagSize == 1); |
__ mov(IP, ShifterOperand(left, ASR, 31)); |
ASSERT(shift_count > 1); // 1, -1 case handled above. |
- Register temp = locs()->temp(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
__ add(temp, left, ShifterOperand(IP, LSR, 32 - shift_count)); |
ASSERT(shift_count > 0); |
__ mov(result, ShifterOperand(temp, ASR, shift_count)); |
@@ -3231,7 +3231,7 @@ |
return; |
} |
- Register right = locs()->in(1).reg(); |
+ const Register right = locs()->in(1).reg(); |
Range* right_range = this->right()->definition()->range(); |
switch (op_kind()) { |
case Token::kADD: { |
@@ -3293,8 +3293,8 @@ |
__ cmp(right, ShifterOperand(0)); |
__ b(deopt, EQ); |
} |
- Register temp = locs()->temp(0).reg(); |
- DRegister dtemp = EvenDRegisterOf(locs()->temp(1).fpu_reg()); |
+ const Register temp = locs()->temp(0).reg(); |
+ const DRegister dtemp = EvenDRegisterOf(locs()->temp(1).fpu_reg()); |
__ Asr(temp, left, kSmiTagSize); // SmiUntag left into temp. |
__ Asr(IP, right, kSmiTagSize); // SmiUntag right into IP. |
@@ -3313,8 +3313,8 @@ |
__ cmp(right, ShifterOperand(0)); |
__ b(deopt, EQ); |
} |
- Register temp = locs()->temp(0).reg(); |
- DRegister dtemp = EvenDRegisterOf(locs()->temp(1).fpu_reg()); |
+ const Register temp = locs()->temp(0).reg(); |
+ const DRegister dtemp = EvenDRegisterOf(locs()->temp(1).fpu_reg()); |
__ Asr(temp, left, kSmiTagSize); // SmiUntag left into temp. |
__ Asr(IP, right, kSmiTagSize); // SmiUntag right into IP. |
@@ -3354,7 +3354,7 @@ |
__ CompareImmediate(IP, kCountLimit); |
__ LoadImmediate(IP, kCountLimit, GT); |
} |
- Register temp = locs()->temp(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
__ Asr(temp, left, kSmiTagSize); // SmiUntag left into temp. |
__ Asr(result, temp, IP); |
__ SmiTag(result); |
@@ -3399,8 +3399,8 @@ |
ICData::kDeoptBinaryDoubleOp); |
intptr_t left_cid = left()->Type()->ToCid(); |
intptr_t right_cid = right()->Type()->ToCid(); |
- Register left = locs()->in(0).reg(); |
- Register right = locs()->in(1).reg(); |
+ const Register left = locs()->in(0).reg(); |
+ const Register right = locs()->in(1).reg(); |
if (this->left()->definition() == this->right()->definition()) { |
__ tst(left, ShifterOperand(kSmiTagMask)); |
} else if (left_cid == kSmiCid) { |
@@ -3477,7 +3477,7 @@ |
} else { |
Label* deopt = compiler->AddDeoptStub(deopt_id_, |
ICData::kDeoptBinaryDoubleOp); |
- Register temp = locs()->temp(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
if (value_type->is_nullable() && |
(value_type->ToNullableCid() == kDoubleCid)) { |
__ CompareImmediate(value, reinterpret_cast<intptr_t>(Object::null())); |
@@ -3782,9 +3782,9 @@ |
void BinaryFloat32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
switch (op_kind()) { |
case Token::kADD: __ vaddqs(result, left, right); break; |
@@ -3809,18 +3809,18 @@ |
void BinaryFloat64x2OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister left0 = EvenDRegisterOf(left); |
- DRegister left1 = OddDRegisterOf(left); |
+ const DRegister left0 = EvenDRegisterOf(left); |
+ const DRegister left1 = OddDRegisterOf(left); |
- DRegister right0 = EvenDRegisterOf(right); |
- DRegister right1 = OddDRegisterOf(right); |
+ const DRegister right0 = EvenDRegisterOf(right); |
+ const DRegister right1 = OddDRegisterOf(right); |
- DRegister result0 = EvenDRegisterOf(result); |
- DRegister result1 = OddDRegisterOf(result); |
+ const DRegister result0 = EvenDRegisterOf(result); |
+ const DRegister result1 = OddDRegisterOf(result); |
switch (op_kind()) { |
case Token::kADD: |
@@ -3857,20 +3857,20 @@ |
void Simd32x4ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
- DRegister dresult1 = OddDRegisterOf(result); |
- SRegister sresult0 = EvenSRegisterOf(dresult0); |
- SRegister sresult1 = OddSRegisterOf(dresult0); |
- SRegister sresult2 = EvenSRegisterOf(dresult1); |
- SRegister sresult3 = OddSRegisterOf(dresult1); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult1 = OddDRegisterOf(result); |
+ const SRegister sresult0 = EvenSRegisterOf(dresult0); |
+ const SRegister sresult1 = OddSRegisterOf(dresult0); |
+ const SRegister sresult2 = EvenSRegisterOf(dresult1); |
+ const SRegister sresult3 = OddSRegisterOf(dresult1); |
- DRegister dvalue0 = EvenDRegisterOf(value); |
- DRegister dvalue1 = OddDRegisterOf(value); |
+ const DRegister dvalue0 = EvenDRegisterOf(value); |
+ const DRegister dvalue1 = OddDRegisterOf(value); |
- DRegister dtemp0 = DTMP; |
- DRegister dtemp1 = OddDRegisterOf(QTMP); |
+ const DRegister dtemp0 = DTMP; |
+ const DRegister dtemp1 = OddDRegisterOf(QTMP); |
// For some cases the vdup instruction requires fewer |
// instructions. For arbitrary shuffles, use vtbl. |
@@ -3938,21 +3938,21 @@ |
void Simd32x4ShuffleMixInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
- DRegister dresult1 = OddDRegisterOf(result); |
- SRegister sresult0 = EvenSRegisterOf(dresult0); |
- SRegister sresult1 = OddSRegisterOf(dresult0); |
- SRegister sresult2 = EvenSRegisterOf(dresult1); |
- SRegister sresult3 = OddSRegisterOf(dresult1); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult1 = OddDRegisterOf(result); |
+ const SRegister sresult0 = EvenSRegisterOf(dresult0); |
+ const SRegister sresult1 = OddSRegisterOf(dresult0); |
+ const SRegister sresult2 = EvenSRegisterOf(dresult1); |
+ const SRegister sresult3 = OddSRegisterOf(dresult1); |
- DRegister dleft0 = EvenDRegisterOf(left); |
- DRegister dleft1 = OddDRegisterOf(left); |
- DRegister dright0 = EvenDRegisterOf(right); |
- DRegister dright1 = OddDRegisterOf(right); |
+ const DRegister dleft0 = EvenDRegisterOf(left); |
+ const DRegister dleft1 = OddDRegisterOf(left); |
+ const DRegister dright0 = EvenDRegisterOf(right); |
+ const DRegister dright1 = OddDRegisterOf(right); |
switch (op_kind()) { |
case MethodRecognizer::kFloat32x4ShuffleMix: |
@@ -3993,12 +3993,12 @@ |
void Simd32x4GetSignMaskInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- DRegister dvalue0 = EvenDRegisterOf(value); |
- DRegister dvalue1 = OddDRegisterOf(value); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const DRegister dvalue0 = EvenDRegisterOf(value); |
+ const DRegister dvalue1 = OddDRegisterOf(value); |
- Register out = locs()->out(0).reg(); |
- Register temp = locs()->temp(0).reg(); |
+ const Register out = locs()->out(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
// X lane. |
__ vmovrs(out, EvenSRegisterOf(dvalue0)); |
@@ -4037,14 +4037,14 @@ |
void Float32x4ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q0 = locs()->in(0).fpu_reg(); |
- QRegister q1 = locs()->in(1).fpu_reg(); |
- QRegister q2 = locs()->in(2).fpu_reg(); |
- QRegister q3 = locs()->in(3).fpu_reg(); |
- QRegister r = locs()->out(0).fpu_reg(); |
+ const QRegister q0 = locs()->in(0).fpu_reg(); |
+ const QRegister q1 = locs()->in(1).fpu_reg(); |
+ const QRegister q2 = locs()->in(2).fpu_reg(); |
+ const QRegister q3 = locs()->in(3).fpu_reg(); |
+ const QRegister r = locs()->out(0).fpu_reg(); |
- DRegister dr0 = EvenDRegisterOf(r); |
- DRegister dr1 = OddDRegisterOf(r); |
+ const DRegister dr0 = EvenDRegisterOf(r); |
+ const DRegister dr1 = OddDRegisterOf(r); |
__ vcvtsd(EvenSRegisterOf(dr0), EvenDRegisterOf(q0)); |
__ vcvtsd(OddSRegisterOf(dr0), EvenDRegisterOf(q1)); |
@@ -4064,7 +4064,7 @@ |
void Float32x4ZeroInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q = locs()->out(0).fpu_reg(); |
+ const QRegister q = locs()->out(0).fpu_reg(); |
__ veorq(q, q, q); |
} |
@@ -4081,10 +4081,10 @@ |
void Float32x4SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dvalue0 = EvenDRegisterOf(value); |
+ const DRegister dvalue0 = EvenDRegisterOf(value); |
// Convert to Float32. |
__ vcvtsd(STMP, dvalue0); |
@@ -4107,9 +4107,9 @@ |
void Float32x4ComparisonInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
switch (op_kind()) { |
case MethodRecognizer::kFloat32x4Equal: |
@@ -4151,9 +4151,9 @@ |
void Float32x4MinMaxInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
switch (op_kind()) { |
case MethodRecognizer::kFloat32x4Min: |
@@ -4180,9 +4180,9 @@ |
void Float32x4SqrtInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
- QRegister temp = locs()->temp(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister temp = locs()->temp(0).fpu_reg(); |
switch (op_kind()) { |
case MethodRecognizer::kFloat32x4Sqrt: |
@@ -4212,9 +4212,9 @@ |
void Float32x4ScaleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
switch (op_kind()) { |
case MethodRecognizer::kFloat32x4Scale: |
@@ -4239,8 +4239,8 @@ |
void Float32x4ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
switch (op_kind()) { |
case MethodRecognizer::kFloat32x4Negate: |
@@ -4268,10 +4268,10 @@ |
void Float32x4ClampInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister lower = locs()->in(1).fpu_reg(); |
- QRegister upper = locs()->in(2).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister lower = locs()->in(1).fpu_reg(); |
+ const QRegister upper = locs()->in(2).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
__ vminqs(result, left, upper); |
__ vmaxqs(result, result, lower); |
} |
@@ -4291,16 +4291,16 @@ |
void Float32x4WithInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister replacement = locs()->in(0).fpu_reg(); |
- QRegister value = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister replacement = locs()->in(0).fpu_reg(); |
+ const QRegister value = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
- DRegister dresult1 = OddDRegisterOf(result); |
- SRegister sresult0 = EvenSRegisterOf(dresult0); |
- SRegister sresult1 = OddSRegisterOf(dresult0); |
- SRegister sresult2 = EvenSRegisterOf(dresult1); |
- SRegister sresult3 = OddSRegisterOf(dresult1); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult1 = OddDRegisterOf(result); |
+ const SRegister sresult0 = EvenSRegisterOf(dresult0); |
+ const SRegister sresult1 = OddSRegisterOf(dresult0); |
+ const SRegister sresult2 = EvenSRegisterOf(dresult1); |
+ const SRegister sresult3 = OddSRegisterOf(dresult1); |
__ vcvtsd(STMP, EvenDRegisterOf(replacement)); |
if (result != value) { |
@@ -4337,8 +4337,8 @@ |
void Float32x4ToInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
if (value != result) { |
__ vmovq(result, value); |
@@ -4358,14 +4358,14 @@ |
void Simd64x2ShuffleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
- DRegister dvalue0 = EvenDRegisterOf(value); |
- DRegister dvalue1 = OddDRegisterOf(value); |
+ const DRegister dvalue0 = EvenDRegisterOf(value); |
+ const DRegister dvalue1 = OddDRegisterOf(value); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
switch (op_kind()) { |
case MethodRecognizer::kFloat64x2GetX: |
@@ -4390,7 +4390,7 @@ |
void Float64x2ZeroInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q = locs()->out(0).fpu_reg(); |
+ const QRegister q = locs()->out(0).fpu_reg(); |
__ veorq(q, q, q); |
} |
@@ -4407,14 +4407,14 @@ |
void Float64x2SplatInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
- DRegister dvalue = EvenDRegisterOf(value); |
+ const DRegister dvalue = EvenDRegisterOf(value); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
- DRegister dresult1 = OddDRegisterOf(result); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult1 = OddDRegisterOf(result); |
// Splat across all lanes. |
__ vmovd(dresult0, dvalue); |
@@ -4436,15 +4436,15 @@ |
void Float64x2ConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q0 = locs()->in(0).fpu_reg(); |
- QRegister q1 = locs()->in(1).fpu_reg(); |
- QRegister r = locs()->out(0).fpu_reg(); |
+ const QRegister q0 = locs()->in(0).fpu_reg(); |
+ const QRegister q1 = locs()->in(1).fpu_reg(); |
+ const QRegister r = locs()->out(0).fpu_reg(); |
- DRegister d0 = EvenDRegisterOf(q0); |
- DRegister d1 = EvenDRegisterOf(q1); |
+ const DRegister d0 = EvenDRegisterOf(q0); |
+ const DRegister d1 = EvenDRegisterOf(q1); |
- DRegister dr0 = EvenDRegisterOf(r); |
- DRegister dr1 = OddDRegisterOf(r); |
+ const DRegister dr0 = EvenDRegisterOf(r); |
+ const DRegister dr1 = OddDRegisterOf(r); |
__ vmovd(dr0, d0); |
__ vmovd(dr1, d1); |
@@ -4465,13 +4465,13 @@ |
void Float64x2ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q = locs()->in(0).fpu_reg(); |
- QRegister r = locs()->out(0).fpu_reg(); |
+ const QRegister q = locs()->in(0).fpu_reg(); |
+ const QRegister r = locs()->out(0).fpu_reg(); |
- DRegister dq0 = EvenDRegisterOf(q); |
- DRegister dq1 = OddDRegisterOf(q); |
+ const DRegister dq0 = EvenDRegisterOf(q); |
+ const DRegister dq1 = OddDRegisterOf(q); |
- DRegister dr0 = EvenDRegisterOf(r); |
+ const DRegister dr0 = EvenDRegisterOf(r); |
// Zero register. |
__ veorq(r, r, r); |
@@ -4496,13 +4496,13 @@ |
void Float32x4ToFloat64x2Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q = locs()->in(0).fpu_reg(); |
- QRegister r = locs()->out(0).fpu_reg(); |
+ const QRegister q = locs()->in(0).fpu_reg(); |
+ const QRegister r = locs()->out(0).fpu_reg(); |
- DRegister dq0 = EvenDRegisterOf(q); |
+ const DRegister dq0 = EvenDRegisterOf(q); |
- DRegister dr0 = EvenDRegisterOf(r); |
- DRegister dr1 = OddDRegisterOf(r); |
+ const DRegister dr0 = EvenDRegisterOf(r); |
+ const DRegister dr1 = OddDRegisterOf(r); |
// Set X. |
__ vcvtds(dr0, EvenSRegisterOf(dq0)); |
@@ -4532,14 +4532,14 @@ |
void Float64x2ZeroArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister q = locs()->in(0).fpu_reg(); |
+ const QRegister q = locs()->in(0).fpu_reg(); |
if ((op_kind() == MethodRecognizer::kFloat64x2GetSignMask)) { |
- DRegister dvalue0 = EvenDRegisterOf(q); |
- DRegister dvalue1 = OddDRegisterOf(q); |
+ const DRegister dvalue0 = EvenDRegisterOf(q); |
+ const DRegister dvalue1 = OddDRegisterOf(q); |
- Register out = locs()->out(0).reg(); |
- Register temp = locs()->temp(0).reg(); |
+ const Register out = locs()->out(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
// Upper 32-bits of X lane. |
__ vmovrs(out, OddSRegisterOf(dvalue0)); |
@@ -4553,12 +4553,12 @@ |
return; |
} |
ASSERT(representation() == kUnboxedFloat64x2); |
- QRegister r = locs()->out(0).fpu_reg(); |
+ const QRegister r = locs()->out(0).fpu_reg(); |
- DRegister dvalue0 = EvenDRegisterOf(q); |
- DRegister dvalue1 = OddDRegisterOf(q); |
- DRegister dresult0 = EvenDRegisterOf(r); |
- DRegister dresult1 = OddDRegisterOf(r); |
+ const DRegister dvalue0 = EvenDRegisterOf(q); |
+ const DRegister dvalue1 = OddDRegisterOf(q); |
+ const DRegister dresult0 = EvenDRegisterOf(r); |
+ const DRegister dresult1 = OddDRegisterOf(r); |
switch (op_kind()) { |
case MethodRecognizer::kFloat64x2Negate: |
@@ -4591,13 +4591,13 @@ |
void Float64x2OneArgInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- DRegister left0 = EvenDRegisterOf(left); |
- DRegister left1 = OddDRegisterOf(left); |
- QRegister right = locs()->in(1).fpu_reg(); |
- DRegister right0 = EvenDRegisterOf(right); |
- DRegister right1 = OddDRegisterOf(right); |
- QRegister out = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const DRegister left0 = EvenDRegisterOf(left); |
+ const DRegister left1 = OddDRegisterOf(left); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const DRegister right0 = EvenDRegisterOf(right); |
+ const DRegister right1 = OddDRegisterOf(right); |
+ const QRegister out = locs()->out(0).fpu_reg(); |
ASSERT(left == out); |
switch (op_kind()) { |
@@ -4668,18 +4668,18 @@ |
void Int32x4BoolConstructorInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register v0 = locs()->in(0).reg(); |
- Register v1 = locs()->in(1).reg(); |
- Register v2 = locs()->in(2).reg(); |
- Register v3 = locs()->in(3).reg(); |
- Register temp = locs()->temp(0).reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
- DRegister dresult1 = OddDRegisterOf(result); |
- SRegister sresult0 = EvenSRegisterOf(dresult0); |
- SRegister sresult1 = OddSRegisterOf(dresult0); |
- SRegister sresult2 = EvenSRegisterOf(dresult1); |
- SRegister sresult3 = OddSRegisterOf(dresult1); |
+ const Register v0 = locs()->in(0).reg(); |
+ const Register v1 = locs()->in(1).reg(); |
+ const Register v2 = locs()->in(2).reg(); |
+ const Register v3 = locs()->in(3).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult1 = OddDRegisterOf(result); |
+ const SRegister sresult0 = EvenSRegisterOf(dresult0); |
+ const SRegister sresult1 = OddSRegisterOf(dresult0); |
+ const SRegister sresult2 = EvenSRegisterOf(dresult1); |
+ const SRegister sresult3 = OddSRegisterOf(dresult1); |
__ veorq(result, result, result); |
__ LoadImmediate(temp, 0xffffffff); |
@@ -4711,15 +4711,15 @@ |
void Int32x4GetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- Register result = locs()->out(0).reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const Register result = locs()->out(0).reg(); |
- DRegister dvalue0 = EvenDRegisterOf(value); |
- DRegister dvalue1 = OddDRegisterOf(value); |
- SRegister svalue0 = EvenSRegisterOf(dvalue0); |
- SRegister svalue1 = OddSRegisterOf(dvalue0); |
- SRegister svalue2 = EvenSRegisterOf(dvalue1); |
- SRegister svalue3 = OddSRegisterOf(dvalue1); |
+ const DRegister dvalue0 = EvenDRegisterOf(value); |
+ const DRegister dvalue1 = OddDRegisterOf(value); |
+ const SRegister svalue0 = EvenSRegisterOf(dvalue0); |
+ const SRegister svalue1 = OddSRegisterOf(dvalue0); |
+ const SRegister svalue2 = EvenSRegisterOf(dvalue1); |
+ const SRegister svalue3 = OddSRegisterOf(dvalue1); |
switch (op_kind()) { |
case MethodRecognizer::kInt32x4GetFlagX: |
@@ -4758,11 +4758,11 @@ |
void Int32x4SelectInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister mask = locs()->in(0).fpu_reg(); |
- QRegister trueValue = locs()->in(1).fpu_reg(); |
- QRegister falseValue = locs()->in(2).fpu_reg(); |
- QRegister out = locs()->out(0).fpu_reg(); |
- QRegister temp = locs()->temp(0).fpu_reg(); |
+ const QRegister mask = locs()->in(0).fpu_reg(); |
+ const QRegister trueValue = locs()->in(1).fpu_reg(); |
+ const QRegister falseValue = locs()->in(2).fpu_reg(); |
+ const QRegister out = locs()->out(0).fpu_reg(); |
+ const QRegister temp = locs()->temp(0).fpu_reg(); |
// Copy mask. |
__ vmovq(temp, mask); |
@@ -4791,16 +4791,16 @@ |
void Int32x4SetFlagInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister mask = locs()->in(0).fpu_reg(); |
- Register flag = locs()->in(1).reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister mask = locs()->in(0).fpu_reg(); |
+ const Register flag = locs()->in(1).reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
- DRegister dresult0 = EvenDRegisterOf(result); |
- DRegister dresult1 = OddDRegisterOf(result); |
- SRegister sresult0 = EvenSRegisterOf(dresult0); |
- SRegister sresult1 = OddSRegisterOf(dresult0); |
- SRegister sresult2 = EvenSRegisterOf(dresult1); |
- SRegister sresult3 = OddSRegisterOf(dresult1); |
+ const DRegister dresult0 = EvenDRegisterOf(result); |
+ const DRegister dresult1 = OddDRegisterOf(result); |
+ const SRegister sresult0 = EvenSRegisterOf(dresult0); |
+ const SRegister sresult1 = OddSRegisterOf(dresult0); |
+ const SRegister sresult2 = EvenSRegisterOf(dresult1); |
+ const SRegister sresult3 = OddSRegisterOf(dresult1); |
if (result != mask) { |
__ vmovq(result, mask); |
@@ -4839,8 +4839,8 @@ |
void Int32x4ToFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
if (value != result) { |
__ vmovq(result, value); |
@@ -4861,9 +4861,9 @@ |
void BinaryInt32x4OpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister result = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister result = locs()->out(0).fpu_reg(); |
switch (op_kind()) { |
case Token::kBIT_AND: { |
__ vandq(result, left, right); |
@@ -4918,12 +4918,12 @@ |
void MathUnaryInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
if (kind() == MathUnaryInstr::kSqrt) { |
- DRegister val = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
- DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
+ const DRegister val = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
+ const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
__ vsqrtd(result, val); |
} else if (kind() == MathUnaryInstr::kDoubleSquare) { |
- DRegister val = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
- DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
+ const DRegister val = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
+ const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
__ vmuld(result, val, val); |
} else { |
ASSERT((kind() == MathUnaryInstr::kSin) || |
@@ -4976,10 +4976,10 @@ |
const intptr_t is_min = (op_kind() == MethodRecognizer::kMathMin); |
if (result_cid() == kDoubleCid) { |
Label done, returns_nan, are_equal; |
- DRegister left = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
- DRegister right = EvenDRegisterOf(locs()->in(1).fpu_reg()); |
- DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
- Register temp = locs()->temp(0).reg(); |
+ const DRegister left = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
+ const DRegister right = EvenDRegisterOf(locs()->in(1).fpu_reg()); |
+ const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
+ const Register temp = locs()->temp(0).reg(); |
__ vcmpd(left, right); |
__ vmstat(); |
__ b(&returns_nan, VS); |
@@ -5016,9 +5016,9 @@ |
} |
ASSERT(result_cid() == kSmiCid); |
- Register left = locs()->in(0).reg(); |
- Register right = locs()->in(1).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register left = locs()->in(0).reg(); |
+ const Register right = locs()->in(1).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ cmp(left, ShifterOperand(right)); |
ASSERT(result == left); |
if (is_min) { |
@@ -5043,8 +5043,8 @@ |
void UnarySmiOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register value = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register value = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
switch (op_kind()) { |
case Token::kNEGATE: { |
Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnaryOp); |
@@ -5075,8 +5075,8 @@ |
void UnaryDoubleOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
- DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
+ const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
+ const DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
__ vnegd(result, value); |
} |
@@ -5093,8 +5093,8 @@ |
void SmiToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register value = locs()->in(0).reg(); |
- DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
+ const Register value = locs()->in(0).reg(); |
+ const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
__ SmiUntag(value); |
__ vmovsr(STMP, value); |
__ vcvtdi(result, STMP); |
@@ -5207,8 +5207,9 @@ |
void DoubleToFloatInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
- SRegister result = EvenSRegisterOf(EvenDRegisterOf(locs()->out(0).fpu_reg())); |
+ const DRegister value = EvenDRegisterOf(locs()->in(0).fpu_reg()); |
+ const SRegister result = |
+ EvenSRegisterOf(EvenDRegisterOf(locs()->out(0).fpu_reg())); |
__ vcvtsd(result, value); |
} |
@@ -5226,8 +5227,9 @@ |
void FloatToDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- SRegister value = EvenSRegisterOf(EvenDRegisterOf(locs()->in(0).fpu_reg())); |
- DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
+ const SRegister value = |
+ EvenSRegisterOf(EvenDRegisterOf(locs()->in(0).fpu_reg())); |
+ const DRegister result = EvenDRegisterOf(locs()->out(0).fpu_reg()); |
__ vcvtds(result, value); |
} |
@@ -5452,13 +5454,13 @@ |
PairLocation* pair = locs()->in(0).AsPairLocation(); |
Location in_loc = pair->At(index()); |
if (representation() == kUnboxedDouble) { |
- QRegister out = locs()->out(0).fpu_reg(); |
- QRegister in = in_loc.fpu_reg(); |
+ const QRegister out = locs()->out(0).fpu_reg(); |
+ const QRegister in = in_loc.fpu_reg(); |
__ vmovq(out, in); |
} else { |
ASSERT(representation() == kTagged); |
- Register out = locs()->out(0).reg(); |
- Register in = in_loc.reg(); |
+ const Register out = locs()->out(0).reg(); |
+ const Register in = in_loc.reg(); |
__ mov(out, ShifterOperand(in)); |
} |
} |
@@ -5490,20 +5492,20 @@ |
deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinarySmiOp); |
} |
if (kind() == MergedMathInstr::kTruncDivMod) { |
- Register left = locs()->in(0).reg(); |
- Register right = locs()->in(1).reg(); |
+ const Register left = locs()->in(0).reg(); |
+ const Register right = locs()->in(1).reg(); |
ASSERT(locs()->out(0).IsPairLocation()); |
PairLocation* pair = locs()->out(0).AsPairLocation(); |
- Register result_div = pair->At(0).reg(); |
- Register result_mod = pair->At(1).reg(); |
+ const Register result_div = pair->At(0).reg(); |
+ const Register result_mod = pair->At(1).reg(); |
Range* right_range = InputAt(1)->definition()->range(); |
if ((right_range == NULL) || right_range->Overlaps(0, 0)) { |
// Handle divide by zero in runtime. |
__ cmp(right, ShifterOperand(0)); |
__ b(deopt, EQ); |
} |
- Register temp = locs()->temp(0).reg(); |
- DRegister dtemp = EvenDRegisterOf(locs()->temp(1).fpu_reg()); |
+ const Register temp = locs()->temp(0).reg(); |
+ const DRegister dtemp = EvenDRegisterOf(locs()->temp(1).fpu_reg()); |
__ Asr(temp, left, kSmiTagSize); // SmiUntag left into temp. |
__ Asr(IP, right, kSmiTagSize); // SmiUntag right into IP. |
@@ -5629,8 +5631,8 @@ |
ASSERT((unary_checks().GetReceiverClassIdAt(0) != kSmiCid) || |
(unary_checks().NumberOfChecks() > 1)); |
- Register value = locs()->in(0).reg(); |
- Register temp = locs()->temp(0).reg(); |
+ const Register value = locs()->in(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
Label* deopt = compiler->AddDeoptStub(deopt_id(), deopt_reason); |
Label is_ok; |
intptr_t cix = 0; |
@@ -5668,7 +5670,7 @@ |
void CheckSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register value = locs()->in(0).reg(); |
+ const Register value = locs()->in(0).reg(); |
Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptCheckSmi); |
__ tst(value, ShifterOperand(kSmiTagMask)); |
__ b(deopt, NE); |
@@ -5704,18 +5706,18 @@ |
} |
if (index_loc.IsConstant()) { |
- Register length = length_loc.reg(); |
+ const Register length = length_loc.reg(); |
const Smi& index = Smi::Cast(index_loc.constant()); |
__ CompareImmediate(length, reinterpret_cast<int32_t>(index.raw())); |
__ b(deopt, LS); |
} else if (length_loc.IsConstant()) { |
const Smi& length = Smi::Cast(length_loc.constant()); |
- Register index = index_loc.reg(); |
+ const Register index = index_loc.reg(); |
__ CompareImmediate(index, reinterpret_cast<int32_t>(length.raw())); |
__ b(deopt, CS); |
} else { |
- Register length = length_loc.reg(); |
- Register index = index_loc.reg(); |
+ const Register length = length_loc.reg(); |
+ const Register index = index_loc.reg(); |
__ cmp(index, ShifterOperand(length)); |
__ b(deopt, CS); |
} |
@@ -5774,13 +5776,13 @@ |
__ LoadDFromOffset(EvenDRegisterOf(result), value, |
Mint::value_offset() - kHeapObjectTag); |
} else if (value_cid == kSmiCid) { |
- Register temp = locs()->temp(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
__ SmiUntag(value); |
// Sign extend value into temp. |
__ Asr(temp, value, 31); |
__ vmovdrr(EvenDRegisterOf(result), value, temp); |
} else { |
- Register temp = locs()->temp(0).reg(); |
+ const Register temp = locs()->temp(0).reg(); |
Label* deopt = compiler->AddDeoptStub(deopt_id_, |
ICData::kDeoptUnboxInteger); |
Label is_smi, done; |
@@ -5857,11 +5859,11 @@ |
BoxIntegerSlowPath* slow_path = new BoxIntegerSlowPath(this); |
compiler->AddSlowPathCode(slow_path); |
- Register out_reg = locs()->out(0).reg(); |
- QRegister value = locs()->in(0).fpu_reg(); |
- DRegister dvalue0 = EvenDRegisterOf(value); |
- Register lo = locs()->temp(0).reg(); |
- Register hi = locs()->temp(1).reg(); |
+ const Register out_reg = locs()->out(0).reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const DRegister dvalue0 = EvenDRegisterOf(value); |
+ const Register lo = locs()->temp(0).reg(); |
+ const Register hi = locs()->temp(1).reg(); |
// Unboxed operations produce smis or mint-sized values. |
// Check if value fits into a smi. |
@@ -5928,9 +5930,9 @@ |
void BinaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister left = locs()->in(0).fpu_reg(); |
- QRegister right = locs()->in(1).fpu_reg(); |
- QRegister out = locs()->out(0).fpu_reg(); |
+ const QRegister left = locs()->in(0).fpu_reg(); |
+ const QRegister right = locs()->in(1).fpu_reg(); |
+ const QRegister out = locs()->out(0).fpu_reg(); |
Label* deopt = NULL; |
if (FLAG_throw_on_javascript_int_overflow) { |
@@ -5943,8 +5945,8 @@ |
case Token::kADD: |
case Token::kSUB: { |
const intptr_t tmpidx = FLAG_throw_on_javascript_int_overflow ? 2 : 0; |
- QRegister tmp = locs()->temp(tmpidx).fpu_reg(); |
- QRegister ro = locs()->temp(tmpidx + 1).fpu_reg(); |
+ const QRegister tmp = locs()->temp(tmpidx).fpu_reg(); |
+ const QRegister ro = locs()->temp(tmpidx + 1).fpu_reg(); |
ASSERT(ro == Q7); |
if (!FLAG_throw_on_javascript_int_overflow) { |
deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptBinaryMintOp); |
@@ -5967,8 +5969,8 @@ |
default: UNREACHABLE(); break; |
} |
if (FLAG_throw_on_javascript_int_overflow) { |
- Register tmp1 = locs()->temp(0).reg(); |
- Register tmp2 = locs()->temp(1).reg(); |
+ const Register tmp1 = locs()->temp(0).reg(); |
+ const Register tmp2 = locs()->temp(1).reg(); |
EmitJavascriptIntOverflowCheck(compiler, deopt, out, tmp1, tmp2); |
} |
} |
@@ -5992,14 +5994,14 @@ |
void ShiftMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- QRegister value = locs()->in(0).fpu_reg(); |
- Register shift = locs()->in(1).reg(); |
- QRegister temp = locs()->temp(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const Register shift = locs()->in(1).reg(); |
+ const QRegister temp = locs()->temp(0).fpu_reg(); |
ASSERT(temp == Q7); |
- QRegister out = locs()->out(0).fpu_reg(); |
- DRegister dtemp0 = EvenDRegisterOf(temp); |
- SRegister stemp0 = EvenSRegisterOf(dtemp0); |
- SRegister stemp1 = OddSRegisterOf(dtemp0); |
+ const QRegister out = locs()->out(0).fpu_reg(); |
+ const DRegister dtemp0 = EvenDRegisterOf(temp); |
+ const SRegister stemp0 = EvenSRegisterOf(dtemp0); |
+ const SRegister stemp1 = OddSRegisterOf(dtemp0); |
Label* deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptShiftMintOp); |
Label done; |
@@ -6050,8 +6052,8 @@ |
__ Bind(&done); |
if (FLAG_throw_on_javascript_int_overflow) { |
- Register tmp1 = locs()->in(1).reg(); |
- Register tmp2 = locs()->temp(1).reg(); |
+ const Register tmp1 = locs()->in(1).reg(); |
+ const Register tmp2 = locs()->temp(1).reg(); |
EmitJavascriptIntOverflowCheck(compiler, deopt, out, tmp1, tmp2); |
} |
} |
@@ -6075,16 +6077,16 @@ |
void UnaryMintOpInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
ASSERT(op_kind() == Token::kBIT_NOT); |
- QRegister value = locs()->in(0).fpu_reg(); |
- QRegister out = locs()->out(0).fpu_reg(); |
+ const QRegister value = locs()->in(0).fpu_reg(); |
+ const QRegister out = locs()->out(0).fpu_reg(); |
Label* deopt = NULL; |
if (FLAG_throw_on_javascript_int_overflow) { |
deopt = compiler->AddDeoptStub(deopt_id(), ICData::kDeoptUnaryMintOp); |
} |
__ vmvnq(out, value); |
if (FLAG_throw_on_javascript_int_overflow) { |
- Register tmp1 = locs()->temp(0).reg(); |
- Register tmp2 = locs()->temp(1).reg(); |
+ const Register tmp1 = locs()->temp(0).reg(); |
+ const Register tmp2 = locs()->temp(1).reg(); |
EmitJavascriptIntOverflowCheck(compiler, deopt, out, tmp1, tmp2); |
} |
} |
@@ -6244,7 +6246,7 @@ |
BranchLabels labels = { NULL, NULL, NULL }; |
Condition true_condition = EmitComparisonCode(compiler, labels); |
- Register result = locs()->out(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadObject(result, Bool::True(), true_condition); |
__ LoadObject(result, Bool::False(), NegateCondition(true_condition)); |
} |
@@ -6268,8 +6270,8 @@ |
void BooleanNegateInstr::EmitNativeCode(FlowGraphCompiler* compiler) { |
- Register value = locs()->in(0).reg(); |
- Register result = locs()->out(0).reg(); |
+ const Register value = locs()->in(0).reg(); |
+ const Register result = locs()->out(0).reg(); |
__ LoadObject(result, Bool::True()); |
__ cmp(result, ShifterOperand(value)); |