| Index: src/ia32/macro-assembler-ia32.h
|
| ===================================================================
|
| --- src/ia32/macro-assembler-ia32.h (revision 3935)
|
| +++ src/ia32/macro-assembler-ia32.h (working copy)
|
| @@ -69,6 +69,7 @@
|
| void CopyRegistersFromStackToMemory(Register base,
|
| Register scratch,
|
| RegList regs);
|
| + void DebugBreak();
|
| #endif
|
|
|
| // ---------------------------------------------------------------------------
|
| @@ -123,6 +124,10 @@
|
| const ParameterCount& actual,
|
| InvokeFlag flag);
|
|
|
| + void InvokeFunction(JSFunction* function,
|
| + const ParameterCount& actual,
|
| + InvokeFlag flag);
|
| +
|
| // Invoke specified builtin JavaScript function. Adds an entry to
|
| // the unresolved list if the name does not resolve.
|
| void InvokeBuiltin(Builtins::JavaScript id, InvokeFlag flag);
|
| @@ -171,6 +176,9 @@
|
| sar(reg, kSmiTagSize);
|
| }
|
|
|
| + // Abort execution if argument is not a number. Used in debug code.
|
| + void AbortIfNotNumber(Register object, const char* msg);
|
| +
|
| // ---------------------------------------------------------------------------
|
| // Exception handling
|
|
|
| @@ -193,9 +201,14 @@
|
| // clobbered if it the same as the holder register. The function
|
| // returns a register containing the holder - either object_reg or
|
| // holder_reg.
|
| + // The function can optionally (when save_at_depth !=
|
| + // kInvalidProtoDepth) save the object at the given depth by moving
|
| + // it to [esp + kPointerSize].
|
| Register CheckMaps(JSObject* object, Register object_reg,
|
| JSObject* holder, Register holder_reg,
|
| - Register scratch, Label* miss);
|
| + Register scratch,
|
| + int save_at_depth,
|
| + Label* miss);
|
|
|
| // Generate code for checking access rights - used for security checks
|
| // on access to global objects across environments. The holder register
|
| @@ -347,6 +360,9 @@
|
| // Convenience function: Same as above, but takes the fid instead.
|
| void CallRuntime(Runtime::FunctionId id, int num_arguments);
|
|
|
| + // Convenience function: call an external reference.
|
| + void CallExternalReference(ExternalReference ref, int num_arguments);
|
| +
|
| // Convenience function: Same as above, but takes the fid instead.
|
| Object* TryCallRuntime(Runtime::FunctionId id, int num_arguments);
|
|
|
| @@ -384,13 +400,6 @@
|
|
|
| void Move(Register target, Handle<Object> value);
|
|
|
| - struct Unresolved {
|
| - int pc;
|
| - uint32_t flags; // see Bootstrapper::FixupFlags decoders/encoders.
|
| - const char* name;
|
| - };
|
| - List<Unresolved>* unresolved() { return &unresolved_; }
|
| -
|
| Handle<Object> CodeObject() { return code_object_; }
|
|
|
|
|
| @@ -426,6 +435,13 @@
|
| // ---------------------------------------------------------------------------
|
| // String utilities.
|
|
|
| + // Check whether the instance type represents a flat ascii string. Jump to the
|
| + // label if not. If the instance type can be scratched specify same register
|
| + // for both instance type and scratch.
|
| + void JumpIfInstanceTypeIsNotSequentialAscii(Register instance_type,
|
| + Register scratch,
|
| + Label *on_not_flat_ascii_string);
|
| +
|
| // Checks if both objects are sequential ASCII strings, and jumps to label
|
| // if either is not.
|
| void JumpIfNotBothSequentialAsciiStrings(Register object1,
|
| @@ -435,7 +451,6 @@
|
| Label *on_not_flat_ascii_strings);
|
|
|
| private:
|
| - List<Unresolved> unresolved_;
|
| bool generating_stub_;
|
| bool allow_stub_calls_;
|
| // This handle will be patched with the code object on installation.
|
| @@ -449,18 +464,6 @@
|
| Label* done,
|
| InvokeFlag flag);
|
|
|
| - // Prepares for a call or jump to a builtin by doing two things:
|
| - // 1. Emits code that fetches the builtin's function object from the context
|
| - // at runtime, and puts it in the register rdi.
|
| - // 2. Fetches the builtin's code object, and returns it in a handle, at
|
| - // compile time, so that later code can emit instructions to jump or call
|
| - // the builtin directly. If the code object has not yet been created, it
|
| - // returns the builtin code object for IllegalFunction, and sets the
|
| - // output parameter "resolved" to false. Code that uses the return value
|
| - // should then add the address and the builtin name to the list of fixups
|
| - // called unresolved_, which is fixed up by the bootstrapper.
|
| - Handle<Code> ResolveBuiltin(Builtins::JavaScript id, bool* resolved);
|
| -
|
| // Activation support.
|
| void EnterFrame(StackFrame::Type type);
|
| void LeaveFrame(StackFrame::Type type);
|
|
|