| Index: src/x64/macro-assembler-x64.h
|
| diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h
|
| index 646d7fafc0a575f81ef93f42741512883893de91..3d5a4560bb0227789e7092031bb0a35e12588b7e 100644
|
| --- a/src/x64/macro-assembler-x64.h
|
| +++ b/src/x64/macro-assembler-x64.h
|
| @@ -532,15 +532,6 @@ class MacroAssembler: public Assembler {
|
| // Smis represent a subset of integers. The subset is always equivalent to
|
| // a two's complement interpretation of a fixed number of bits.
|
|
|
| - // Optimistically adds an integer constant to a supposed smi.
|
| - // If the src is not a smi, or the result is not a smi, jump to
|
| - // the label.
|
| - void SmiTryAddConstant(Register dst,
|
| - Register src,
|
| - Smi* constant,
|
| - Label* on_not_smi_result,
|
| - Label::Distance near_jump = Label::kFar);
|
| -
|
| // Add an integer constant to a tagged smi, giving a tagged smi as result.
|
| // No overflow testing on the result is done.
|
| void SmiAddConstant(Register dst, Register src, Smi* constant);
|
| @@ -578,8 +569,8 @@ class MacroAssembler: public Assembler {
|
| Label::Distance near_jump = Label::kFar);
|
|
|
| // Adds smi values and return the result as a smi.
|
| - // If dst is src1, then src1 will be destroyed, even if
|
| - // the operation is unsuccessful.
|
| + // If dst is src1, then src1 will be destroyed if the operation is
|
| + // successful, otherwise kept intact.
|
| void SmiAdd(Register dst,
|
| Register src1,
|
| Register src2,
|
| @@ -790,6 +781,10 @@ class MacroAssembler: public Assembler {
|
| // ---------------------------------------------------------------------------
|
| // Macro instructions.
|
|
|
| + // Load/store with specific representation.
|
| + void Load(Register dst, const Operand& src, Representation r);
|
| + void Store(const Operand& dst, Register src, Representation r);
|
| +
|
| // Load a register with a long value as efficiently as possible.
|
| void Set(Register dst, int64_t x);
|
| void Set(const Operand& dst, int64_t x);
|
| @@ -1248,13 +1243,20 @@ class MacroAssembler: public Assembler {
|
| void StubReturn(int argc);
|
|
|
| // Call a runtime routine.
|
| - void CallRuntime(const Runtime::Function* f, int num_arguments);
|
| + void CallRuntime(const Runtime::Function* f,
|
| + int num_arguments,
|
| + SaveFPRegsMode save_doubles = kDontSaveFPRegs);
|
|
|
| // Call a runtime function and save the value of XMM registers.
|
| - void CallRuntimeSaveDoubles(Runtime::FunctionId id);
|
| + void CallRuntimeSaveDoubles(Runtime::FunctionId id) {
|
| + const Runtime::Function* function = Runtime::FunctionForId(id);
|
| + CallRuntime(function, function->nargs, kSaveFPRegs);
|
| + }
|
|
|
| // Convenience function: Same as above, but takes the fid instead.
|
| - void CallRuntime(Runtime::FunctionId id, int num_arguments);
|
| + void CallRuntime(Runtime::FunctionId id, int num_arguments) {
|
| + CallRuntime(Runtime::FunctionForId(id), num_arguments);
|
| + }
|
|
|
| // Convenience function: call an external reference.
|
| void CallExternalReference(const ExternalReference& ext,
|
|
|