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

Unified Diff: src/ia32/macro-assembler-ia32.cc

Issue 7302003: Support slots recording for compaction during incremental marking. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: fix presubmit, remove last debug check Created 9 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ia32/macro-assembler-ia32.h ('k') | src/incremental-marking.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ia32/macro-assembler-ia32.cc
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc
index 561965717cf8261e171778c76e1480eb4fb092b4..fbd7f0d6c0e3c42cbe92fee970d25efcf3c63e59 100644
--- a/src/ia32/macro-assembler-ia32.cc
+++ b/src/ia32/macro-assembler-ia32.cc
@@ -77,44 +77,6 @@ void MacroAssembler::InNewSpace(
}
-void MacroAssembler::IncrementalMarkingRecordWriteHelper(
- Register object,
- Register value,
- Register address) {
- ASSERT(!object.is(address));
- ASSERT(!value.is(address));
- ASSERT(!value.is(object));
-
- bool preserve[Register::kNumRegisters];
-
- for (int i = 0; i < Register::kNumRegisters; i++) preserve[i] = false;
-
- preserve[eax.code()] = true;
- preserve[ecx.code()] = true;
- preserve[edx.code()] = true;
- preserve[object.code()] = true;
- preserve[value.code()] = true;
- preserve[address.code()] = true;
-
- for (int i = 0; i < Register::kNumRegisters; i++) {
- if (preserve[i]) push(Register::from_code(i));
- }
-
- // TODO(gc) we are assuming that xmm registers are not modified by
- // the C function we are calling.
- PrepareCallCFunction(2, address);
- mov(Operand(esp, 0 * kPointerSize), object);
- mov(Operand(esp, 1 * kPointerSize), value);
- CallCFunction(
- ExternalReference::incremental_marking_record_write_function(isolate()),
- 2);
-
- for (int i = Register::kNumRegisters - 1; i >= 0; i--) {
- if (preserve[i]) pop(Register::from_code(i));
- }
-}
-
-
void MacroAssembler::RememberedSetHelper(
Register addr,
Register scratch,
@@ -314,13 +276,13 @@ void MacroAssembler::RecordWrite(Register object,
CheckPageFlag(value,
value, // Used as scratch.
- MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING,
+ MemoryChunk::kPointersToHereAreInterestingMask,
zero,
&done,
Label::kNear);
CheckPageFlag(object,
value, // Used as scratch.
- MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING,
+ MemoryChunk::kPointersFromHereAreInterestingMask,
zero,
&done,
Label::kNear);
@@ -2270,7 +2232,7 @@ CodePatcher::~CodePatcher() {
void MacroAssembler::CheckPageFlag(
Register object,
Register scratch,
- MemoryChunk::MemoryChunkFlags flag,
+ int mask,
Condition cc,
Label* condition_met,
Label::Distance condition_met_distance) {
@@ -2281,11 +2243,11 @@ void MacroAssembler::CheckPageFlag(
mov(scratch, Immediate(~Page::kPageAlignmentMask));
and_(scratch, Operand(object));
}
- if (flag < kBitsPerByte) {
+ if (mask < (1 << kBitsPerByte)) {
test_b(Operand(scratch, MemoryChunk::kFlagsOffset),
- static_cast<uint8_t>(1u << flag));
+ static_cast<uint8_t>(mask));
} else {
- test(Operand(scratch, MemoryChunk::kFlagsOffset), Immediate(1 << flag));
+ test(Operand(scratch, MemoryChunk::kFlagsOffset), Immediate(mask));
}
j(cc, condition_met, condition_met_distance);
}
« no previous file with comments | « src/ia32/macro-assembler-ia32.h ('k') | src/incremental-marking.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698