| Index: src/ia32/macro-assembler-ia32.h
|
| ===================================================================
|
| --- src/ia32/macro-assembler-ia32.h (revision 8618)
|
| +++ src/ia32/macro-assembler-ia32.h (working copy)
|
| @@ -257,29 +257,30 @@
|
| const ParameterCount& expected,
|
| const ParameterCount& actual,
|
| InvokeFlag flag,
|
| - const CallWrapper& call_wrapper = NullCallWrapper(),
|
| - CallKind call_kind = CALL_AS_METHOD);
|
| + const CallWrapper& call_wrapper,
|
| + CallKind call_kind);
|
|
|
| void InvokeCode(Handle<Code> code,
|
| const ParameterCount& expected,
|
| const ParameterCount& actual,
|
| RelocInfo::Mode rmode,
|
| InvokeFlag flag,
|
| - const CallWrapper& call_wrapper = NullCallWrapper(),
|
| - CallKind call_kind = CALL_AS_METHOD);
|
| + const CallWrapper& call_wrapper,
|
| + CallKind call_kind);
|
|
|
| // Invoke the JavaScript function in the given register. Changes the
|
| // current context to the context in the function before invoking.
|
| void InvokeFunction(Register function,
|
| const ParameterCount& actual,
|
| InvokeFlag flag,
|
| - const CallWrapper& call_wrapper = NullCallWrapper(),
|
| - CallKind call_kind = CALL_AS_METHOD);
|
| + const CallWrapper& call_wrapper,
|
| + CallKind call_kind);
|
|
|
| void InvokeFunction(JSFunction* function,
|
| const ParameterCount& actual,
|
| InvokeFlag flag,
|
| - const CallWrapper& call_wrapper = NullCallWrapper());
|
| + const CallWrapper& call_wrapper,
|
| + CallKind call_kind);
|
|
|
| // Invoke specified builtin JavaScript function. Adds an entry to
|
| // the unresolved list if the name does not resolve.
|
| @@ -309,6 +310,12 @@
|
| // Compare instance type for map.
|
| void CmpInstanceType(Register map, InstanceType type);
|
|
|
| + // Check if a map for a JSObject indicates that the object has fast elements.
|
| + // Jump to the specified label if it does not.
|
| + void CheckFastElements(Register map,
|
| + Label* fail,
|
| + Label::Distance distance = Label::kFar);
|
| +
|
| // Check if the map of an object is equal to a specified map and branch to
|
| // label if not. Skip the smi check if not required (object is known to be a
|
| // heap object)
|
| @@ -382,10 +389,19 @@
|
| test(value, Immediate(kSmiTagMask));
|
| j(zero, smi_label, distance);
|
| }
|
| + // Jump if the operand is a smi.
|
| + inline void JumpIfSmi(Operand value,
|
| + Label* smi_label,
|
| + Label::Distance distance = Label::kFar) {
|
| + test(value, Immediate(kSmiTagMask));
|
| + j(zero, smi_label, distance);
|
| + }
|
| // Jump if register contain a non-smi.
|
| - inline void JumpIfNotSmi(Register value, Label* not_smi_label) {
|
| + inline void JumpIfNotSmi(Register value,
|
| + Label* not_smi_label,
|
| + Label::Distance distance = Label::kFar) {
|
| test(value, Immediate(kSmiTagMask));
|
| - j(not_zero, not_smi_label);
|
| + j(not_zero, not_smi_label, distance);
|
| }
|
|
|
| void LoadInstanceDescriptors(Register map, Register descriptors);
|
| @@ -430,6 +446,15 @@
|
| Label* miss);
|
|
|
|
|
| + void LoadFromNumberDictionary(Label* miss,
|
| + Register elements,
|
| + Register key,
|
| + Register r0,
|
| + Register r1,
|
| + Register r2,
|
| + Register result);
|
| +
|
| +
|
| // ---------------------------------------------------------------------------
|
| // Allocation support
|
|
|
| @@ -636,10 +661,10 @@
|
|
|
| // Prepares stack to put arguments (aligns and so on). Reserves
|
| // space for return value if needed (assumes the return value is a handle).
|
| - // Uses callee-saved esi to restore stack state after call. Arguments must be
|
| - // stored in ApiParameterOperand(0), ApiParameterOperand(1) etc. Saves
|
| - // context (esi).
|
| - void PrepareCallApiFunction(int argc, Register scratch);
|
| + // Arguments must be stored in ApiParameterOperand(0), ApiParameterOperand(1)
|
| + // etc. Saves context (esi). If space was reserved for return value then
|
| + // stores the pointer to the reserved slot into esi.
|
| + void PrepareCallApiFunction(int argc);
|
|
|
| // Calls an API function. Allocates HandleScope, extracts
|
| // returned value from handle and propagates exceptions.
|
| @@ -680,6 +705,9 @@
|
|
|
| void Move(Register target, Handle<Object> value);
|
|
|
| + // Push a handle value.
|
| + void Push(Handle<Object> handle) { push(handle); }
|
| +
|
| Handle<Object> CodeObject() {
|
| ASSERT(!code_object_.is_null());
|
| return code_object_;
|
|
|