diff options
Diffstat (limited to 'deps/v8/src/ia32/macro-assembler-ia32.h')
-rw-r--r-- | deps/v8/src/ia32/macro-assembler-ia32.h | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/deps/v8/src/ia32/macro-assembler-ia32.h b/deps/v8/src/ia32/macro-assembler-ia32.h index a41d42e82b..bc7c0f8805 100644 --- a/deps/v8/src/ia32/macro-assembler-ia32.h +++ b/deps/v8/src/ia32/macro-assembler-ia32.h @@ -149,6 +149,8 @@ class MacroAssembler: public Assembler { // address must be pushed before calling this helper. void PushTryHandler(CodeLocation try_location, HandlerType type); + // Unlink the stack handler on top of the stack from the try handler chain. + void PopTryHandler(); // --------------------------------------------------------------------------- // Inline caching support @@ -285,12 +287,22 @@ class MacroAssembler: public Assembler { // --------------------------------------------------------------------------- // Runtime calls - // Call a code stub. + // Call a code stub. Generate the code if necessary. void CallStub(CodeStub* stub); - // Tail call a code stub (jump). + // Call a code stub and return the code object called. Try to generate + // the code if necessary. Do not perform a GC but instead return a retry + // after GC failure. + Object* TryCallStub(CodeStub* stub); + + // Tail call a code stub (jump). Generate the code if necessary. void TailCallStub(CodeStub* stub); + // Tail call a code stub (jump) and return the code object called. Try to + // generate the code if necessary. Do not perform a GC but instead return + // a retry after GC failure. + Object* TryTailCallStub(CodeStub* stub); + // Return from a code stub after popping its arguments. void StubReturn(int argc); @@ -298,9 +310,17 @@ class MacroAssembler: public Assembler { // Eventually this should be used for all C calls. void CallRuntime(Runtime::Function* f, int num_arguments); + // Call a runtime function, returning the RuntimeStub object called. + // Try to generate the stub code if necessary. Do not perform a GC + // but instead return a retry after GC failure. + Object* TryCallRuntime(Runtime::Function* f, int num_arguments); + // Convenience function: Same as above, but takes the fid instead. void CallRuntime(Runtime::FunctionId id, int num_arguments); + // Convenience function: Same as above, but takes the fid instead. + Object* TryCallRuntime(Runtime::FunctionId id, int num_arguments); + // Tail call of a runtime routine (jump). // Like JumpToRuntime, but also takes care of passing the number // of arguments. @@ -314,6 +334,10 @@ class MacroAssembler: public Assembler { // ensuring that saved register, it is not no_reg, is left unchanged. void PopHandleScope(Register saved, Register scratch); + // As PopHandleScope, but does not perform a GC. Instead, returns a + // retry after GC failure object if GC is necessary. + Object* TryPopHandleScope(Register saved, Register scratch); + // Jump to a runtime routine. void JumpToRuntime(const ExternalReference& ext); @@ -323,6 +347,12 @@ class MacroAssembler: public Assembler { void Ret(); + void Drop(int element_count); + + void Call(Label* target) { call(target); } + + void Move(Register target, Handle<Object> value); + struct Unresolved { int pc; uint32_t flags; // see Bootstrapper::FixupFlags decoders/encoders. @@ -400,6 +430,13 @@ class MacroAssembler: public Assembler { Register scratch, AllocationFlags flags); void UpdateAllocationTopHelper(Register result_end, Register scratch); + + // Helper for PopHandleScope. Allowed to perform a GC and returns + // NULL if gc_allowed. Does not perform a GC if !gc_allowed, and + // possibly returns a failure object indicating an allocation failure. + Object* PopHandleScopeHelper(Register saved, + Register scratch, + bool gc_allowed); }; |