Index: src/ia32/macro-assembler-ia32.h |
diff --git a/src/ia32/macro-assembler-ia32.h b/src/ia32/macro-assembler-ia32.h |
index b819d7a5f507e1c52a7674634ede9487750a4749..4f36b1b7bb07d8e94d212ac4a93ad793f5cf49f0 100644 |
--- a/src/ia32/macro-assembler-ia32.h |
+++ b/src/ia32/macro-assembler-ia32.h |
@@ -107,6 +107,16 @@ class MacroAssembler: public Assembler { |
j(not_equal, if_not_equal, if_not_equal_distance); |
} |
+ // These functions do not arrange the registers in any particular order so |
+ // they are not useful for calls that can cause a GC. The caller can |
+ // exclude up to 3 registers that do not need to be saved and restored. |
+ void PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1 = no_reg, |
+ Register exclusion2 = no_reg, |
+ Register exclusion3 = no_reg); |
+ void PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1 = no_reg, |
+ Register exclusion2 = no_reg, |
+ Register exclusion3 = no_reg); |
+ |
// --------------------------------------------------------------------------- |
// GC Support |
enum RememberedSetFinalAction { kReturnAtEnd, kFallThroughAtEnd }; |
@@ -207,6 +217,11 @@ class MacroAssembler: public Assembler { |
PointersToHereCheck pointers_to_here_check_for_value = |
kPointersToHereMaybeInteresting); |
+ // Notify the garbage collector that we wrote a code entry into a |
+ // JSFunction. Only scratch is clobbered by the operation. |
+ void RecordWriteCodeEntryField(Register js_function, Register code_entry, |
+ Register scratch); |
+ |
// For page containing |object| mark the region covering the object's map |
// dirty. |object| is the object being stored into, |map| is the Map object |
// that was stored. |