| Index: src/mips/code-stubs-mips.cc
|
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
|
| index 3f59932d15da4b2f67d47aaed8e366d7be3511be..e334b2896eb2f6a3aeee4a9baf6f76d034d3f0fa 100644
|
| --- a/src/mips/code-stubs-mips.cc
|
| +++ b/src/mips/code-stubs-mips.cc
|
| @@ -66,7 +66,8 @@ void NumberToStringStub::InitializeInterfaceDescriptor(
|
| static Register registers[] = { a0 };
|
| descriptor->register_param_count_ = 1;
|
| descriptor->register_params_ = registers;
|
| - descriptor->deoptimization_handler_ = NULL;
|
| + descriptor->deoptimization_handler_ =
|
| + Runtime::FunctionForId(Runtime::kNumberToString)->entry;
|
| }
|
|
|
|
|
| @@ -181,7 +182,7 @@ static void InitializeArrayConstructorDescriptor(
|
| descriptor->register_param_count_ = 2;
|
| if (constant_stack_parameter_count != 0) {
|
| // stack param count needs (constructor pointer, and single argument)
|
| - descriptor->stack_parameter_count_ = &a0;
|
| + descriptor->stack_parameter_count_ = a0;
|
| }
|
| descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
| descriptor->register_params_ = registers;
|
| @@ -203,7 +204,7 @@ static void InitializeInternalArrayConstructorDescriptor(
|
|
|
| if (constant_stack_parameter_count != 0) {
|
| // Stack param count needs (constructor pointer, and single argument).
|
| - descriptor->stack_parameter_count_ = &a0;
|
| + descriptor->stack_parameter_count_ = a0;
|
| }
|
| descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
| descriptor->register_params_ = registers;
|
| @@ -546,23 +547,27 @@ void DoubleToIStub::Generate(MacroAssembler* masm) {
|
| GetRegisterThatIsNotOneOf(input_reg, result_reg, scratch);
|
| Register scratch3 =
|
| GetRegisterThatIsNotOneOf(input_reg, result_reg, scratch, scratch2);
|
| - DoubleRegister double_scratch = kLithiumScratchDouble.low();
|
| - DoubleRegister double_input = f12;
|
| + DoubleRegister double_scratch = kLithiumScratchDouble;
|
|
|
| __ Push(scratch, scratch2, scratch3);
|
|
|
| - __ ldc1(double_input, MemOperand(input_reg, double_offset));
|
| -
|
| if (!skip_fastpath()) {
|
| + // Load double input.
|
| + __ ldc1(double_scratch, MemOperand(input_reg, double_offset));
|
| +
|
| // Clear cumulative exception flags and save the FCSR.
|
| __ cfc1(scratch2, FCSR);
|
| __ ctc1(zero_reg, FCSR);
|
| +
|
| // Try a conversion to a signed integer.
|
| - __ trunc_w_d(double_scratch, double_input);
|
| + __ Trunc_w_d(double_scratch, double_scratch);
|
| + // Move the converted value into the result register.
|
| __ mfc1(result_reg, double_scratch);
|
| +
|
| // Retrieve and restore the FCSR.
|
| __ cfc1(scratch, FCSR);
|
| __ ctc1(scratch2, FCSR);
|
| +
|
| // Check for overflow and NaNs.
|
| __ And(
|
| scratch, scratch,
|
| @@ -575,7 +580,9 @@ void DoubleToIStub::Generate(MacroAssembler* masm) {
|
| // Load the double value and perform a manual truncation.
|
| Register input_high = scratch2;
|
| Register input_low = scratch3;
|
| - __ Move(input_low, input_high, double_input);
|
| +
|
| + __ lw(input_low, MemOperand(input_reg, double_offset));
|
| + __ lw(input_high, MemOperand(input_reg, double_offset + kIntSize));
|
|
|
| Label normal_exponent, restore_sign;
|
| // Extract the biased exponent in result.
|
| @@ -4774,33 +4781,11 @@ void StringAddStub::Generate(MacroAssembler* masm) {
|
|
|
| // Just jump to runtime to add the two strings.
|
| __ bind(&call_runtime);
|
| - if ((flags_ & STRING_ADD_ERECT_FRAME) != 0) {
|
| - GenerateRegisterArgsPop(masm);
|
| - // Build a frame.
|
| - {
|
| - FrameScope scope(masm, StackFrame::INTERNAL);
|
| - GenerateRegisterArgsPush(masm);
|
| - __ CallRuntime(Runtime::kStringAdd, 2);
|
| - }
|
| - __ Ret();
|
| - } else {
|
| - __ TailCallRuntime(Runtime::kStringAdd, 2, 1);
|
| - }
|
| + __ TailCallRuntime(Runtime::kStringAdd, 2, 1);
|
|
|
| if (call_builtin.is_linked()) {
|
| __ bind(&call_builtin);
|
| - if ((flags_ & STRING_ADD_ERECT_FRAME) != 0) {
|
| - GenerateRegisterArgsPop(masm);
|
| - // Build a frame.
|
| - {
|
| - FrameScope scope(masm, StackFrame::INTERNAL);
|
| - GenerateRegisterArgsPush(masm);
|
| - __ InvokeBuiltin(builtin_id, CALL_FUNCTION);
|
| - }
|
| - __ Ret();
|
| - } else {
|
| - __ InvokeBuiltin(builtin_id, JUMP_FUNCTION);
|
| - }
|
| + __ InvokeBuiltin(builtin_id, JUMP_FUNCTION);
|
| }
|
| }
|
|
|
|
|