| Index: src/x87/macro-assembler-x87.h
|
| diff --git a/src/x87/macro-assembler-x87.h b/src/x87/macro-assembler-x87.h
|
| index 1fdca3c9f6f65522057c59591dff7ccb51f0b6df..d410e56f48a672faa3cf6492c921e425d846a457 100644
|
| --- a/src/x87/macro-assembler-x87.h
|
| +++ b/src/x87/macro-assembler-x87.h
|
| @@ -76,6 +76,7 @@ class MacroAssembler: public Assembler {
|
| void RememberedSetHelper(Register object, // Used for debug code.
|
| Register addr,
|
| Register scratch,
|
| + SaveFPRegsMode save_fp,
|
| RememberedSetFinalAction and_then);
|
|
|
| void CheckPageFlag(Register object,
|
| @@ -150,6 +151,7 @@ class MacroAssembler: public Assembler {
|
| int offset,
|
| Register value,
|
| Register scratch,
|
| + SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| SmiCheck smi_check = INLINE_SMI_CHECK,
|
| PointersToHereCheck pointers_to_here_check_for_value =
|
| @@ -162,6 +164,7 @@ class MacroAssembler: public Assembler {
|
| int offset,
|
| Register value,
|
| Register scratch,
|
| + SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| SmiCheck smi_check = INLINE_SMI_CHECK,
|
| PointersToHereCheck pointers_to_here_check_for_value =
|
| @@ -170,6 +173,7 @@ class MacroAssembler: public Assembler {
|
| offset + kHeapObjectTag,
|
| value,
|
| scratch,
|
| + save_fp,
|
| remembered_set_action,
|
| smi_check,
|
| pointers_to_here_check_for_value);
|
| @@ -185,6 +189,7 @@ class MacroAssembler: public Assembler {
|
| Register array,
|
| Register value,
|
| Register index,
|
| + SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| SmiCheck smi_check = INLINE_SMI_CHECK,
|
| PointersToHereCheck pointers_to_here_check_for_value =
|
| @@ -199,6 +204,7 @@ class MacroAssembler: public Assembler {
|
| Register object,
|
| Register address,
|
| Register value,
|
| + SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| SmiCheck smi_check = INLINE_SMI_CHECK,
|
| PointersToHereCheck pointers_to_here_check_for_value =
|
| @@ -211,7 +217,8 @@ class MacroAssembler: public Assembler {
|
| Register object,
|
| Handle<Map> map,
|
| Register scratch1,
|
| - Register scratch2);
|
| + Register scratch2,
|
| + SaveFPRegsMode save_fp);
|
|
|
| // ---------------------------------------------------------------------------
|
| // Debugger Support
|
| @@ -226,14 +233,14 @@ class MacroAssembler: public Assembler {
|
| // arguments in register eax and sets up the number of arguments in
|
| // register edi and the pointer to the first argument in register
|
| // esi.
|
| - void EnterExitFrame();
|
| + void EnterExitFrame(bool save_doubles);
|
|
|
| void EnterApiExitFrame(int argc);
|
|
|
| // Leave the current exit frame. Expects the return value in
|
| // register eax:edx (untouched) and the pointer to the first
|
| // argument in register esi.
|
| - void LeaveExitFrame();
|
| + void LeaveExitFrame(bool save_doubles);
|
|
|
| // Leave the current exit frame. Expects the return value in
|
| // register eax (untouched).
|
| @@ -435,8 +442,13 @@ class MacroAssembler: public Assembler {
|
| // FCmp is similar to integer cmp, but requires unsigned
|
| // jcc instructions (je, ja, jae, jb, jbe, je, and jz).
|
| void FCmp();
|
| + void FXamMinusZero();
|
| + void FXamSign();
|
| + void X87CheckIA();
|
| + void X87SetRC(int rc);
|
|
|
| void ClampUint8(Register reg);
|
| + void ClampTOSToUint8(Register result_reg);
|
|
|
| void SlowTruncateToI(Register result_reg, Register input_reg,
|
| int offset = HeapNumber::kValueOffset - kHeapObjectTag);
|
| @@ -717,14 +729,19 @@ class MacroAssembler: public Assembler {
|
| void StubReturn(int argc);
|
|
|
| // Call a runtime routine.
|
| - void CallRuntime(const Runtime::Function* f, int num_arguments);
|
| - // Convenience function: Same as above, but takes the fid instead.
|
| - void CallRuntime(Runtime::FunctionId id) {
|
| + void CallRuntime(const Runtime::Function* f,
|
| + int num_arguments,
|
| + SaveFPRegsMode save_doubles = kDontSaveFPRegs);
|
| + void CallRuntimeSaveDoubles(Runtime::FunctionId id) {
|
| const Runtime::Function* function = Runtime::FunctionForId(id);
|
| - CallRuntime(function, function->nargs);
|
| + CallRuntime(function, function->nargs, kSaveFPRegs);
|
| }
|
| - void CallRuntime(Runtime::FunctionId id, int num_arguments) {
|
| - CallRuntime(Runtime::FunctionForId(id), num_arguments);
|
| +
|
| + // Convenience function: Same as above, but takes the fid instead.
|
| + void CallRuntime(Runtime::FunctionId id,
|
| + int num_arguments,
|
| + SaveFPRegsMode save_doubles = kDontSaveFPRegs) {
|
| + CallRuntime(Runtime::FunctionForId(id), num_arguments, save_doubles);
|
| }
|
|
|
| // Convenience function: call an external reference.
|
| @@ -956,7 +973,7 @@ class MacroAssembler: public Assembler {
|
| const CallWrapper& call_wrapper = NullCallWrapper());
|
|
|
| void EnterExitFramePrologue();
|
| - void EnterExitFrameEpilogue(int argc);
|
| + void EnterExitFrameEpilogue(int argc, bool save_doubles);
|
|
|
| void LeaveExitFrameEpilogue(bool restore_context);
|
|
|
|
|