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

Side by Side Diff: src/objects.cc

Issue 6088012: Separate markbits from heap object map words into bitmaps. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: profiler related code reenabled Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 21 matching lines...) Expand all
32 #include "bootstrapper.h" 32 #include "bootstrapper.h"
33 #include "codegen.h" 33 #include "codegen.h"
34 #include "debug.h" 34 #include "debug.h"
35 #include "deoptimizer.h" 35 #include "deoptimizer.h"
36 #include "execution.h" 36 #include "execution.h"
37 #include "full-codegen.h" 37 #include "full-codegen.h"
38 #include "hydrogen.h" 38 #include "hydrogen.h"
39 #include "objects-inl.h" 39 #include "objects-inl.h"
40 #include "objects-visiting.h" 40 #include "objects-visiting.h"
41 #include "macro-assembler.h" 41 #include "macro-assembler.h"
42 #include "mark-compact.h"
42 #include "safepoint-table.h" 43 #include "safepoint-table.h"
43 #include "scanner-base.h" 44 #include "scanner-base.h"
44 #include "scopeinfo.h" 45 #include "scopeinfo.h"
45 #include "string-stream.h" 46 #include "string-stream.h"
46 #include "utils.h" 47 #include "utils.h"
47 #include "vm-state-inl.h" 48 #include "vm-state-inl.h"
48 49
49 #ifdef ENABLE_DISASSEMBLER 50 #ifdef ENABLE_DISASSEMBLER
50 #include "disasm.h" 51 #include "disasm.h"
51 #include "disassembler.h" 52 #include "disassembler.h"
(...skipping 5313 matching lines...) Expand 10 before | Expand all | Expand 10 after
5365 // If the pair (value, details) is a map transition, 5366 // If the pair (value, details) is a map transition,
5366 // check if the target is live. If not, null the descriptor. 5367 // check if the target is live. If not, null the descriptor.
5367 // Also drop the back pointer for that map transition, so that this 5368 // Also drop the back pointer for that map transition, so that this
5368 // map is not reached again by following a back pointer from a 5369 // map is not reached again by following a back pointer from a
5369 // non-live object. 5370 // non-live object.
5370 PropertyDetails details(Smi::cast(contents->get(i + 1))); 5371 PropertyDetails details(Smi::cast(contents->get(i + 1)));
5371 if (details.type() == MAP_TRANSITION || 5372 if (details.type() == MAP_TRANSITION ||
5372 details.type() == CONSTANT_TRANSITION) { 5373 details.type() == CONSTANT_TRANSITION) {
5373 Map* target = reinterpret_cast<Map*>(contents->get(i)); 5374 Map* target = reinterpret_cast<Map*>(contents->get(i));
5374 ASSERT(target->IsHeapObject()); 5375 ASSERT(target->IsHeapObject());
5375 if (!target->IsMarked()) { 5376 if (!Marking::IsMarked(target)) {
5376 ASSERT(target->IsMap()); 5377 ASSERT(target->IsMap());
5377 contents->set_unchecked(i + 1, NullDescriptorDetails); 5378 contents->set_unchecked(i + 1, NullDescriptorDetails);
5378 contents->set_null_unchecked(i); 5379 contents->set_null_unchecked(i);
5379 ASSERT(target->prototype() == this || 5380 ASSERT(target->prototype() == this ||
5380 target->prototype() == real_prototype); 5381 target->prototype() == real_prototype);
5381 // Getter prototype() is read-only, set_prototype() has side effects. 5382 // Getter prototype() is read-only, set_prototype() has side effects.
5382 *RawField(target, Map::kPrototypeOffset) = real_prototype; 5383 *RawField(target, Map::kPrototypeOffset) = real_prototype;
5383 } 5384 }
5384 } 5385 }
5385 } 5386 }
(...skipping 4480 matching lines...) Expand 10 before | Expand all | Expand 10 after
9866 if (break_point_objects()->IsUndefined()) return 0; 9867 if (break_point_objects()->IsUndefined()) return 0;
9867 // Single beak point. 9868 // Single beak point.
9868 if (!break_point_objects()->IsFixedArray()) return 1; 9869 if (!break_point_objects()->IsFixedArray()) return 1;
9869 // Multiple break points. 9870 // Multiple break points.
9870 return FixedArray::cast(break_point_objects())->length(); 9871 return FixedArray::cast(break_point_objects())->length();
9871 } 9872 }
9872 #endif 9873 #endif
9873 9874
9874 9875
9875 } } // namespace v8::internal 9876 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698