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

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

Issue 1542113002: Do not mark from native code. Check color and call incremental marker instead. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 12 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
« no previous file with comments | « src/ppc/code-stubs-ppc.cc ('k') | src/ppc/macro-assembler-ppc.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_ 5 #ifndef V8_PPC_MACRO_ASSEMBLER_PPC_H_
6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_ 6 #define V8_PPC_MACRO_ASSEMBLER_PPC_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/frames.h" 10 #include "src/frames.h"
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 // Check if object is in new space. Jumps if the object is in new space. 205 // Check if object is in new space. Jumps if the object is in new space.
206 // The register scratch can be object itself, but it will be clobbered. 206 // The register scratch can be object itself, but it will be clobbered.
207 void JumpIfInNewSpace(Register object, Register scratch, Label* branch) { 207 void JumpIfInNewSpace(Register object, Register scratch, Label* branch) {
208 InNewSpace(object, scratch, eq, branch); 208 InNewSpace(object, scratch, eq, branch);
209 } 209 }
210 210
211 // Check if an object has a given incremental marking color. 211 // Check if an object has a given incremental marking color.
212 void HasColor(Register object, Register scratch0, Register scratch1, 212 void HasColor(Register object, Register scratch0, Register scratch1,
213 Label* has_color, int first_bit, int second_bit); 213 Label* has_color, int first_bit, int second_bit);
214 214
215 void JumpIfBlack(Register object, Register scratch0, Register scratch1, 215 // Checks the color of an object. If the object is white we jump to the
216 Label* on_black); 216 // incremental marker.
217 217 void JumpIfWhite(Register value, Register scratch1, Register scratch2,
218 // Checks the color of an object. If the object is already grey or black 218 Register scratch3, Label* value_is_white);
219 // then we just fall through, since it is already live. If it is white and
220 // we can determine that it doesn't need to be scanned, then we just mark it
221 // black and fall through. For the rest we jump to the label so the
222 // incremental marker can fix its assumptions.
223 void EnsureNotWhite(Register object, Register scratch1, Register scratch2,
224 Register scratch3, Label* object_is_white_and_not_data);
225
226 // Detects conservatively whether an object is data-only, i.e. it does need to
227 // be scanned by the garbage collector.
228 void JumpIfDataObject(Register value, Register scratch,
229 Label* not_data_object);
230 219
231 // Notify the garbage collector that we wrote a pointer into an object. 220 // Notify the garbage collector that we wrote a pointer into an object.
232 // |object| is the object being stored into, |value| is the object being 221 // |object| is the object being stored into, |value| is the object being
233 // stored. value and scratch registers are clobbered by the operation. 222 // stored. value and scratch registers are clobbered by the operation.
234 // The offset is the offset from the start of the object, not the offset from 223 // The offset is the offset from the start of the object, not the offset from
235 // the tagged HeapObject pointer. For use with FieldMemOperand(reg, off). 224 // the tagged HeapObject pointer. For use with FieldMemOperand(reg, off).
236 void RecordWriteField( 225 void RecordWriteField(
237 Register object, int offset, Register value, Register scratch, 226 Register object, int offset, Register value, Register scratch,
238 LinkRegisterStatus lr_status, SaveFPRegsMode save_fp, 227 LinkRegisterStatus lr_status, SaveFPRegsMode save_fp,
239 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 228 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
(...skipping 1344 matching lines...) Expand 10 before | Expand all | Expand 10 after
1584 #define ACCESS_MASM(masm) \ 1573 #define ACCESS_MASM(masm) \
1585 masm->stop(__FILE_LINE__); \ 1574 masm->stop(__FILE_LINE__); \
1586 masm-> 1575 masm->
1587 #else 1576 #else
1588 #define ACCESS_MASM(masm) masm-> 1577 #define ACCESS_MASM(masm) masm->
1589 #endif 1578 #endif
1590 } // namespace internal 1579 } // namespace internal
1591 } // namespace v8 1580 } // namespace v8
1592 1581
1593 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_ 1582 #endif // V8_PPC_MACRO_ASSEMBLER_PPC_H_
OLDNEW
« no previous file with comments | « src/ppc/code-stubs-ppc.cc ('k') | src/ppc/macro-assembler-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698