Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index ccbc9c92f12d2e8cfca86e10b067d03d637a1edf..3e939405f8aac6b6908adb001912308ccfe3ec7e 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -65,7 +65,7 @@ bool LCodeGen::GenerateCode() { |
HPhase phase("Z_Code generation", chunk()); |
ASSERT(is_unused()); |
status_ = GENERATING; |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
// Open a frame scope to indicate that there is a frame on the stack. The |
// NONE indicates that the scope shouldn't actually generate code to set up |
@@ -194,7 +194,7 @@ bool LCodeGen::GeneratePrologue() { |
} |
if (info()->saves_caller_doubles() && CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
Comment(";;; Save clobbered callee double registers"); |
int count = 0; |
BitVector* doubles = chunk()->allocated_double_registers(); |
@@ -1462,7 +1462,7 @@ void LCodeGen::DoConstantI(LConstantI* instr) { |
void LCodeGen::DoConstantD(LConstantD* instr) { |
ASSERT(instr->result()->IsDoubleRegister()); |
DoubleRegister result = ToDoubleRegister(instr->result()); |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
double v = instr->value(); |
__ Move(result, v); |
} |
@@ -1660,7 +1660,7 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) { |
__ bind(&done); |
} else { |
ASSERT(instr->hydrogen()->representation().IsDouble()); |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
FPURegister left_reg = ToDoubleRegister(left); |
FPURegister right_reg = ToDoubleRegister(right); |
FPURegister result_reg = ToDoubleRegister(instr->result()); |
@@ -1701,7 +1701,7 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) { |
void LCodeGen::DoArithmeticD(LArithmeticD* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister left = ToDoubleRegister(instr->left()); |
DoubleRegister right = ToDoubleRegister(instr->right()); |
DoubleRegister result = ToDoubleRegister(instr->result()); |
@@ -1811,7 +1811,7 @@ void LCodeGen::DoBranch(LBranch* instr) { |
Register reg = ToRegister(instr->value()); |
EmitBranch(true_block, false_block, ne, reg, Operand(zero_reg)); |
} else if (r.IsDouble()) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister reg = ToDoubleRegister(instr->value()); |
// Test the double value. Zero and NaN are false. |
EmitBranchF(true_block, false_block, ne, reg, kDoubleRegZero); |
@@ -1889,7 +1889,7 @@ void LCodeGen::DoBranch(LBranch* instr) { |
} |
if (expected.Contains(ToBooleanStub::HEAP_NUMBER)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
// heap number -> false iff +0, -0, or NaN. |
DoubleRegister dbl_scratch = double_scratch0(); |
Label not_heap_number; |
@@ -1969,7 +1969,7 @@ void LCodeGen::DoCmpIDAndBranch(LCmpIDAndBranch* instr) { |
EmitGoto(next_block); |
} else { |
if (instr->is_double()) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
// Compare left and right as doubles and load the |
// resulting flags into the normal status register. |
FPURegister left_reg = ToDoubleRegister(left); |
@@ -2524,7 +2524,7 @@ void LCodeGen::DoReturn(LReturn* instr) { |
__ CallRuntime(Runtime::kTraceExit, 1); |
} |
if (info()->saves_caller_doubles() && CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
ASSERT(NeedsEagerFrame()); |
BitVector* doubles = chunk()->allocated_double_registers(); |
BitVector::Iterator save_iterator(doubles); |
@@ -2903,7 +2903,7 @@ void LCodeGen::DoLoadKeyedExternalArray(LLoadKeyed* instr) { |
__ Addu(scratch0(), scratch0(), external_pointer); |
} |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
if (elements_kind == EXTERNAL_FLOAT_ELEMENTS) { |
__ lwc1(result, MemOperand(scratch0(), additional_offset)); |
__ cvt_d_s(result, result); |
@@ -3032,7 +3032,7 @@ void LCodeGen::DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr) { |
__ Addu(elements, elements, scratch); |
} |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
__ Addu(elements, elements, Operand(base_offset)); |
__ ldc1(result, MemOperand(elements)); |
if (instr->hydrogen()->RequiresHoleCheck()) { |
@@ -3495,7 +3495,7 @@ void LCodeGen::EmitIntegerMathAbs(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
// Class for deferred case. |
class DeferredMathAbsTaggedHeapNumber: public LDeferredCode { |
public: |
@@ -3532,7 +3532,7 @@ void LCodeGen::DoMathAbs(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathFloor(LUnaryMathOperation* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister input = ToDoubleRegister(instr->value()); |
Register result = ToRegister(instr->result()); |
Register scratch1 = scratch0(); |
@@ -3561,7 +3561,7 @@ void LCodeGen::DoMathFloor(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathRound(LUnaryMathOperation* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister input = ToDoubleRegister(instr->value()); |
Register result = ToRegister(instr->result()); |
DoubleRegister double_scratch1 = ToDoubleRegister(instr->temp()); |
@@ -3638,7 +3638,7 @@ void LCodeGen::DoMathRound(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister input = ToDoubleRegister(instr->value()); |
DoubleRegister result = ToDoubleRegister(instr->result()); |
__ sqrt_d(result, input); |
@@ -3646,7 +3646,7 @@ void LCodeGen::DoMathSqrt(LUnaryMathOperation* instr) { |
void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister input = ToDoubleRegister(instr->value()); |
DoubleRegister result = ToDoubleRegister(instr->result()); |
DoubleRegister temp = ToDoubleRegister(instr->temp()); |
@@ -3671,7 +3671,7 @@ void LCodeGen::DoMathPowHalf(LUnaryMathOperation* instr) { |
void LCodeGen::DoPower(LPower* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
Representation exponent_type = instr->hydrogen()->right()->representation(); |
// Having marked this as a call, we can use any registers. |
// Just make sure that the input/output registers are the expected ones. |
@@ -3702,7 +3702,7 @@ void LCodeGen::DoPower(LPower* instr) { |
void LCodeGen::DoRandom(LRandom* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
class DeferredDoRandom: public LDeferredCode { |
public: |
DeferredDoRandom(LCodeGen* codegen, LRandom* instr) |
@@ -3779,7 +3779,7 @@ void LCodeGen::DoDeferredRandom(LRandom* instr) { |
void LCodeGen::DoMathExp(LMathExp* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister input = ToDoubleRegister(instr->value()); |
DoubleRegister result = ToDoubleRegister(instr->result()); |
DoubleRegister double_scratch1 = ToDoubleRegister(instr->double_temp()); |
@@ -4055,7 +4055,7 @@ void LCodeGen::DoBoundsCheck(LBoundsCheck* instr) { |
void LCodeGen::DoStoreKeyedExternalArray(LStoreKeyed* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
Register external_pointer = ToRegister(instr->elements()); |
Register key = no_reg; |
ElementsKind elements_kind = instr->elements_kind(); |
@@ -4129,7 +4129,7 @@ void LCodeGen::DoStoreKeyedExternalArray(LStoreKeyed* instr) { |
void LCodeGen::DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister value = ToDoubleRegister(instr->value()); |
Register elements = ToRegister(instr->elements()); |
Register key = no_reg; |
@@ -4433,7 +4433,7 @@ void LCodeGen::DoStringLength(LStringLength* instr) { |
void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
LOperand* input = instr->value(); |
ASSERT(input->IsRegister() || input->IsStackSlot()); |
LOperand* output = instr->result(); |
@@ -4451,7 +4451,7 @@ void LCodeGen::DoInteger32ToDouble(LInteger32ToDouble* instr) { |
void LCodeGen::DoUint32ToDouble(LUint32ToDouble* instr) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
LOperand* input = instr->value(); |
LOperand* output = instr->result(); |
@@ -4572,7 +4572,7 @@ void LCodeGen::DoDeferredNumberTagI(LInstruction* instr, |
__ Xor(src, src, Operand(0x80000000)); |
} |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
__ mtc1(src, dbl_scratch); |
__ cvt_d_w(dbl_scratch, dbl_scratch); |
} else { |
@@ -4584,7 +4584,7 @@ void LCodeGen::DoDeferredNumberTagI(LInstruction* instr, |
} |
} else { |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
__ mtc1(src, dbl_scratch); |
__ Cvt_d_uw(dbl_scratch, dbl_scratch, f22); |
} else { |
@@ -4624,7 +4624,7 @@ void LCodeGen::DoDeferredNumberTagI(LInstruction* instr, |
// number. |
__ bind(&done); |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
__ sdc1(dbl_scratch, MemOperand(dst, HeapNumber::kValueOffset)); |
} else { |
__ sw(sfpd_lo, MemOperand(dst, HeapNumber::kMantissaOffset)); |
@@ -4663,7 +4663,7 @@ void LCodeGen::DoNumberTagD(LNumberTagD* instr) { |
Label done; |
if (convert_hole) { |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
DoubleRegister input_reg = ToDoubleRegister(instr->value()); |
__ BranchF(&no_special_nan_handling, NULL, eq, input_reg, input_reg); |
__ Move(reg, scratch0(), input_reg); |
@@ -4709,7 +4709,7 @@ void LCodeGen::DoNumberTagD(LNumberTagD* instr) { |
} |
__ bind(deferred->exit()); |
if (CpuFeatures::IsSupported(FPU)) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
__ sdc1(input_reg, MemOperand(reg, HeapNumber::kValueOffset)); |
} else { |
__ sw(sfpd_lo, MemOperand(reg, HeapNumber::kValueOffset)); |
@@ -4764,7 +4764,7 @@ void LCodeGen::EmitNumberUntagD(Register input_reg, |
LEnvironment* env, |
NumberUntagDMode mode) { |
Register scratch = scratch0(); |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
Label load_smi, heap_number, done; |
@@ -4842,7 +4842,7 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr) { |
// of the if. |
if (instr->truncating()) { |
- CpuFeatures::Scope scope(FPU); |
+ CpuFeatureScope scope(masm(), FPU); |
Register scratch3 = ToRegister(instr->temp2()); |
FPURegister single_scratch = double_scratch.low(); |
ASSERT(!scratch3.is(input_reg) && |
@@ -5097,7 +5097,7 @@ void LCodeGen::DoCheckMaps(LCheckMaps* instr) { |
void LCodeGen::DoClampDToUint8(LClampDToUint8* instr) { |
- CpuFeatures::Scope vfp_scope(FPU); |
+ CpuFeatureScope vfp_scope(masm(), FPU); |
DoubleRegister value_reg = ToDoubleRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |
DoubleRegister temp_reg = ToDoubleRegister(instr->temp()); |
@@ -5106,7 +5106,7 @@ void LCodeGen::DoClampDToUint8(LClampDToUint8* instr) { |
void LCodeGen::DoClampIToUint8(LClampIToUint8* instr) { |
- CpuFeatures::Scope vfp_scope(FPU); |
+ CpuFeatureScope vfp_scope(masm(), FPU); |
Register unclamped_reg = ToRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |
__ ClampUint8(result_reg, unclamped_reg); |
@@ -5114,7 +5114,7 @@ void LCodeGen::DoClampIToUint8(LClampIToUint8* instr) { |
void LCodeGen::DoClampTToUint8(LClampTToUint8* instr) { |
- CpuFeatures::Scope vfp_scope(FPU); |
+ CpuFeatureScope vfp_scope(masm(), FPU); |
Register scratch = scratch0(); |
Register input_reg = ToRegister(instr->unclamped()); |
Register result_reg = ToRegister(instr->result()); |