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

Side by Side Diff: src/arm64/full-codegen-arm64.cc

Issue 1135243004: [es6] Support super.property in eval and arrow functions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Code review cleanup Created 5 years, 6 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/full-codegen-arm.cc ('k') | src/ast.h » ('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/code-factory.h" 9 #include "src/code-factory.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 } else if (FLAG_debug_code) { 236 } else if (FLAG_debug_code) {
237 Label done; 237 Label done;
238 __ JumpIfInNewSpace(cp, &done); 238 __ JumpIfInNewSpace(cp, &done);
239 __ Abort(kExpectedNewSpaceObject); 239 __ Abort(kExpectedNewSpaceObject);
240 __ bind(&done); 240 __ bind(&done);
241 } 241 }
242 } 242 }
243 } 243 }
244 } 244 }
245 245
246 Variable* home_object_var = scope()->home_object_var();
247 if (home_object_var != nullptr) {
248 __ Push(x1);
249 }
250
246 ArgumentsAccessStub::HasNewTarget has_new_target = 251 ArgumentsAccessStub::HasNewTarget has_new_target =
247 IsSubclassConstructor(info->function()->kind()) 252 IsSubclassConstructor(info->function()->kind())
248 ? ArgumentsAccessStub::HAS_NEW_TARGET 253 ? ArgumentsAccessStub::HAS_NEW_TARGET
249 : ArgumentsAccessStub::NO_NEW_TARGET; 254 : ArgumentsAccessStub::NO_NEW_TARGET;
250 255
251 // Possibly allocate RestParameters 256 // Possibly allocate RestParameters
252 int rest_index; 257 int rest_index;
253 Variable* rest_param = scope()->rest_parameter(&rest_index); 258 Variable* rest_param = scope()->rest_parameter(&rest_index);
254 if (rest_param) { 259 if (rest_param) {
255 Comment cmnt(masm_, "[ Allocate rest parameter array"); 260 Comment cmnt(masm_, "[ Allocate rest parameter array");
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; 305 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW;
301 } else { 306 } else {
302 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; 307 type = ArgumentsAccessStub::NEW_SLOPPY_FAST;
303 } 308 }
304 ArgumentsAccessStub stub(isolate(), type, has_new_target); 309 ArgumentsAccessStub stub(isolate(), type, has_new_target);
305 __ CallStub(&stub); 310 __ CallStub(&stub);
306 311
307 SetVar(arguments, x0, x1, x2); 312 SetVar(arguments, x0, x1, x2);
308 } 313 }
309 314
315 // Possibly set up a local binding to the [[HomeObject]].
316 if (home_object_var != nullptr) {
317 Comment cmnt(masm_, "[ Home object");
318 __ Pop(LoadDescriptor::ReceiverRegister());
319 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol());
320 __ Mov(LoadDescriptor::NameRegister(), home_object_symbol);
321 __ Mov(LoadDescriptor::SlotRegister(),
322 SmiFromSlot(function()->HomeObjectFeedbackSlot()));
323 CallLoadIC(NOT_CONTEXTUAL);
324
325 SetVar(home_object_var, x0, x1, x2);
326 }
327
310 if (FLAG_trace) { 328 if (FLAG_trace) {
311 __ CallRuntime(Runtime::kTraceEnter, 0); 329 __ CallRuntime(Runtime::kTraceEnter, 0);
312 } 330 }
313 331
314
315 // Visit the declarations and body unless there is an illegal 332 // Visit the declarations and body unless there is an illegal
316 // redeclaration. 333 // redeclaration.
317 if (scope()->HasIllegalRedeclaration()) { 334 if (scope()->HasIllegalRedeclaration()) {
318 Comment cmnt(masm_, "[ Declarations"); 335 Comment cmnt(masm_, "[ Declarations");
319 scope()->VisitIllegalRedeclaration(this); 336 scope()->VisitIllegalRedeclaration(this);
320 337
321 } else { 338 } else {
322 PrepareForBailoutForId(BailoutId::FunctionEntry(), NO_REGISTERS); 339 PrepareForBailoutForId(BailoutId::FunctionEntry(), NO_REGISTERS);
323 { Comment cmnt(masm_, "[ Declarations"); 340 { Comment cmnt(masm_, "[ Declarations");
324 if (scope()->is_function_scope() && scope()->function() != NULL) { 341 if (scope()->is_function_scope() && scope()->function() != NULL) {
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 context()->Plug(x0); 1320 context()->Plug(x0);
1304 } 1321 }
1305 1322
1306 1323
1307 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { 1324 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) {
1308 Comment cmnt(masm_, "[ VariableProxy"); 1325 Comment cmnt(masm_, "[ VariableProxy");
1309 EmitVariableLoad(expr); 1326 EmitVariableLoad(expr);
1310 } 1327 }
1311 1328
1312 1329
1313 void FullCodeGenerator::EmitLoadHomeObject(SuperReference* expr) {
1314 Comment cnmt(masm_, "[ SuperReference ");
1315
1316 __ ldr(LoadDescriptor::ReceiverRegister(),
1317 MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
1318
1319 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol());
1320 __ Mov(LoadDescriptor::NameRegister(), Operand(home_object_symbol));
1321
1322 __ Mov(LoadDescriptor::SlotRegister(),
1323 SmiFromSlot(expr->HomeObjectFeedbackSlot()));
1324 CallLoadIC(NOT_CONTEXTUAL);
1325
1326 __ Mov(x10, Operand(isolate()->factory()->undefined_value()));
1327 __ cmp(x0, x10);
1328 Label done;
1329 __ b(&done, ne);
1330 __ CallRuntime(Runtime::kThrowNonMethodError, 0);
1331 __ bind(&done);
1332 }
1333
1334
1335 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, 1330 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer,
1336 int offset) { 1331 int offset) {
1337 if (NeedsHomeObject(initializer)) { 1332 if (NeedsHomeObject(initializer)) {
1338 __ Peek(StoreDescriptor::ReceiverRegister(), 0); 1333 __ Peek(StoreDescriptor::ReceiverRegister(), 0);
1339 __ Mov(StoreDescriptor::NameRegister(), 1334 __ Mov(StoreDescriptor::NameRegister(),
1340 Operand(isolate()->factory()->home_object_symbol())); 1335 Operand(isolate()->factory()->home_object_symbol()));
1341 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize); 1336 __ Peek(StoreDescriptor::ValueRegister(), offset * kPointerSize);
1342 CallStoreIC(); 1337 CallStoreIC();
1343 } 1338 }
1344 } 1339 }
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 if (expr->is_compound()) { 1939 if (expr->is_compound()) {
1945 // We need the receiver both on the stack and in the register. 1940 // We need the receiver both on the stack and in the register.
1946 VisitForStackValue(property->obj()); 1941 VisitForStackValue(property->obj());
1947 __ Peek(LoadDescriptor::ReceiverRegister(), 0); 1942 __ Peek(LoadDescriptor::ReceiverRegister(), 0);
1948 } else { 1943 } else {
1949 VisitForStackValue(property->obj()); 1944 VisitForStackValue(property->obj());
1950 } 1945 }
1951 break; 1946 break;
1952 case NAMED_SUPER_PROPERTY: 1947 case NAMED_SUPER_PROPERTY:
1953 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1948 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1954 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1949 VisitForAccumulatorValue(
1950 property->obj()->AsSuperReference()->home_object_var());
1955 __ Push(result_register()); 1951 __ Push(result_register());
1956 if (expr->is_compound()) { 1952 if (expr->is_compound()) {
1957 const Register scratch = x10; 1953 const Register scratch = x10;
1958 __ Peek(scratch, kPointerSize); 1954 __ Peek(scratch, kPointerSize);
1959 __ Push(scratch, result_register()); 1955 __ Push(scratch, result_register());
1960 } 1956 }
1961 break; 1957 break;
1962 case KEYED_SUPER_PROPERTY: 1958 case KEYED_SUPER_PROPERTY:
1963 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1959 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1964 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1960 VisitForStackValue(
1965 __ Push(result_register()); 1961 property->obj()->AsSuperReference()->home_object_var());
1966 VisitForAccumulatorValue(property->key()); 1962 VisitForAccumulatorValue(property->key());
1967 __ Push(result_register()); 1963 __ Push(result_register());
1968 if (expr->is_compound()) { 1964 if (expr->is_compound()) {
1969 const Register scratch1 = x10; 1965 const Register scratch1 = x10;
1970 const Register scratch2 = x11; 1966 const Register scratch2 = x11;
1971 __ Peek(scratch1, 2 * kPointerSize); 1967 __ Peek(scratch1, 2 * kPointerSize);
1972 __ Peek(scratch2, kPointerSize); 1968 __ Peek(scratch2, kPointerSize);
1973 __ Push(scratch1, scratch2, result_register()); 1969 __ Push(scratch1, scratch2, result_register());
1974 } 1970 }
1975 break; 1971 break;
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
2311 __ Mov(StoreDescriptor::ReceiverRegister(), x0); 2307 __ Mov(StoreDescriptor::ReceiverRegister(), x0);
2312 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. 2308 __ Pop(StoreDescriptor::ValueRegister()); // Restore value.
2313 __ Mov(StoreDescriptor::NameRegister(), 2309 __ Mov(StoreDescriptor::NameRegister(),
2314 Operand(prop->key()->AsLiteral()->value())); 2310 Operand(prop->key()->AsLiteral()->value()));
2315 CallStoreIC(); 2311 CallStoreIC();
2316 break; 2312 break;
2317 } 2313 }
2318 case NAMED_SUPER_PROPERTY: { 2314 case NAMED_SUPER_PROPERTY: {
2319 __ Push(x0); 2315 __ Push(x0);
2320 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2316 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2321 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2317 VisitForAccumulatorValue(
2318 prop->obj()->AsSuperReference()->home_object_var());
2322 // stack: value, this; x0: home_object 2319 // stack: value, this; x0: home_object
2323 Register scratch = x10; 2320 Register scratch = x10;
2324 Register scratch2 = x11; 2321 Register scratch2 = x11;
2325 __ mov(scratch, result_register()); // home_object 2322 __ mov(scratch, result_register()); // home_object
2326 __ Peek(x0, kPointerSize); // value 2323 __ Peek(x0, kPointerSize); // value
2327 __ Peek(scratch2, 0); // this 2324 __ Peek(scratch2, 0); // this
2328 __ Poke(scratch2, kPointerSize); // this 2325 __ Poke(scratch2, kPointerSize); // this
2329 __ Poke(scratch, 0); // home_object 2326 __ Poke(scratch, 0); // home_object
2330 // stack: this, home_object; x0: value 2327 // stack: this, home_object; x0: value
2331 EmitNamedSuperPropertyStore(prop); 2328 EmitNamedSuperPropertyStore(prop);
2332 break; 2329 break;
2333 } 2330 }
2334 case KEYED_SUPER_PROPERTY: { 2331 case KEYED_SUPER_PROPERTY: {
2335 __ Push(x0); 2332 __ Push(x0);
2336 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2333 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2337 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2334 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
2338 __ Push(result_register());
2339 VisitForAccumulatorValue(prop->key()); 2335 VisitForAccumulatorValue(prop->key());
2340 Register scratch = x10; 2336 Register scratch = x10;
2341 Register scratch2 = x11; 2337 Register scratch2 = x11;
2342 __ Peek(scratch2, 2 * kPointerSize); // value 2338 __ Peek(scratch2, 2 * kPointerSize); // value
2343 // stack: value, this, home_object; x0: key, x11: value 2339 // stack: value, this, home_object; x0: key, x11: value
2344 __ Peek(scratch, kPointerSize); // this 2340 __ Peek(scratch, kPointerSize); // this
2345 __ Poke(scratch, 2 * kPointerSize); 2341 __ Poke(scratch, 2 * kPointerSize);
2346 __ Peek(scratch, 0); // home_object 2342 __ Peek(scratch, 0); // home_object
2347 __ Poke(scratch, kPointerSize); 2343 __ Poke(scratch, kPointerSize);
2348 __ Poke(x0, 0); 2344 __ Poke(x0, 0);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
2543 Comment cmnt(masm_, "[ Property"); 2539 Comment cmnt(masm_, "[ Property");
2544 Expression* key = expr->key(); 2540 Expression* key = expr->key();
2545 2541
2546 if (key->IsPropertyName()) { 2542 if (key->IsPropertyName()) {
2547 if (!expr->IsSuperAccess()) { 2543 if (!expr->IsSuperAccess()) {
2548 VisitForAccumulatorValue(expr->obj()); 2544 VisitForAccumulatorValue(expr->obj());
2549 __ Move(LoadDescriptor::ReceiverRegister(), x0); 2545 __ Move(LoadDescriptor::ReceiverRegister(), x0);
2550 EmitNamedPropertyLoad(expr); 2546 EmitNamedPropertyLoad(expr);
2551 } else { 2547 } else {
2552 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2548 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2553 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2549 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2554 __ Push(result_register());
2555 EmitNamedSuperPropertyLoad(expr); 2550 EmitNamedSuperPropertyLoad(expr);
2556 } 2551 }
2557 } else { 2552 } else {
2558 if (!expr->IsSuperAccess()) { 2553 if (!expr->IsSuperAccess()) {
2559 VisitForStackValue(expr->obj()); 2554 VisitForStackValue(expr->obj());
2560 VisitForAccumulatorValue(expr->key()); 2555 VisitForAccumulatorValue(expr->key());
2561 __ Move(LoadDescriptor::NameRegister(), x0); 2556 __ Move(LoadDescriptor::NameRegister(), x0);
2562 __ Pop(LoadDescriptor::ReceiverRegister()); 2557 __ Pop(LoadDescriptor::ReceiverRegister());
2563 EmitKeyedPropertyLoad(expr); 2558 EmitKeyedPropertyLoad(expr);
2564 } else { 2559 } else {
2565 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2560 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2566 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2561 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2567 __ Push(result_register());
2568 VisitForStackValue(expr->key()); 2562 VisitForStackValue(expr->key());
2569 EmitKeyedSuperPropertyLoad(expr); 2563 EmitKeyedSuperPropertyLoad(expr);
2570 } 2564 }
2571 } 2565 }
2572 PrepareForBailoutForId(expr->LoadId(), TOS_REG); 2566 PrepareForBailoutForId(expr->LoadId(), TOS_REG);
2573 context()->Plug(x0); 2567 context()->Plug(x0);
2574 } 2568 }
2575 2569
2576 2570
2577 void FullCodeGenerator::CallIC(Handle<Code> code, 2571 void FullCodeGenerator::CallIC(Handle<Code> code,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2626 Property* prop = callee->AsProperty(); 2620 Property* prop = callee->AsProperty();
2627 DCHECK(prop->IsSuperAccess()); 2621 DCHECK(prop->IsSuperAccess());
2628 2622
2629 SetSourcePosition(prop->position()); 2623 SetSourcePosition(prop->position());
2630 Literal* key = prop->key()->AsLiteral(); 2624 Literal* key = prop->key()->AsLiteral();
2631 DCHECK(!key->value()->IsSmi()); 2625 DCHECK(!key->value()->IsSmi());
2632 2626
2633 // Load the function from the receiver. 2627 // Load the function from the receiver.
2634 const Register scratch = x10; 2628 const Register scratch = x10;
2635 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); 2629 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference();
2636 EmitLoadHomeObject(super_ref); 2630 VisitForStackValue(super_ref->home_object_var());
2637 __ Push(x0);
2638 VisitForAccumulatorValue(super_ref->this_var()); 2631 VisitForAccumulatorValue(super_ref->this_var());
2639 __ Push(x0); 2632 __ Push(x0);
2640 __ Peek(scratch, kPointerSize); 2633 __ Peek(scratch, kPointerSize);
2641 __ Push(x0, scratch); 2634 __ Push(x0, scratch);
2642 __ Push(key->value()); 2635 __ Push(key->value());
2643 2636
2644 // Stack here: 2637 // Stack here:
2645 // - home_object 2638 // - home_object
2646 // - this (receiver) 2639 // - this (receiver)
2647 // - this (receiver) <-- LoadFromSuper will pop here and below. 2640 // - this (receiver) <-- LoadFromSuper will pop here and below.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2686 Expression* callee = expr->expression(); 2679 Expression* callee = expr->expression();
2687 DCHECK(callee->IsProperty()); 2680 DCHECK(callee->IsProperty());
2688 Property* prop = callee->AsProperty(); 2681 Property* prop = callee->AsProperty();
2689 DCHECK(prop->IsSuperAccess()); 2682 DCHECK(prop->IsSuperAccess());
2690 2683
2691 SetSourcePosition(prop->position()); 2684 SetSourcePosition(prop->position());
2692 2685
2693 // Load the function from the receiver. 2686 // Load the function from the receiver.
2694 const Register scratch = x10; 2687 const Register scratch = x10;
2695 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); 2688 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference();
2696 EmitLoadHomeObject(super_ref); 2689 VisitForStackValue(super_ref->home_object_var());
2697 __ Push(x0);
2698 VisitForAccumulatorValue(super_ref->this_var()); 2690 VisitForAccumulatorValue(super_ref->this_var());
2699 __ Push(x0); 2691 __ Push(x0);
2700 __ Peek(scratch, kPointerSize); 2692 __ Peek(scratch, kPointerSize);
2701 __ Push(x0, scratch); 2693 __ Push(x0, scratch);
2702 VisitForStackValue(prop->key()); 2694 VisitForStackValue(prop->key());
2703 2695
2704 // Stack here: 2696 // Stack here:
2705 // - home_object 2697 // - home_object
2706 // - this (receiver) 2698 // - this (receiver)
2707 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. 2699 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below.
(...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after
4523 case NAMED_PROPERTY: { 4515 case NAMED_PROPERTY: {
4524 // Put the object both on the stack and in the register. 4516 // Put the object both on the stack and in the register.
4525 VisitForStackValue(prop->obj()); 4517 VisitForStackValue(prop->obj());
4526 __ Peek(LoadDescriptor::ReceiverRegister(), 0); 4518 __ Peek(LoadDescriptor::ReceiverRegister(), 0);
4527 EmitNamedPropertyLoad(prop); 4519 EmitNamedPropertyLoad(prop);
4528 break; 4520 break;
4529 } 4521 }
4530 4522
4531 case NAMED_SUPER_PROPERTY: { 4523 case NAMED_SUPER_PROPERTY: {
4532 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4524 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4533 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4525 VisitForAccumulatorValue(
4526 prop->obj()->AsSuperReference()->home_object_var());
4534 __ Push(result_register()); 4527 __ Push(result_register());
4535 const Register scratch = x10; 4528 const Register scratch = x10;
4536 __ Peek(scratch, kPointerSize); 4529 __ Peek(scratch, kPointerSize);
4537 __ Push(scratch, result_register()); 4530 __ Push(scratch, result_register());
4538 EmitNamedSuperPropertyLoad(prop); 4531 EmitNamedSuperPropertyLoad(prop);
4539 break; 4532 break;
4540 } 4533 }
4541 4534
4542 case KEYED_SUPER_PROPERTY: { 4535 case KEYED_SUPER_PROPERTY: {
4543 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4536 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4544 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4537 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
4545 __ Push(result_register());
4546 VisitForAccumulatorValue(prop->key()); 4538 VisitForAccumulatorValue(prop->key());
4547 __ Push(result_register()); 4539 __ Push(result_register());
4548 const Register scratch1 = x10; 4540 const Register scratch1 = x10;
4549 const Register scratch2 = x11; 4541 const Register scratch2 = x11;
4550 __ Peek(scratch1, 2 * kPointerSize); 4542 __ Peek(scratch1, 2 * kPointerSize);
4551 __ Peek(scratch2, kPointerSize); 4543 __ Peek(scratch2, kPointerSize);
4552 __ Push(scratch1, scratch2, result_register()); 4544 __ Push(scratch1, scratch2, result_register());
4553 EmitKeyedSuperPropertyLoad(prop); 4545 EmitKeyedSuperPropertyLoad(prop);
4554 break; 4546 break;
4555 } 4547 }
(...skipping 932 matching lines...) Expand 10 before | Expand all | Expand 10 after
5488 } 5480 }
5489 } 5481 }
5490 5482
5491 return INTERRUPT; 5483 return INTERRUPT;
5492 } 5484 }
5493 5485
5494 5486
5495 } } // namespace v8::internal 5487 } } // namespace v8::internal
5496 5488
5497 #endif // V8_TARGET_ARCH_ARM64 5489 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/ast.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698