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); |
} |