Index: src/lithium.cc |
diff --git a/src/lithium.cc b/src/lithium.cc |
index 43d690c0c74c827225ffd711970603d4f5ea538d..cd072acb561ba21bbc201dbfabb3ca498da2abff 100644 |
--- a/src/lithium.cc |
+++ b/src/lithium.cc |
@@ -416,10 +416,11 @@ Representation LChunk::LookupLiteralRepresentation( |
static void AddWeakObjectToCodeDependency(Isolate* isolate, |
Handle<Object> object, |
Handle<Code> code) { |
+ Handle<WeakCell> cell = Code::WeakCellFor(code); |
Heap* heap = isolate->heap(); |
heap->EnsureWeakObjectToCodeTable(); |
Handle<DependentCode> dep(heap->LookupWeakObjectToCodeDependency(object)); |
- dep = DependentCode::Insert(dep, DependentCode::kWeakCodeGroup, code); |
+ dep = DependentCode::InsertWeakCode(dep, DependentCode::kWeakCodeGroup, cell); |
heap->AddWeakObjectToCodeDependency(object, dep); |
} |
@@ -469,6 +470,9 @@ void LChunk::RegisterWeakObjectsInOptimizedCode(Handle<Code> code) const { |
void LChunk::CommitDependencies(Handle<Code> code) const { |
+ if (!code->is_optimized_code()) return; |
+ HandleScope scope(isolate()); |
+ |
for (MapSet::const_iterator it = deprecation_dependencies_.begin(), |
iend = deprecation_dependencies_.end(); it != iend; ++it) { |
Handle<Map> map = *it; |
@@ -486,7 +490,7 @@ void LChunk::CommitDependencies(Handle<Code> code) const { |
} |
info_->CommitDependencies(code); |
- if (code->is_optimized_code()) RegisterWeakObjectsInOptimizedCode(code); |
+ RegisterWeakObjectsInOptimizedCode(code); |
} |