| Index: src/mark-compact.cc
|
| ===================================================================
|
| --- src/mark-compact.cc (revision 6800)
|
| +++ src/mark-compact.cc (working copy)
|
| @@ -30,8 +30,10 @@
|
| #include "compilation-cache.h"
|
| #include "execution.h"
|
| #include "heap-profiler.h"
|
| +#include "gdb-jit.h"
|
| #include "global-handles.h"
|
| #include "ic-inl.h"
|
| +#include "liveobjectlist-inl.h"
|
| #include "mark-compact.h"
|
| #include "objects-visiting.h"
|
| #include "stub-cache.h"
|
| @@ -175,6 +177,12 @@
|
| if (!Heap::map_space()->MapPointersEncodable())
|
| compacting_collection_ = false;
|
| if (FLAG_collect_maps) CreateBackPointers();
|
| +#ifdef ENABLE_GDB_JIT_INTERFACE
|
| + if (FLAG_gdbjit) {
|
| + // If GDBJIT interface is active disable compaction.
|
| + compacting_collection_ = false;
|
| + }
|
| +#endif
|
|
|
| PagedSpaces spaces;
|
| for (PagedSpace* space = spaces.next();
|
| @@ -1680,6 +1688,9 @@
|
| size,
|
| false);
|
| } else {
|
| + // Process the dead object before we write a NULL into its header.
|
| + LiveObjectList::ProcessNonLive(object);
|
| +
|
| size = object->Size();
|
| // Mark dead objects in the new space with null in their map field.
|
| Memory::Address_at(current) = NULL;
|
| @@ -1700,6 +1711,7 @@
|
|
|
| // Update roots.
|
| Heap::IterateRoots(&updating_visitor, VISIT_ALL_IN_SCAVENGE);
|
| + LiveObjectList::IterateElements(&updating_visitor);
|
|
|
| {
|
| StoreBufferRebuildScope scope;
|
| @@ -2103,6 +2115,11 @@
|
|
|
|
|
| void MarkCompactCollector::ReportDeleteIfNeeded(HeapObject* obj) {
|
| +#ifdef ENABLE_GDB_JIT_INTERFACE
|
| + if (obj->IsCode()) {
|
| + GDBJITInterface::RemoveCode(reinterpret_cast<Code*>(obj));
|
| + }
|
| +#endif
|
| #ifdef ENABLE_LOGGING_AND_PROFILING
|
| if (obj->IsCode()) {
|
| PROFILE(CodeDeleteEvent(obj->address()));
|
|
|