| Index: src/ia32/macro-assembler-ia32.h
|
| diff --git a/src/ia32/macro-assembler-ia32.h b/src/ia32/macro-assembler-ia32.h
|
| index aba27604d8019be8f53c54056fe49a075f14d6b2..b0b61f7a88f52d5242635cd67e07a77f73bebf87 100644
|
| --- a/src/ia32/macro-assembler-ia32.h
|
| +++ b/src/ia32/macro-assembler-ia32.h
|
| @@ -18,6 +18,10 @@ typedef Operand MemOperand;
|
|
|
| enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
|
| enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
|
| +enum PointersToHereCheck {
|
| + kPointersToHereMaybeInteresting,
|
| + kPointersToHereAreAlwaysInteresting
|
| +};
|
|
|
|
|
| enum RegisterValueType {
|
| @@ -140,7 +144,9 @@ class MacroAssembler: public Assembler {
|
| Register scratch,
|
| SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| - SmiCheck smi_check = INLINE_SMI_CHECK);
|
| + SmiCheck smi_check = INLINE_SMI_CHECK,
|
| + PointersToHereCheck pointers_to_here_check_for_value =
|
| + kPointersToHereMaybeInteresting);
|
|
|
| // As above, but the offset has the tag presubtracted. For use with
|
| // Operand(reg, off).
|
| @@ -151,14 +157,17 @@ class MacroAssembler: public Assembler {
|
| Register scratch,
|
| SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| - SmiCheck smi_check = INLINE_SMI_CHECK) {
|
| + SmiCheck smi_check = INLINE_SMI_CHECK,
|
| + PointersToHereCheck pointers_to_here_check_for_value =
|
| + kPointersToHereMaybeInteresting) {
|
| RecordWriteField(context,
|
| offset + kHeapObjectTag,
|
| value,
|
| scratch,
|
| save_fp,
|
| remembered_set_action,
|
| - smi_check);
|
| + smi_check,
|
| + pointers_to_here_check_for_value);
|
| }
|
|
|
| // Notify the garbage collector that we wrote a pointer into a fixed array.
|
| @@ -173,7 +182,9 @@ class MacroAssembler: public Assembler {
|
| Register index,
|
| SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| - SmiCheck smi_check = INLINE_SMI_CHECK);
|
| + SmiCheck smi_check = INLINE_SMI_CHECK,
|
| + PointersToHereCheck pointers_to_here_check_for_value =
|
| + kPointersToHereMaybeInteresting);
|
|
|
| // For page containing |object| mark region covering |address|
|
| // dirty. |object| is the object being stored into, |value| is the
|
| @@ -186,7 +197,9 @@ class MacroAssembler: public Assembler {
|
| Register value,
|
| SaveFPRegsMode save_fp,
|
| RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
|
| - SmiCheck smi_check = INLINE_SMI_CHECK);
|
| + SmiCheck smi_check = INLINE_SMI_CHECK,
|
| + PointersToHereCheck pointers_to_here_check_for_value =
|
| + kPointersToHereMaybeInteresting);
|
|
|
| // 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
|
|
|