| Index: src/code-stubs-hydrogen.cc
|
| diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
|
| index 83a994b1c31c5c16f68854f01016b2923b586dc9..d971c3c84050d2e4568862740ea0eba1ed19defb 100644
|
| --- a/src/code-stubs-hydrogen.cc
|
| +++ b/src/code-stubs-hydrogen.cc
|
| @@ -450,6 +450,10 @@ Handle<Code> FastCloneShallowObjectStub::GenerateCode() {
|
|
|
| template <>
|
| HValue* CodeStubGraphBuilder<CreateAllocationSiteStub>::BuildCodeStub() {
|
| + // This stub is performance sensitive, the generated code must be tuned
|
| + // so that it doesn't build an eager frame.
|
| + info()->MarkMustNotHaveEagerFrame();
|
| +
|
| HValue* size = Add<HConstant>(AllocationSite::kSize);
|
| HInstruction* object = Add<HAllocate>(size, HType::JSObject(), TENURED,
|
| JS_OBJECT_TYPE);
|
| @@ -523,6 +527,36 @@ Handle<Code> CreateAllocationSiteStub::GenerateCode() {
|
|
|
|
|
| template <>
|
| +HValue* CodeStubGraphBuilder<CreateWeakCellStub>::BuildCodeStub() {
|
| + // This stub is performance sensitive, the generated code must be tuned
|
| + // so that it doesn't build an eager frame.
|
| + info()->MarkMustNotHaveEagerFrame();
|
| +
|
| + HValue* size = Add<HConstant>(WeakCell::kSize);
|
| + HInstruction* object =
|
| + Add<HAllocate>(size, HType::JSObject(), TENURED, JS_OBJECT_TYPE);
|
| +
|
| + Handle<Map> weak_cell_map = isolate()->factory()->weak_cell_map();
|
| + AddStoreMapConstant(object, weak_cell_map);
|
| +
|
| + HInstruction* value = GetParameter(CreateWeakCellDescriptor::kValueIndex);
|
| + Add<HStoreNamedField>(object, HObjectAccess::ForWeakCellValue(), value);
|
| + Add<HStoreNamedField>(object, HObjectAccess::ForWeakCellNext(),
|
| + graph()->GetConstantUndefined());
|
| +
|
| + HInstruction* feedback_vector =
|
| + GetParameter(CreateWeakCellDescriptor::kVectorIndex);
|
| + HInstruction* slot = GetParameter(CreateWeakCellDescriptor::kSlotIndex);
|
| + Add<HStoreKeyed>(feedback_vector, slot, object, FAST_ELEMENTS,
|
| + INITIALIZING_STORE);
|
| + return graph()->GetConstant0();
|
| +}
|
| +
|
| +
|
| +Handle<Code> CreateWeakCellStub::GenerateCode() { return DoGenerateCode(this); }
|
| +
|
| +
|
| +template <>
|
| HValue* CodeStubGraphBuilder<LoadScriptContextFieldStub>::BuildCodeStub() {
|
| int context_index = casted_stub()->context_index();
|
| int slot_index = casted_stub()->slot_index();
|
|
|