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

Unified Diff: src/serialize.cc

Issue 8382031: Revert 9763 after build bot failures. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 2 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/serialize.cc
===================================================================
--- src/serialize.cc (revision 9763)
+++ src/serialize.cc (working copy)
@@ -759,10 +759,6 @@
int source_space,
Address current_object_address) {
Isolate* const isolate = isolate_;
- bool write_barrier_needed = (current_object_address != NULL &&
- source_space != NEW_SPACE &&
- source_space != CELL_SPACE &&
- source_space == OLD_DATA_SPACE);
Lasse Reichstein 2011/10/25 08:40:34 Should the last one have been != ?
while (current < limit) {
int data = source_->Get();
switch (data) {
@@ -782,18 +778,28 @@
if (where == kNewObject && how == kPlain && within == kStartOfObject) {\
ASSIGN_DEST_SPACE(space_number) \
ReadObject(space_number, dest_space, current); \
- emit_write_barrier = (space_number == NEW_SPACE); \
+ emit_write_barrier = (space_number == NEW_SPACE && \
+ source_space != NEW_SPACE && \
+ source_space != CELL_SPACE); \
} else { \
Object* new_object = NULL; /* May not be a real Object pointer. */ \
if (where == kNewObject) { \
ASSIGN_DEST_SPACE(space_number) \
ReadObject(space_number, dest_space, &new_object); \
} else if (where == kRootArray) { \
- emit_write_barrier = true; \
+ if (source_space != CELL_SPACE && \
+ source_space != CODE_SPACE && \
+ source_space != OLD_DATA_SPACE) { \
+ emit_write_barrier = true; \
+ } \
int root_id = source_->GetInt(); \
new_object = isolate->heap()->roots_array_start()[root_id]; \
} else if (where == kPartialSnapshotCache) { \
- emit_write_barrier = true; \
+ if (source_space != CELL_SPACE && \
+ source_space != CODE_SPACE && \
+ source_space != OLD_DATA_SPACE) { \
+ emit_write_barrier = true; \
+ } \
int cache_index = source_->GetInt(); \
new_object = isolate->serialize_partial_snapshot_cache() \
[cache_index]; \
@@ -803,12 +809,16 @@
Decode(reference_id); \
new_object = reinterpret_cast<Object*>(address); \
} else if (where == kBackref) { \
- emit_write_barrier = (space_number == NEW_SPACE); \
+ emit_write_barrier = (space_number == NEW_SPACE && \
+ source_space != NEW_SPACE && \
+ source_space != CELL_SPACE); \
new_object = GetAddressFromEnd(data & kSpaceMask); \
} else { \
ASSERT(where == kFromStart); \
if (offset_from_start == kUnknownOffsetFromStart) { \
- emit_write_barrier = (space_number == NEW_SPACE); \
+ emit_write_barrier = (space_number == NEW_SPACE && \
+ source_space != NEW_SPACE && \
+ source_space != CELL_SPACE); \
new_object = GetAddressFromStart(data & kSpaceMask); \
} else { \
Address object_address = pages_[space_number][0] + \
@@ -835,14 +845,14 @@
*current = new_object; \
} \
} \
- if (emit_write_barrier && write_barrier_needed) { \
+ if (emit_write_barrier && current_object_address != NULL) { \
Address current_address = reinterpret_cast<Address>(current); \
isolate->heap()->RecordWrite( \
current_object_address, \
static_cast<int>(current_address - current_object_address)); \
} \
if (!current_was_incremented) { \
- current++; \
+ current++; /* Increment current if it wasn't done above. */ \
} \
break; \
} \
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698