Chromium Code Reviews| Index: src/objects.cc |
| diff --git a/src/objects.cc b/src/objects.cc |
| index 9ec776ddafdbe4b463ce158307192bbd97948479..ab09eea1d1e4239027fb8e4663b2038998d20c55 100644 |
| --- a/src/objects.cc |
| +++ b/src/objects.cc |
| @@ -11033,6 +11033,26 @@ const char* Code::Kind2String(Kind kind) { |
| } |
| +Handle<WeakCell> Code::WeakCellFor(Handle<Code> code) { |
| + DCHECK(code->kind() == OPTIMIZED_FUNCTION); |
| + WeakCell* raw_cell = code->CachedWeakCell(); |
| + if (raw_cell != NULL) return Handle<WeakCell>(raw_cell); |
|
Yang
2015/01/26 14:55:23
Suggestion: add an assertion that the cached code
ulan
2015/01/26 15:00:07
Done. Added check in Code::CachedWeakCell
|
| + Handle<WeakCell> cell = code->GetIsolate()->factory()->NewWeakCell(code); |
| + DeoptimizationInputData::cast(code->deoptimization_data()) |
| + ->SetWeakCellCache(*cell); |
| + return cell; |
| +} |
| + |
| + |
| +WeakCell* Code::CachedWeakCell() { |
| + DCHECK(kind() == OPTIMIZED_FUNCTION); |
| + Object* weak_cell_cache = |
| + DeoptimizationInputData::cast(deoptimization_data())->WeakCellCache(); |
| + if (weak_cell_cache->IsWeakCell()) return WeakCell::cast(weak_cell_cache); |
| + return NULL; |
| +} |
| + |
| + |
| #ifdef ENABLE_DISASSEMBLER |
| void DeoptimizationInputData::DeoptimizationInputDataPrint( |