| Index: src/x64/macro-assembler-x64.h
 | 
| diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h
 | 
| index ca2eba99841f780093f83bca311995df90ba8cd4..45c05b9809ad246448d683451015e801a624a1c4 100644
 | 
| --- a/src/x64/macro-assembler-x64.h
 | 
| +++ b/src/x64/macro-assembler-x64.h
 | 
| @@ -29,6 +29,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 SmiOperationConstraint {
 | 
|    PRESERVE_SOURCE_REGISTER,
 | 
| @@ -220,7 +224,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).
 | 
| @@ -231,14 +237,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.
 | 
| @@ -253,7 +262,15 @@ 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);
 | 
| +
 | 
| +  void RecordWriteForMap(
 | 
| +      Register object,
 | 
| +      Register map,
 | 
| +      Register dst,
 | 
| +      SaveFPRegsMode save_fp);
 | 
|  
 | 
|    // For page containing |object| mark region covering |address|
 | 
|    // dirty. |object| is the object being stored into, |value| is the
 | 
| @@ -266,7 +283,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);
 | 
|  
 | 
|    // ---------------------------------------------------------------------------
 | 
|    // Debugger Support
 | 
| 
 |