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

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

Issue 974963002: 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/arm/code-stubs-arm.cc ('k') | src/ia32/code-stubs-ia32.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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_ARM64 7 #if V8_TARGET_ARCH_ARM64
8 8
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 4998 matching lines...) Expand 10 before | Expand all | Expand 10 after
5009 CreateArrayDispatch<ArrayNArgumentsConstructorStub>(masm, mode); 5009 CreateArrayDispatch<ArrayNArgumentsConstructorStub>(masm, mode);
5010 } else { 5010 } else {
5011 UNREACHABLE(); 5011 UNREACHABLE();
5012 } 5012 }
5013 } 5013 }
5014 5014
5015 5015
5016 void ArrayConstructorStub::Generate(MacroAssembler* masm) { 5016 void ArrayConstructorStub::Generate(MacroAssembler* masm) {
5017 ASM_LOCATION("ArrayConstructorStub::Generate"); 5017 ASM_LOCATION("ArrayConstructorStub::Generate");
5018 // ----------- S t a t e ------------- 5018 // ----------- S t a t e -------------
5019 // -- x0 : argc (only if argument_count() is ANY or MORE_THAN_ONE) 5019 // -- x0 : argc (only if argument_count() == ANY)
5020 // -- x1 : constructor 5020 // -- x1 : constructor
5021 // -- x2 : AllocationSite or undefined 5021 // -- x2 : AllocationSite or undefined
5022 // -- x3 : original constructor 5022 // -- x3 : original constructor
5023 // -- sp[0] : last argument 5023 // -- sp[0] : return address
5024 // -- sp[4] : last argument
5024 // ----------------------------------- 5025 // -----------------------------------
5025 Register constructor = x1; 5026 Register constructor = x1;
5026 Register allocation_site = x2; 5027 Register allocation_site = x2;
5027 Register original_constructor = x3; 5028 Register original_constructor = x3;
5028 5029
5029 if (FLAG_debug_code) { 5030 if (FLAG_debug_code) {
5030 // The array construct code is only set for the global and natives 5031 // The array construct code is only set for the global and natives
5031 // builtin Array functions which always have maps. 5032 // builtin Array functions which always have maps.
5032 5033
5033 Label unexpected_map, map_ok; 5034 Label unexpected_map, map_ok;
(...skipping 23 matching lines...) Expand all
5057 5058
5058 __ Ldrsw(kind, 5059 __ Ldrsw(kind,
5059 UntagSmiFieldMemOperand(allocation_site, 5060 UntagSmiFieldMemOperand(allocation_site,
5060 AllocationSite::kTransitionInfoOffset)); 5061 AllocationSite::kTransitionInfoOffset));
5061 __ And(kind, kind, AllocationSite::ElementsKindBits::kMask); 5062 __ And(kind, kind, AllocationSite::ElementsKindBits::kMask);
5062 GenerateDispatchToArrayStub(masm, DONT_OVERRIDE); 5063 GenerateDispatchToArrayStub(masm, DONT_OVERRIDE);
5063 5064
5064 __ Bind(&no_info); 5065 __ Bind(&no_info);
5065 GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES); 5066 GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
5066 5067
5067 // Subclassing support.
5068 __ Bind(&subclassing); 5068 __ Bind(&subclassing);
5069 __ Push(constructor, original_constructor); 5069 __ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
5070 // Adjust argc.
5071 switch (argument_count()) {
5072 case ANY:
5073 case MORE_THAN_ONE:
5074 __ add(x0, x0, Operand(2));
5075 break;
5076 case NONE:
5077 __ Mov(x0, Operand(2));
5078 break;
5079 case ONE:
5080 __ Mov(x0, Operand(3));
5081 break;
5082 }
5083 __ JumpToExternalReference(
5084 ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()));
5085 } 5070 }
5086 5071
5087 5072
5088 void InternalArrayConstructorStub::GenerateCase( 5073 void InternalArrayConstructorStub::GenerateCase(
5089 MacroAssembler* masm, ElementsKind kind) { 5074 MacroAssembler* masm, ElementsKind kind) {
5090 Label zero_case, n_case; 5075 Label zero_case, n_case;
5091 Register argc = x0; 5076 Register argc = x0;
5092 5077
5093 __ Cbz(argc, &zero_case); 5078 __ Cbz(argc, &zero_case);
5094 __ CompareAndBranch(argc, 1, ne, &n_case); 5079 __ CompareAndBranch(argc, 1, ne, &n_case);
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
5518 kStackUnwindSpace, NULL, spill_offset, 5503 kStackUnwindSpace, NULL, spill_offset,
5519 MemOperand(fp, 6 * kPointerSize), NULL); 5504 MemOperand(fp, 6 * kPointerSize), NULL);
5520 } 5505 }
5521 5506
5522 5507
5523 #undef __ 5508 #undef __
5524 5509
5525 } } // namespace v8::internal 5510 } } // namespace v8::internal
5526 5511
5527 #endif // V8_TARGET_ARCH_ARM64 5512 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/code-stubs-arm.cc ('k') | src/ia32/code-stubs-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698