Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: src/ia32/macro-assembler-ia32.h

Issue 7122003: Make x64 to use the RecordWrite stub. This is a step towards getting (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/gc/
Patch Set: Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 void IncrementalMarkingRecordWriteHelper(Register object, 72 void IncrementalMarkingRecordWriteHelper(Register object,
73 Register value, 73 Register value,
74 Register address); 74 Register address);
75 75
76 enum RememberedSetFinalAction { 76 enum RememberedSetFinalAction {
77 kReturnAtEnd, 77 kReturnAtEnd,
78 kFallThroughAtEnd 78 kFallThroughAtEnd
79 }; 79 };
80 80
81 // For page containing |object| mark region covering |addr| dirty. 81 // Record in the remembered set the fact that we have a pointer to new space
82 // RememberedSetHelper only works if the object is not in new 82 // at the address pointed to by the addr register. Only works if addr is not
83 // space. 83 // in new space.
84 void RememberedSetHelper(Register addr, 84 void RememberedSetHelper(Register addr,
85 Register scratch, 85 Register scratch,
86 SaveFPRegsMode save_fp, 86 SaveFPRegsMode save_fp,
87 RememberedSetFinalAction and_then); 87 RememberedSetFinalAction and_then);
88 88
89 void CheckPageFlag(Register object, 89 void CheckPageFlag(Register object,
90 Register scratch, 90 Register scratch,
91 MemoryChunk::MemoryChunkFlags flag, 91 MemoryChunk::MemoryChunkFlags flag,
92 Condition cc, 92 Condition cc,
93 Label* condition_met, 93 Label* condition_met,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 131
132 // Checks whether an object is data-only, ie it does need to be scanned by the 132 // Checks whether an object is data-only, ie it does need to be scanned by the
133 // garbage collector. 133 // garbage collector.
134 void IsDataObject(Register value, 134 void IsDataObject(Register value,
135 Register scratch, 135 Register scratch,
136 Label* not_data_object, 136 Label* not_data_object,
137 Label::Distance not_data_object_distance); 137 Label::Distance not_data_object_distance);
138 138
139 // Notify the garbage collector that we wrote a pointer into an object. 139 // Notify the garbage collector that we wrote a pointer into an object.
140 // |object| is the object being stored into, |value| is the object being 140 // |object| is the object being stored into, |value| is the object being
141 // stored. All registers are clobbered by the operation. RecordWriteField 141 // stored. value and scratch registers are clobbered by the operation.
142 // filters out smis so it does not update the write barrier if the value is a 142 // The offset is the offset from the start of the object, not the offset from
143 // smi. The offset is the offset from the start of the object, not the offset 143 // the tagged HeapObject pointer. For use with FieldOperand(reg, off).
144 // from the tagged HeapObject pointer. For use with FieldOperand(reg, off).
145 void RecordWriteField( 144 void RecordWriteField(
146 Register object, 145 Register object,
147 int offset, 146 int offset,
148 Register value, 147 Register value,
149 Register scratch, 148 Register scratch,
150 SaveFPRegsMode save_fp, 149 SaveFPRegsMode save_fp,
151 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 150 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
152 SmiCheck smi_check = INLINE_SMI_CHECK); 151 SmiCheck smi_check = INLINE_SMI_CHECK);
153 152
154 // As above, but the offset has the tag presubtracted. For use with 153 // As above, but the offset has the tag presubtracted. For use with
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 } \ 871 } \
873 masm-> 872 masm->
874 #else 873 #else
875 #define ACCESS_MASM(masm) masm-> 874 #define ACCESS_MASM(masm) masm->
876 #endif 875 #endif
877 876
878 877
879 } } // namespace v8::internal 878 } } // namespace v8::internal
880 879
881 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ 880 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | src/x64/assembler-x64.h » ('j') | src/x64/assembler-x64.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698