Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: src/mips/code-stubs-mips.cc

Issue 976693002: Revert of Implement subclassing Arrays. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ia32/code-stubs-ia32.cc ('k') | src/mips64/code-stubs-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_MIPS 7 #if V8_TARGET_ARCH_MIPS
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 4779 matching lines...) Expand 10 before | Expand all | Expand 10 after
4790 } else if (argument_count() == MORE_THAN_ONE) { 4790 } else if (argument_count() == MORE_THAN_ONE) {
4791 CreateArrayDispatch<ArrayNArgumentsConstructorStub>(masm, mode); 4791 CreateArrayDispatch<ArrayNArgumentsConstructorStub>(masm, mode);
4792 } else { 4792 } else {
4793 UNREACHABLE(); 4793 UNREACHABLE();
4794 } 4794 }
4795 } 4795 }
4796 4796
4797 4797
4798 void ArrayConstructorStub::Generate(MacroAssembler* masm) { 4798 void ArrayConstructorStub::Generate(MacroAssembler* masm) {
4799 // ----------- S t a t e ------------- 4799 // ----------- S t a t e -------------
4800 // -- a0 : argc (only if argument_count() is ANY or MORE_THAN_ONE) 4800 // -- a0 : argc (only if argument_count() == ANY)
4801 // -- a1 : constructor 4801 // -- a1 : constructor
4802 // -- a2 : AllocationSite or undefined 4802 // -- a2 : AllocationSite or undefined
4803 // -- a3 : Original constructor 4803 // -- a3 : Original constructor
4804 // -- sp[0] : last argument 4804 // -- sp[0] : return address
4805 // -- sp[4] : last argument
4805 // ----------------------------------- 4806 // -----------------------------------
4806 4807
4807 if (FLAG_debug_code) { 4808 if (FLAG_debug_code) {
4808 // The array construct code is only set for the global and natives 4809 // The array construct code is only set for the global and natives
4809 // builtin Array functions which always have maps. 4810 // builtin Array functions which always have maps.
4810 4811
4811 // Initial map for the builtin Array function should be a map. 4812 // Initial map for the builtin Array function should be a map.
4812 __ lw(t0, FieldMemOperand(a1, JSFunction::kPrototypeOrInitialMapOffset)); 4813 __ lw(t0, FieldMemOperand(a1, JSFunction::kPrototypeOrInitialMapOffset));
4813 // Will both indicate a NULL and a Smi. 4814 // Will both indicate a NULL and a Smi.
4814 __ SmiTst(t0, at); 4815 __ SmiTst(t0, at);
(...skipping 17 matching lines...) Expand all
4832 4833
4833 __ lw(a3, FieldMemOperand(a2, AllocationSite::kTransitionInfoOffset)); 4834 __ lw(a3, FieldMemOperand(a2, AllocationSite::kTransitionInfoOffset));
4834 __ SmiUntag(a3); 4835 __ SmiUntag(a3);
4835 STATIC_ASSERT(AllocationSite::ElementsKindBits::kShift == 0); 4836 STATIC_ASSERT(AllocationSite::ElementsKindBits::kShift == 0);
4836 __ And(a3, a3, Operand(AllocationSite::ElementsKindBits::kMask)); 4837 __ And(a3, a3, Operand(AllocationSite::ElementsKindBits::kMask));
4837 GenerateDispatchToArrayStub(masm, DONT_OVERRIDE); 4838 GenerateDispatchToArrayStub(masm, DONT_OVERRIDE);
4838 4839
4839 __ bind(&no_info); 4840 __ bind(&no_info);
4840 GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES); 4841 GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
4841 4842
4842 // Subclassing.
4843 __ bind(&subclassing); 4843 __ bind(&subclassing);
4844 __ Push(a1); 4844 __ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
4845 __ Push(a3);
4846
4847 // Adjust argc.
4848 switch (argument_count()) {
4849 case ANY:
4850 case MORE_THAN_ONE:
4851 __ li(at, Operand(2));
4852 __ addu(a0, a0, at);
4853 break;
4854 case NONE:
4855 __ li(a0, Operand(2));
4856 break;
4857 case ONE:
4858 __ li(a0, Operand(3));
4859 break;
4860 }
4861
4862 __ JumpToExternalReference(
4863 ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()));
4864 } 4845 }
4865 4846
4866 4847
4867 void InternalArrayConstructorStub::GenerateCase( 4848 void InternalArrayConstructorStub::GenerateCase(
4868 MacroAssembler* masm, ElementsKind kind) { 4849 MacroAssembler* masm, ElementsKind kind) {
4869 4850
4870 InternalArrayNoArgumentConstructorStub stub0(isolate(), kind); 4851 InternalArrayNoArgumentConstructorStub stub0(isolate(), kind);
4871 __ TailCallStub(&stub0, lo, a0, Operand(1)); 4852 __ TailCallStub(&stub0, lo, a0, Operand(1));
4872 4853
4873 InternalArrayNArgumentsConstructorStub stubN(isolate(), kind); 4854 InternalArrayNArgumentsConstructorStub stubN(isolate(), kind);
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
5241 kStackUnwindSpace, kInvalidStackOffset, 5222 kStackUnwindSpace, kInvalidStackOffset,
5242 MemOperand(fp, 6 * kPointerSize), NULL); 5223 MemOperand(fp, 6 * kPointerSize), NULL);
5243 } 5224 }
5244 5225
5245 5226
5246 #undef __ 5227 #undef __
5247 5228
5248 } } // namespace v8::internal 5229 } } // namespace v8::internal
5249 5230
5250 #endif // V8_TARGET_ARCH_MIPS 5231 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/ia32/code-stubs-ia32.cc ('k') | src/mips64/code-stubs-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698