Index: src/ia32/macro-assembler-ia32.h |
=================================================================== |
--- src/ia32/macro-assembler-ia32.h (revision 3500) |
+++ src/ia32/macro-assembler-ia32.h (working copy) |
@@ -319,9 +319,17 @@ |
// 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. |
@@ -335,6 +343,10 @@ |
// 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); |
@@ -427,6 +439,13 @@ |
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); |
}; |