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

Side by Side Diff: src/ia32/macro-assembler-ia32.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/ia32/code-stubs-ia32.cc ('k') | src/ia32/macro-assembler-ia32.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_IA32_MACRO_ASSEMBLER_IA32_H_ 5 #ifndef V8_IA32_MACRO_ASSEMBLER_IA32_H_
6 #define V8_IA32_MACRO_ASSEMBLER_IA32_H_ 6 #define V8_IA32_MACRO_ASSEMBLER_IA32_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 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 142
143 // Check if an object has a given incremental marking color. Also uses ecx! 143 // Check if an object has a given incremental marking color. Also uses ecx!
144 void HasColor(Register object, Register scratch0, Register scratch1, 144 void HasColor(Register object, Register scratch0, Register scratch1,
145 Label* has_color, Label::Distance has_color_distance, 145 Label* has_color, Label::Distance has_color_distance,
146 int first_bit, int second_bit); 146 int first_bit, int second_bit);
147 147
148 void JumpIfBlack(Register object, Register scratch0, Register scratch1, 148 void JumpIfBlack(Register object, Register scratch0, Register scratch1,
149 Label* on_black, 149 Label* on_black,
150 Label::Distance on_black_distance = Label::kFar); 150 Label::Distance on_black_distance = Label::kFar);
151 151
152 // Checks the color of an object. If the object is already grey or black 152 // Checks the color of an object. If the object is white we jump to the
153 // then we just fall through, since it is already live. If it is white and 153 // incremental marker.
154 // we can determine that it doesn't need to be scanned, then we just mark it 154 void JumpIfWhite(Register value, Register scratch1, Register scratch2,
155 // black and fall through. For the rest we jump to the label so the 155 Label* value_is_white, Label::Distance distance);
156 // incremental marker can fix its assumptions.
157 void EnsureNotWhite(Register object, Register scratch1, Register scratch2,
158 Label* object_is_white_and_not_data,
159 Label::Distance distance);
160 156
161 // Notify the garbage collector that we wrote a pointer into an object. 157 // Notify the garbage collector that we wrote a pointer into an object.
162 // |object| is the object being stored into, |value| is the object being 158 // |object| is the object being stored into, |value| is the object being
163 // stored. value and scratch registers are clobbered by the operation. 159 // stored. value and scratch registers are clobbered by the operation.
164 // The offset is the offset from the start of the object, not the offset from 160 // The offset is the offset from the start of the object, not the offset from
165 // the tagged HeapObject pointer. For use with FieldOperand(reg, off). 161 // the tagged HeapObject pointer. For use with FieldOperand(reg, off).
166 void RecordWriteField( 162 void RecordWriteField(
167 Register object, int offset, Register value, Register scratch, 163 Register object, int offset, Register value, Register scratch,
168 SaveFPRegsMode save_fp, 164 SaveFPRegsMode save_fp,
169 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET, 165 RememberedSetAction remembered_set_action = EMIT_REMEMBERED_SET,
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 } \ 999 } \
1004 masm-> 1000 masm->
1005 #else 1001 #else
1006 #define ACCESS_MASM(masm) masm-> 1002 #define ACCESS_MASM(masm) masm->
1007 #endif 1003 #endif
1008 1004
1009 } // namespace internal 1005 } // namespace internal
1010 } // namespace v8 1006 } // namespace v8
1011 1007
1012 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ 1008 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/ia32/code-stubs-ia32.cc ('k') | src/ia32/macro-assembler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698