Index: src/ia32/macro-assembler-ia32.h |
=================================================================== |
--- src/ia32/macro-assembler-ia32.h (revision 2767) |
+++ src/ia32/macro-assembler-ia32.h (working copy) |
@@ -184,6 +184,48 @@ |
// --------------------------------------------------------------------------- |
+ // Allocation support |
+ |
+ // Allocate an object in new space. If the new space is exhausted control |
+ // continues at the gc_required label. The allocated object is returned in |
+ // result and end of the new object is returned in result_end. The register |
+ // scratch can be passed as no_reg in which case an additional object |
+ // reference will be added to the reloc info. The returned pointers in result |
+ // and result_end have not yet been tagged as heap objects. If |
+ // result_contains_top_on_entry is true the contnt of result is known to be |
+ // the allocation top on entry (could be result_end from a previous call to |
+ // AllocateObjectInNewSpace). If result_contains_top_on_entry is true scratch |
+ // should be no_reg as it is never used. |
+ void AllocateObjectInNewSpace(int object_size, |
+ Register result, |
+ Register result_end, |
+ Register scratch, |
+ Label* gc_required, |
+ bool result_contains_top_on_entry); |
+ |
+ void AllocateObjectInNewSpace(int header_size, |
+ ScaleFactor element_size, |
+ Register element_count, |
+ Register result, |
+ Register result_end, |
+ Register scratch, |
+ Label* gc_required, |
+ bool result_contains_top_on_entry); |
+ |
+ void AllocateObjectInNewSpace(Register object_size, |
+ Register result, |
+ Register result_end, |
+ Register scratch, |
+ Label* gc_required, |
+ bool result_contains_top_on_entry); |
+ |
+ // Undo allocation in new space. The object passed and objects allocated after |
+ // it will no longer be allocated. Make sure that no pointers are left to the |
+ // object(s) no longer allocated as they would be invalid when allocation is |
+ // un-done. |
+ void UndoAllocationInNewSpace(Register object); |
+ |
+ // --------------------------------------------------------------------------- |
// Support functions. |
// Check if result is zero and op is negative. |
@@ -303,6 +345,13 @@ |
// Activation support. |
void EnterFrame(StackFrame::Type type); |
void LeaveFrame(StackFrame::Type type); |
+ |
+ // Allocation support helpers. |
+ void LoadAllocationTopHelper(Register result, |
+ Register result_end, |
+ Register scratch, |
+ bool result_contains_top_on_entry); |
+ void UpdateAllocationTopHelper(Register result_end, Register scratch); |
}; |