| Index: src/code-stubs-hydrogen.cc
|
| diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
|
| index 50337ad6344ef3e4d97a0dc04cee8a8080d49046..320799db4a79128173b5f1c657a623372e4d134b 100644
|
| --- a/src/code-stubs-hydrogen.cc
|
| +++ b/src/code-stubs-hydrogen.cc
|
| @@ -550,79 +550,6 @@ Handle<Code> FastCloneShallowArrayStub::GenerateCode() {
|
|
|
|
|
| template <>
|
| -HValue* CodeStubGraphBuilder<FastCloneShallowObjectStub>::BuildCodeStub() {
|
| - HValue* undefined = graph()->GetConstantUndefined();
|
| - HValue* closure = GetParameter(0);
|
| - HValue* literal_index = GetParameter(1);
|
| -
|
| - HValue* literals_array = Add<HLoadNamedField>(
|
| - closure, nullptr, HObjectAccess::ForLiteralsPointer());
|
| -
|
| - HInstruction* allocation_site = Add<HLoadKeyed>(
|
| - literals_array, literal_index, nullptr, nullptr, FAST_ELEMENTS,
|
| - NEVER_RETURN_HOLE, LiteralsArray::kOffsetToFirstLiteral - kHeapObjectTag);
|
| -
|
| - IfBuilder checker(this);
|
| - checker.IfNot<HCompareObjectEqAndBranch, HValue*>(allocation_site,
|
| - undefined);
|
| - checker.And();
|
| -
|
| - HObjectAccess access = HObjectAccess::ForAllocationSiteOffset(
|
| - AllocationSite::kTransitionInfoOffset);
|
| - HInstruction* boilerplate =
|
| - Add<HLoadNamedField>(allocation_site, nullptr, access);
|
| -
|
| - int length = casted_stub()->length();
|
| - if (length == 0) {
|
| - // Empty objects have some slack added to them.
|
| - length = JSObject::kInitialGlobalObjectUnusedPropertiesCount;
|
| - }
|
| - int size = JSObject::kHeaderSize + length * kPointerSize;
|
| - int object_size = size;
|
| - if (FLAG_allocation_site_pretenuring) {
|
| - size += AllocationMemento::kSize;
|
| - }
|
| -
|
| - HValue* boilerplate_map =
|
| - Add<HLoadNamedField>(boilerplate, nullptr, HObjectAccess::ForMap());
|
| - HValue* boilerplate_size = Add<HLoadNamedField>(
|
| - boilerplate_map, nullptr, HObjectAccess::ForMapInstanceSize());
|
| - HValue* size_in_words = Add<HConstant>(object_size >> kPointerSizeLog2);
|
| - checker.If<HCompareNumericAndBranch>(boilerplate_size,
|
| - size_in_words, Token::EQ);
|
| - checker.Then();
|
| -
|
| - HValue* size_in_bytes = Add<HConstant>(size);
|
| -
|
| - HInstruction* object = Add<HAllocate>(size_in_bytes, HType::JSObject(),
|
| - NOT_TENURED, JS_OBJECT_TYPE);
|
| -
|
| - for (int i = 0; i < object_size; i += kPointerSize) {
|
| - HObjectAccess access = HObjectAccess::ForObservableJSObjectOffset(i);
|
| - Add<HStoreNamedField>(object, access,
|
| - Add<HLoadNamedField>(boilerplate, nullptr, access));
|
| - }
|
| -
|
| - DCHECK(FLAG_allocation_site_pretenuring || (size == object_size));
|
| - if (FLAG_allocation_site_pretenuring) {
|
| - BuildCreateAllocationMemento(
|
| - object, Add<HConstant>(object_size), allocation_site);
|
| - }
|
| -
|
| - environment()->Push(object);
|
| - checker.ElseDeopt(Deoptimizer::kUninitializedBoilerplateInFastClone);
|
| - checker.End();
|
| -
|
| - return environment()->Pop();
|
| -}
|
| -
|
| -
|
| -Handle<Code> FastCloneShallowObjectStub::GenerateCode() {
|
| - return DoGenerateCode(this);
|
| -}
|
| -
|
| -
|
| -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.
|
|
|