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); |