| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index d7b93146ef2157973d627f9a866c50b4faddeb3a..8d7750ec61683deb4f038e060e3771420dc729c4 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -11642,13 +11642,9 @@ void SharedFunctionInfo::AddToOptimizedCodeMap(
|
| isolate->factory()->NewWeakCell(code.ToHandleChecked());
|
| old_code_map->set(entry + kCachedCodeOffset, *code_cell);
|
| }
|
| - if (literals->literals_count() == 0) {
|
| - old_code_map->set(entry + kLiteralsOffset, *literals);
|
| - } else {
|
| - Handle<WeakCell> literals_cell =
|
| - isolate->factory()->NewWeakCell(literals);
|
| - old_code_map->set(entry + kLiteralsOffset, *literals_cell);
|
| - }
|
| + Handle<WeakCell> literals_cell =
|
| + isolate->factory()->NewWeakCell(literals);
|
| + old_code_map->set(entry + kLiteralsOffset, *literals_cell);
|
| return;
|
| }
|
|
|
| @@ -11679,18 +11675,12 @@ void SharedFunctionInfo::AddToOptimizedCodeMap(
|
| Handle<WeakCell> code_cell =
|
| code.is_null() ? isolate->factory()->empty_weak_cell()
|
| : isolate->factory()->NewWeakCell(code.ToHandleChecked());
|
| + Handle<WeakCell> literals_cell = isolate->factory()->NewWeakCell(literals);
|
| WeakCell* context_cell = native_context->self_weak_cell();
|
|
|
| new_code_map->set(entry + kContextOffset, context_cell);
|
| new_code_map->set(entry + kCachedCodeOffset, *code_cell);
|
| -
|
| - if (literals->literals_count() == 0) {
|
| - new_code_map->set(entry + kLiteralsOffset, *literals);
|
| - } else {
|
| - Handle<WeakCell> literals_cell = isolate->factory()->NewWeakCell(literals);
|
| - new_code_map->set(entry + kLiteralsOffset, *literals_cell);
|
| - }
|
| -
|
| + new_code_map->set(entry + kLiteralsOffset, *literals_cell);
|
| new_code_map->set(entry + kOsrAstIdOffset, Smi::FromInt(osr_ast_id.ToInt()));
|
|
|
| #ifdef DEBUG
|
| @@ -11701,16 +11691,8 @@ void SharedFunctionInfo::AddToOptimizedCodeMap(
|
| DCHECK(cell->cleared() ||
|
| (cell->value()->IsCode() &&
|
| Code::cast(cell->value())->kind() == Code::OPTIMIZED_FUNCTION));
|
| - Object* lits = new_code_map->get(i + kLiteralsOffset);
|
| - if (lits->IsWeakCell()) {
|
| - cell = WeakCell::cast(lits);
|
| - DCHECK(cell->cleared() ||
|
| - (cell->value()->IsLiteralsArray() &&
|
| - LiteralsArray::cast(cell->value())->literals_count() > 0));
|
| - } else {
|
| - DCHECK(lits->IsLiteralsArray() &&
|
| - LiteralsArray::cast(lits)->literals_count() == 0);
|
| - }
|
| + cell = WeakCell::cast(new_code_map->get(i + kLiteralsOffset));
|
| + DCHECK(cell->cleared() || cell->value()->IsFixedArray());
|
| DCHECK(new_code_map->get(i + kOsrAstIdOffset)->IsSmi());
|
| }
|
| #endif
|
| @@ -13361,18 +13343,13 @@ CodeAndLiterals SharedFunctionInfo::SearchOptimizedCodeMap(
|
| } else {
|
| DCHECK_LE(entry + kEntryLength, code_map->length());
|
| WeakCell* cell = WeakCell::cast(code_map->get(entry + kCachedCodeOffset));
|
| - Object* lits = code_map->get(entry + kLiteralsOffset);
|
| - LiteralsArray* literals = nullptr;
|
| - if (lits->IsWeakCell()) {
|
| - WeakCell* literal_cell = WeakCell::cast(lits);
|
| - if (!literal_cell->cleared()) {
|
| - literals = LiteralsArray::cast(literal_cell->value());
|
| - }
|
| - } else {
|
| - literals = LiteralsArray::cast(lits);
|
| - }
|
| + WeakCell* literals_cell =
|
| + WeakCell::cast(code_map->get(entry + kLiteralsOffset));
|
| +
|
| result = {cell->cleared() ? nullptr : Code::cast(cell->value()),
|
| - literals};
|
| + literals_cell->cleared()
|
| + ? nullptr
|
| + : LiteralsArray::cast(literals_cell->value())};
|
| }
|
| }
|
| return result;
|
|
|