Skip to content

Commit 7bf9ef1

Browse files
dslomovCommit bot
authored andcommitted
Revert of Implement subclassing Arrays. (patchset v8#7 id:110001 of https://codereview.chromium.org/975463002/)
Reason for revert: Arm buildre complains again (why v8_linux_arm_dbg does not complain?) Original issue's description: > Implement subclassing Arrays. > > R=mvstanton@chromium.org,arv@chromium.org,rossberg@chromium.org > BUG=v8:3930 > LOG=Y > > Committed: https://crrev.com/6898da1a28d64d1fb2962804ba566f6d618ffc70 > Cr-Commit-Position: refs/heads/master@{#26960} > > Committed: https://crrev.com/8d29cc11a56e77297792fe100986a80b65de0051 > Cr-Commit-Position: refs/heads/master@{#26963} TBR=arv@chromium.org,mvstanton@chromium.org,rossberg@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:3930 Review URL: https://codereview.chromium.org/974963002 Cr-Commit-Position: refs/heads/master@{#26965}
1 parent 32979cf commit 7bf9ef1

10 files changed

Lines changed: 48 additions & 309 deletions

File tree

src/arm/code-stubs-arm.cc

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4639,25 +4639,7 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
46394639
GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
46404640

46414641
__ bind(&subclassing);
4642-
__ push(r1);
4643-
__ push(r3);
4644-
4645-
// Adjust argc.
4646-
switch (argument_count()) {
4647-
case ANY:
4648-
case MORE_THAN_ONE:
4649-
__ add(r0, r0, Operand(2));
4650-
break;
4651-
case NONE:
4652-
__ mov(r0, Operand(2));
4653-
break;
4654-
case ONE:
4655-
__ mov(r0, Operand(3));
4656-
break;
4657-
}
4658-
4659-
__ JumpToExternalReference(
4660-
ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()));
4642+
__ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
46614643
}
46624644

46634645

src/arm64/code-stubs-arm64.cc

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5016,11 +5016,12 @@ void ArrayConstructorStub::GenerateDispatchToArrayStub(
50165016
void ArrayConstructorStub::Generate(MacroAssembler* masm) {
50175017
ASM_LOCATION("ArrayConstructorStub::Generate");
50185018
// ----------- 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)
50205020
// -- x1 : constructor
50215021
// -- x2 : AllocationSite or undefined
50225022
// -- x3 : original constructor
5023-
// -- sp[0] : last argument
5023+
// -- sp[0] : return address
5024+
// -- sp[4] : last argument
50245025
// -----------------------------------
50255026
Register constructor = x1;
50265027
Register allocation_site = x2;
@@ -5064,24 +5065,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
50645065
__ Bind(&no_info);
50655066
GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
50665067

5067-
// Subclassing support.
50685068
__ Bind(&subclassing);
5069-
__ Push(constructor, original_constructor);
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()));
5069+
__ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
50855070
}
50865071

50875072

src/ia32/code-stubs-ia32.cc

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4646,7 +4646,7 @@ void ArrayConstructorStub::GenerateDispatchToArrayStub(
46464646

46474647
void ArrayConstructorStub::Generate(MacroAssembler* masm) {
46484648
// ----------- S t a t e -------------
4649-
// -- eax : argc (only if argument_count() is ANY or MORE_THAN_ONE)
4649+
// -- eax : argc (only if argument_count() == ANY)
46504650
// -- ebx : AllocationSite or undefined
46514651
// -- edi : constructor
46524652
// -- edx : Original constructor
@@ -4680,6 +4680,9 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
46804680
__ cmp(ebx, isolate()->factory()->undefined_value());
46814681
__ j(equal, &no_info);
46824682

4683+
__ cmp(edx, edi);
4684+
__ j(not_equal, &subclassing);
4685+
46834686
// Only look at the lower 16 bits of the transition info.
46844687
__ mov(edx, FieldOperand(ebx, AllocationSite::kTransitionInfoOffset));
46854688
__ SmiUntag(edx);
@@ -4690,29 +4693,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
46904693
__ bind(&no_info);
46914694
GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
46924695

4693-
// Subclassing.
46944696
__ bind(&subclassing);
4695-
__ pop(ecx); // return address.
4696-
__ push(edi);
4697-
__ push(edx);
4698-
4699-
// Adjust argc.
4700-
switch (argument_count()) {
4701-
case ANY:
4702-
case MORE_THAN_ONE:
4703-
__ add(eax, Immediate(2));
4704-
break;
4705-
case NONE:
4706-
__ mov(eax, Immediate(2));
4707-
break;
4708-
case ONE:
4709-
__ mov(eax, Immediate(3));
4710-
break;
4711-
}
4712-
4713-
__ push(ecx);
4714-
__ JumpToExternalReference(
4715-
ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()));
4697+
__ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
47164698
}
47174699

47184700

src/mips/code-stubs-mips.cc

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4797,11 +4797,12 @@ void ArrayConstructorStub::GenerateDispatchToArrayStub(
47974797

47984798
void ArrayConstructorStub::Generate(MacroAssembler* masm) {
47994799
// ----------- 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)
48014801
// -- a1 : constructor
48024802
// -- a2 : AllocationSite or undefined
48034803
// -- a3 : Original constructor
4804-
// -- sp[0] : last argument
4804+
// -- sp[0] : return address
4805+
// -- sp[4] : last argument
48054806
// -----------------------------------
48064807

48074808
if (FLAG_debug_code) {
@@ -4839,28 +4840,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
48394840
__ bind(&no_info);
48404841
GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
48414842

4842-
// Subclassing.
48434843
__ bind(&subclassing);
4844-
__ Push(a1);
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()));
4844+
__ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
48644845
}
48654846

48664847

src/mips64/code-stubs-mips64.cc

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4844,7 +4844,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
48444844
// -- a1 : constructor
48454845
// -- a2 : AllocationSite or undefined
48464846
// -- a3 : original constructor
4847-
// -- sp[0] : last argument
4847+
// -- sp[0] : return address
4848+
// -- sp[4] : last argument
48484849
// -----------------------------------
48494850

48504851
if (FLAG_debug_code) {
@@ -4882,28 +4883,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
48824883
__ bind(&no_info);
48834884
GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
48844885

4885-
// Subclassing.
48864886
__ bind(&subclassing);
4887-
__ Push(a1);
4888-
__ Push(a3);
4889-
4890-
// Adjust argc.
4891-
switch (argument_count()) {
4892-
case ANY:
4893-
case MORE_THAN_ONE:
4894-
__ li(at, Operand(2));
4895-
__ addu(a0, a0, at);
4896-
break;
4897-
case NONE:
4898-
__ li(a0, Operand(2));
4899-
break;
4900-
case ONE:
4901-
__ li(a0, Operand(3));
4902-
break;
4903-
}
4904-
4905-
__ JumpToExternalReference(
4906-
ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()));
4887+
__ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
49074888
}
49084889

49094890

src/runtime/runtime-array.cc

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,6 @@ RUNTIME_FUNCTION(Runtime_GetArrayKeys) {
10381038

10391039
static Object* ArrayConstructorCommon(Isolate* isolate,
10401040
Handle<JSFunction> constructor,
1041-
Handle<JSFunction> original_constructor,
10421041
Handle<AllocationSite> site,
10431042
Arguments* caller_args) {
10441043
Factory* factory = isolate->factory();
@@ -1110,19 +1109,6 @@ static Object* ArrayConstructorCommon(Isolate* isolate,
11101109
// We must mark the allocationsite as un-inlinable.
11111110
site->SetDoNotInlineCall();
11121111
}
1113-
1114-
// Set up the prototoype using original function.
1115-
// TODO(dslomov): instead of setting the __proto__,
1116-
// use and cache the correct map.
1117-
if (*original_constructor != *constructor) {
1118-
if (original_constructor->has_instance_prototype()) {
1119-
Handle<Object> prototype =
1120-
handle(original_constructor->instance_prototype(), isolate);
1121-
RETURN_FAILURE_ON_EXCEPTION(
1122-
isolate, JSObject::SetPrototype(array, prototype, false));
1123-
}
1124-
}
1125-
11261112
return *array;
11271113
}
11281114

@@ -1156,20 +1142,7 @@ RUNTIME_FUNCTION(Runtime_ArrayConstructor) {
11561142
DCHECK(!site->SitePointsToLiteral());
11571143
}
11581144

1159-
return ArrayConstructorCommon(isolate, constructor, constructor, site,
1160-
caller_args);
1161-
}
1162-
1163-
1164-
RUNTIME_FUNCTION(Runtime_ArrayConstructorWithSubclassing) {
1165-
HandleScope scope(isolate);
1166-
DCHECK(args.length() >= 2);
1167-
int args_length = args.length();
1168-
CONVERT_ARG_HANDLE_CHECKED(JSFunction, constructor, args_length - 2);
1169-
CONVERT_ARG_HANDLE_CHECKED(JSFunction, original_constructor, args_length - 1);
1170-
Arguments caller_args(args_length - 2, args.arguments());
1171-
return ArrayConstructorCommon(isolate, constructor, original_constructor,
1172-
Handle<AllocationSite>::null(), &caller_args);
1145+
return ArrayConstructorCommon(isolate, constructor, site, caller_args);
11731146
}
11741147

11751148

@@ -1188,7 +1161,7 @@ RUNTIME_FUNCTION(Runtime_InternalArrayConstructor) {
11881161
DCHECK(arg_count == caller_args->length());
11891162
}
11901163
#endif
1191-
return ArrayConstructorCommon(isolate, constructor, constructor,
1164+
return ArrayConstructorCommon(isolate, constructor,
11921165
Handle<AllocationSite>::null(), caller_args);
11931166
}
11941167

src/runtime/runtime.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,6 @@ namespace internal {
465465
\
466466
/* Arrays */ \
467467
F(ArrayConstructor, -1, 1) \
468-
F(ArrayConstructorWithSubclassing, -1, 1) \
469468
F(InternalArrayConstructor, -1, 1) \
470469
\
471470
/* Literals */ \

src/x64/code-stubs-x64.cc

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4636,30 +4636,8 @@ void ArrayConstructorStub::Generate(MacroAssembler* masm) {
46364636
__ bind(&no_info);
46374637
GenerateDispatchToArrayStub(masm, DISABLE_ALLOCATION_SITES);
46384638

4639-
// Subclassing
46404639
__ bind(&subclassing);
4641-
__ Pop(rcx); // return address.
4642-
__ Push(rdi);
4643-
__ Push(rdx);
4644-
4645-
// Adjust argc.
4646-
switch (argument_count()) {
4647-
case ANY:
4648-
case MORE_THAN_ONE:
4649-
__ addp(rax, Immediate(2));
4650-
break;
4651-
case NONE:
4652-
__ movp(rax, Immediate(2));
4653-
break;
4654-
case ONE:
4655-
__ movp(rax, Immediate(3));
4656-
break;
4657-
}
4658-
4659-
__ Push(rcx);
4660-
__ JumpToExternalReference(
4661-
ExternalReference(Runtime::kArrayConstructorWithSubclassing, isolate()),
4662-
1);
4640+
__ TailCallRuntime(Runtime::kThrowArrayNotSubclassableError, 0, 1);
46634641
}
46644642

46654643

0 commit comments

Comments
 (0)