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

Side by Side Diff: src/arm/macro-assembler-arm.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
« no previous file with comments | « no previous file | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 // Don't load NaNs or infinities, branch to the non number case instead. 77 // Don't load NaNs or infinities, branch to the non number case instead.
78 AVOID_NANS_AND_INFINITIES = 1 << 1 78 AVOID_NANS_AND_INFINITIES = 1 << 1
79 }; 79 };
80 80
81 81
82 enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET }; 82 enum RememberedSetAction { EMIT_REMEMBERED_SET, OMIT_REMEMBERED_SET };
83 enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK }; 83 enum SmiCheck { INLINE_SMI_CHECK, OMIT_SMI_CHECK };
84 enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved }; 84 enum LinkRegisterStatus { kLRHasNotBeenSaved, kLRHasBeenSaved };
85 85
86 86
87 bool Aliasing(Register r1, Register r2, Register r3, Register r4); 87 bool AreAliased(Register r1, Register r2, Register r3, Register r4);
88 88
89 89
90 // MacroAssembler implements a collection of frequently used macros. 90 // MacroAssembler implements a collection of frequently used macros.
91 class MacroAssembler: public Assembler { 91 class MacroAssembler: public Assembler {
92 public: 92 public:
93 // The isolate parameter can be NULL if the macro assembler should 93 // The isolate parameter can be NULL if the macro assembler should
94 // not use isolate-dependent functionality. In this case, it's the 94 // not use isolate-dependent functionality. In this case, it's the
95 // responsibility of the caller to never invoke such function on the 95 // responsibility of the caller to never invoke such function on the
96 // macro assembler. 96 // macro assembler.
97 MacroAssembler(Isolate* isolate, void* buffer, int size); 97 MacroAssembler(Isolate* isolate, void* buffer, int size);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 170
171 void IncrementalMarkingRecordWriteHelper(Register object, 171 void IncrementalMarkingRecordWriteHelper(Register object,
172 Register value, 172 Register value,
173 Register address); 173 Register address);
174 174
175 enum RememberedSetFinalAction { 175 enum RememberedSetFinalAction {
176 kReturnAtEnd, 176 kReturnAtEnd,
177 kFallThroughAtEnd 177 kFallThroughAtEnd
178 }; 178 };
179 179
180 // For page containing |object| mark region covering |addr| dirty. 180 // Record in the remembered set the fact that we have a pointer to new space
181 // RememberedSetHelper only works if the object is not in new 181 // at the address pointed to by the addr register. Only works if addr is not
182 // space. 182 // in new space.
183 void RememberedSetHelper(Register addr, 183 void RememberedSetHelper(Register addr,
184 Register scratch, 184 Register scratch,
185 SaveFPRegsMode save_fp, 185 SaveFPRegsMode save_fp,
186 RememberedSetFinalAction and_then); 186 RememberedSetFinalAction and_then);
187 187
188 void CheckPageFlag(Register object, 188 void CheckPageFlag(Register object,
189 Register scratch, 189 Register scratch,
190 MemoryChunk::MemoryChunkFlags flag, 190 MemoryChunk::MemoryChunkFlags flag,
191 Condition cc, 191 Condition cc,
192 Label* condition_met); 192 Label* condition_met);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 228
229 // Checks whether an object is data-only, ie it does need to be scanned by the 229 // Checks whether an object is data-only, ie it does need to be scanned by the
230 // garbage collector. 230 // garbage collector.
231 void IsDataObject(Register value, 231 void IsDataObject(Register value,
232 Register scratch, 232 Register scratch,
233 Label* not_data_object, 233 Label* not_data_object,
234 Label::Distance not_data_object_distance); 234 Label::Distance not_data_object_distance);
235 235
236 // Notify the garbage collector that we wrote a pointer into an object. 236 // Notify the garbage collector that we wrote a pointer into an object.
237 // |object| is the object being stored into, |value| is the object being 237 // |object| is the object being stored into, |value| is the object being
238 // stored. All registers are clobbered by the operation. RecordWriteField 238 // stored. value and scratch registers are clobbered by the operation.
239 // filters out smis so it does not update the write barrier if the value is a 239 // The offset is the offset from the start of the object, not the offset from
240 // smi. The offset is the offset from the start of the object, not the offset 240 // the tagged HeapObject pointer. For use with FieldOperand(reg, off).
241 // from the tagged HeapObject pointer. For use with
242 // FieldMemOperand(reg, off)
243 void RecordWriteField( 241 void RecordWriteField(
244 Register object, 242 Register object,
245 int offset, 243 int offset,
246 Register value, 244 Register value,
247 Register scratch, 245 Register scratch,
248 LinkRegisterStatus lr_status, 246 LinkRegisterStatus lr_status,
249 SaveFPRegsMode save_fp, 247 SaveFPRegsMode save_fp,
250 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 248 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
251 SmiCheck smi_check = INLINE_SMI_CHECK); 249 SmiCheck smi_check = INLINE_SMI_CHECK);
252 250
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1213 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1216 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1214 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1217 #else 1215 #else
1218 #define ACCESS_MASM(masm) masm-> 1216 #define ACCESS_MASM(masm) masm->
1219 #endif 1217 #endif
1220 1218
1221 1219
1222 } } // namespace v8::internal 1220 } } // namespace v8::internal
1223 1221
1224 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 1222 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/macro-assembler-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698