Revision: 13029
Author: [email protected]
Date: Wed Nov 21 23:05:20 2012
Log: Use slot instead of value in the write barrier to record write
from code.
BUG=
Review URL: https://codereview.chromium.org/11412096
http://code.google.com/p/v8/source/detail?r=13029
Modified:
/branches/bleeding_edge/src/arm/code-stubs-arm.cc
/branches/bleeding_edge/src/ia32/code-stubs-ia32.cc
/branches/bleeding_edge/src/incremental-marking.cc
/branches/bleeding_edge/src/incremental-marking.h
/branches/bleeding_edge/src/mips/code-stubs-mips.cc
/branches/bleeding_edge/src/x64/code-stubs-x64.cc
=======================================
--- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Fri Nov 16 00:54:01
2012
+++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Wed Nov 21 23:05:20
2012
@@ -7381,12 +7381,7 @@
ASSERT(!address.is(r0));
__ Move(address, regs_.address());
__ Move(r0, regs_.object());
- if (mode == INCREMENTAL_COMPACTION) {
- __ Move(r1, address);
- } else {
- ASSERT(mode == INCREMENTAL);
- __ ldr(r1, MemOperand(address, 0));
- }
+ __ Move(r1, address);
__ mov(r2, Operand(ExternalReference::isolate_address()));
AllowExternalCallThatCantCauseGC scope(masm);
=======================================
--- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Thu Nov 15 05:31:27
2012
+++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Wed Nov 21 23:05:20
2012
@@ -7225,13 +7225,7 @@
int argument_count = 3;
__ PrepareCallCFunction(argument_count, regs_.scratch0());
__ mov(Operand(esp, 0 * kPointerSize), regs_.object());
- if (mode == INCREMENTAL_COMPACTION) {
- __ mov(Operand(esp, 1 * kPointerSize), regs_.address()); // Slot.
- } else {
- ASSERT(mode == INCREMENTAL);
- __ mov(regs_.scratch0(), Operand(regs_.address(), 0));
- __ mov(Operand(esp, 1 * kPointerSize), regs_.scratch0()); // Value.
- }
+ __ mov(Operand(esp, 1 * kPointerSize), regs_.address()); // Slot.
__ mov(Operand(esp, 2 * kPointerSize),
Immediate(ExternalReference::isolate_address()));
=======================================
--- /branches/bleeding_edge/src/incremental-marking.cc Thu Nov 15 09:57:40
2012
+++ /branches/bleeding_edge/src/incremental-marking.cc Wed Nov 21 23:05:20
2012
@@ -78,7 +78,7 @@
void IncrementalMarking::RecordWriteFromCode(HeapObject* obj,
- Object* value,
+ Object** slot,
Isolate* isolate) {
ASSERT(obj->IsHeapObject());
IncrementalMarking* marking = isolate->heap()->incremental_marking();
@@ -94,7 +94,7 @@
MemoryChunk::kWriteBarrierCounterGranularity);
}
- marking->RecordWrite(obj, NULL, value);
+ marking->RecordWrite(obj, slot, *slot);
}
=======================================
--- /branches/bleeding_edge/src/incremental-marking.h Thu Nov 15 09:57:40
2012
+++ /branches/bleeding_edge/src/incremental-marking.h Wed Nov 21 23:05:20
2012
@@ -127,7 +127,7 @@
}
static void RecordWriteFromCode(HeapObject* obj,
- Object* value,
+ Object** slot,
Isolate* isolate);
static void RecordWriteForEvacuationFromCode(HeapObject* obj,
=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Wed Nov 21 01:54:53
2012
+++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Wed Nov 21 23:05:20
2012
@@ -7555,12 +7555,7 @@
ASSERT(!address.is(a0));
__ Move(address, regs_.address());
__ Move(a0, regs_.object());
- if (mode == INCREMENTAL_COMPACTION) {
- __ Move(a1, address);
- } else {
- ASSERT(mode == INCREMENTAL);
- __ lw(a1, MemOperand(address, 0));
- }
+ __ Move(a1, address);
__ li(a2, Operand(ExternalReference::isolate_address()));
AllowExternalCallThatCantCauseGC scope(masm);
=======================================
--- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Tue Nov 20 07:57:10
2012
+++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Wed Nov 21 23:05:20
2012
@@ -6214,13 +6214,8 @@
ASSERT(!address.is(arg1));
__ Move(address, regs_.address());
__ Move(arg1, regs_.object());
- if (mode == INCREMENTAL_COMPACTION) {
- // TODO(gc) Can we just set address arg2 in the beginning?
- __ Move(arg2, address);
- } else {
- ASSERT(mode == INCREMENTAL);
- __ movq(arg2, Operand(address, 0));
- }
+ // TODO(gc) Can we just set address arg2 in the beginning?
+ __ Move(arg2, address);
__ LoadAddress(arg3, ExternalReference::isolate_address());
int argument_count = 3;
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev