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

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: 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') | src/ast.h » ('J')
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 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
1921 if (expr->is_compound()) { 1916 if (expr->is_compound()) {
1922 // We need the receiver both on the stack and in the register. 1917 // We need the receiver both on the stack and in the register.
1923 VisitForStackValue(property->obj()); 1918 VisitForStackValue(property->obj());
1924 __ Peek(LoadDescriptor::ReceiverRegister(), 0); 1919 __ Peek(LoadDescriptor::ReceiverRegister(), 0);
1925 } else { 1920 } else {
1926 VisitForStackValue(property->obj()); 1921 VisitForStackValue(property->obj());
1927 } 1922 }
1928 break; 1923 break;
1929 case NAMED_SUPER_PROPERTY: 1924 case NAMED_SUPER_PROPERTY:
1930 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1925 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1931 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1926 VisitForAccumulatorValue(
1927 property->obj()->AsSuperReference()->home_object_var());
1932 __ Push(result_register()); 1928 __ Push(result_register());
1933 if (expr->is_compound()) { 1929 if (expr->is_compound()) {
1934 const Register scratch = x10; 1930 const Register scratch = x10;
1935 __ Peek(scratch, kPointerSize); 1931 __ Peek(scratch, kPointerSize);
1936 __ Push(scratch, result_register()); 1932 __ Push(scratch, result_register());
1937 } 1933 }
1938 break; 1934 break;
1939 case KEYED_SUPER_PROPERTY: 1935 case KEYED_SUPER_PROPERTY:
1940 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1936 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1941 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1937 VisitForStackValue(
1942 __ Push(result_register()); 1938 property->obj()->AsSuperReference()->home_object_var());
1943 VisitForAccumulatorValue(property->key()); 1939 VisitForAccumulatorValue(property->key());
1944 __ Push(result_register()); 1940 __ Push(result_register());
1945 if (expr->is_compound()) { 1941 if (expr->is_compound()) {
1946 const Register scratch1 = x10; 1942 const Register scratch1 = x10;
1947 const Register scratch2 = x11; 1943 const Register scratch2 = x11;
1948 __ Peek(scratch1, 2 * kPointerSize); 1944 __ Peek(scratch1, 2 * kPointerSize);
1949 __ Peek(scratch2, kPointerSize); 1945 __ Peek(scratch2, kPointerSize);
1950 __ Push(scratch1, scratch2, result_register()); 1946 __ Push(scratch1, scratch2, result_register());
1951 } 1947 }
1952 break; 1948 break;
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
2288 __ Mov(StoreDescriptor::ReceiverRegister(), x0); 2284 __ Mov(StoreDescriptor::ReceiverRegister(), x0);
2289 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. 2285 __ Pop(StoreDescriptor::ValueRegister()); // Restore value.
2290 __ Mov(StoreDescriptor::NameRegister(), 2286 __ Mov(StoreDescriptor::NameRegister(),
2291 Operand(prop->key()->AsLiteral()->value())); 2287 Operand(prop->key()->AsLiteral()->value()));
2292 CallStoreIC(); 2288 CallStoreIC();
2293 break; 2289 break;
2294 } 2290 }
2295 case NAMED_SUPER_PROPERTY: { 2291 case NAMED_SUPER_PROPERTY: {
2296 __ Push(x0); 2292 __ Push(x0);
2297 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2293 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2298 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2294 VisitForAccumulatorValue(
2295 prop->obj()->AsSuperReference()->home_object_var());
2299 // stack: value, this; x0: home_object 2296 // stack: value, this; x0: home_object
2300 Register scratch = x10; 2297 Register scratch = x10;
2301 Register scratch2 = x11; 2298 Register scratch2 = x11;
2302 __ mov(scratch, result_register()); // home_object 2299 __ mov(scratch, result_register()); // home_object
2303 __ Peek(x0, kPointerSize); // value 2300 __ Peek(x0, kPointerSize); // value
2304 __ Peek(scratch2, 0); // this 2301 __ Peek(scratch2, 0); // this
2305 __ Poke(scratch2, kPointerSize); // this 2302 __ Poke(scratch2, kPointerSize); // this
2306 __ Poke(scratch, 0); // home_object 2303 __ Poke(scratch, 0); // home_object
2307 // stack: this, home_object; x0: value 2304 // stack: this, home_object; x0: value
2308 EmitNamedSuperPropertyStore(prop); 2305 EmitNamedSuperPropertyStore(prop);
2309 break; 2306 break;
2310 } 2307 }
2311 case KEYED_SUPER_PROPERTY: { 2308 case KEYED_SUPER_PROPERTY: {
2312 __ Push(x0); 2309 __ Push(x0);
2313 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2310 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2314 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2311 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
2315 __ Push(result_register());
2316 VisitForAccumulatorValue(prop->key()); 2312 VisitForAccumulatorValue(prop->key());
2317 Register scratch = x10; 2313 Register scratch = x10;
2318 Register scratch2 = x11; 2314 Register scratch2 = x11;
2319 __ Peek(scratch2, 2 * kPointerSize); // value 2315 __ Peek(scratch2, 2 * kPointerSize); // value
2320 // stack: value, this, home_object; x0: key, x11: value 2316 // stack: value, this, home_object; x0: key, x11: value
2321 __ Peek(scratch, kPointerSize); // this 2317 __ Peek(scratch, kPointerSize); // this
2322 __ Poke(scratch, 2 * kPointerSize); 2318 __ Poke(scratch, 2 * kPointerSize);
2323 __ Peek(scratch, 0); // home_object 2319 __ Peek(scratch, 0); // home_object
2324 __ Poke(scratch, kPointerSize); 2320 __ Poke(scratch, kPointerSize);
2325 __ Poke(x0, 0); 2321 __ Poke(x0, 0);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
2520 Comment cmnt(masm_, "[ Property"); 2516 Comment cmnt(masm_, "[ Property");
2521 Expression* key = expr->key(); 2517 Expression* key = expr->key();
2522 2518
2523 if (key->IsPropertyName()) { 2519 if (key->IsPropertyName()) {
2524 if (!expr->IsSuperAccess()) { 2520 if (!expr->IsSuperAccess()) {
2525 VisitForAccumulatorValue(expr->obj()); 2521 VisitForAccumulatorValue(expr->obj());
2526 __ Move(LoadDescriptor::ReceiverRegister(), x0); 2522 __ Move(LoadDescriptor::ReceiverRegister(), x0);
2527 EmitNamedPropertyLoad(expr); 2523 EmitNamedPropertyLoad(expr);
2528 } else { 2524 } else {
2529 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2525 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2530 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2526 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2531 __ Push(result_register());
2532 EmitNamedSuperPropertyLoad(expr); 2527 EmitNamedSuperPropertyLoad(expr);
2533 } 2528 }
2534 } else { 2529 } else {
2535 if (!expr->IsSuperAccess()) { 2530 if (!expr->IsSuperAccess()) {
2536 VisitForStackValue(expr->obj()); 2531 VisitForStackValue(expr->obj());
2537 VisitForAccumulatorValue(expr->key()); 2532 VisitForAccumulatorValue(expr->key());
2538 __ Move(LoadDescriptor::NameRegister(), x0); 2533 __ Move(LoadDescriptor::NameRegister(), x0);
2539 __ Pop(LoadDescriptor::ReceiverRegister()); 2534 __ Pop(LoadDescriptor::ReceiverRegister());
2540 EmitKeyedPropertyLoad(expr); 2535 EmitKeyedPropertyLoad(expr);
2541 } else { 2536 } else {
2542 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2537 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2543 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2538 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2544 __ Push(result_register());
2545 VisitForStackValue(expr->key()); 2539 VisitForStackValue(expr->key());
2546 EmitKeyedSuperPropertyLoad(expr); 2540 EmitKeyedSuperPropertyLoad(expr);
2547 } 2541 }
2548 } 2542 }
2549 PrepareForBailoutForId(expr->LoadId(), TOS_REG); 2543 PrepareForBailoutForId(expr->LoadId(), TOS_REG);
2550 context()->Plug(x0); 2544 context()->Plug(x0);
2551 } 2545 }
2552 2546
2553 2547
2554 void FullCodeGenerator::CallIC(Handle<Code> code, 2548 void FullCodeGenerator::CallIC(Handle<Code> code,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2603 Property* prop = callee->AsProperty(); 2597 Property* prop = callee->AsProperty();
2604 DCHECK(prop->IsSuperAccess()); 2598 DCHECK(prop->IsSuperAccess());
2605 2599
2606 SetSourcePosition(prop->position()); 2600 SetSourcePosition(prop->position());
2607 Literal* key = prop->key()->AsLiteral(); 2601 Literal* key = prop->key()->AsLiteral();
2608 DCHECK(!key->value()->IsSmi()); 2602 DCHECK(!key->value()->IsSmi());
2609 2603
2610 // Load the function from the receiver. 2604 // Load the function from the receiver.
2611 const Register scratch = x10; 2605 const Register scratch = x10;
2612 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); 2606 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference();
2613 EmitLoadHomeObject(super_ref); 2607 VisitForStackValue(super_ref->home_object_var());
2614 __ Push(x0);
2615 VisitForAccumulatorValue(super_ref->this_var()); 2608 VisitForAccumulatorValue(super_ref->this_var());
2616 __ Push(x0); 2609 __ Push(x0);
2617 __ Peek(scratch, kPointerSize); 2610 __ Peek(scratch, kPointerSize);
2618 __ Push(x0, scratch); 2611 __ Push(x0, scratch);
2619 __ Push(key->value()); 2612 __ Push(key->value());
2620 2613
2621 // Stack here: 2614 // Stack here:
2622 // - home_object 2615 // - home_object
2623 // - this (receiver) 2616 // - this (receiver)
2624 // - this (receiver) <-- LoadFromSuper will pop here and below. 2617 // - this (receiver) <-- LoadFromSuper will pop here and below.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2663 Expression* callee = expr->expression(); 2656 Expression* callee = expr->expression();
2664 DCHECK(callee->IsProperty()); 2657 DCHECK(callee->IsProperty());
2665 Property* prop = callee->AsProperty(); 2658 Property* prop = callee->AsProperty();
2666 DCHECK(prop->IsSuperAccess()); 2659 DCHECK(prop->IsSuperAccess());
2667 2660
2668 SetSourcePosition(prop->position()); 2661 SetSourcePosition(prop->position());
2669 2662
2670 // Load the function from the receiver. 2663 // Load the function from the receiver.
2671 const Register scratch = x10; 2664 const Register scratch = x10;
2672 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference(); 2665 SuperReference* super_ref = callee->AsProperty()->obj()->AsSuperReference();
2673 EmitLoadHomeObject(super_ref); 2666 VisitForStackValue(super_ref->home_object_var());
2674 __ Push(x0);
2675 VisitForAccumulatorValue(super_ref->this_var()); 2667 VisitForAccumulatorValue(super_ref->this_var());
2676 __ Push(x0); 2668 __ Push(x0);
2677 __ Peek(scratch, kPointerSize); 2669 __ Peek(scratch, kPointerSize);
2678 __ Push(x0, scratch); 2670 __ Push(x0, scratch);
2679 VisitForStackValue(prop->key()); 2671 VisitForStackValue(prop->key());
2680 2672
2681 // Stack here: 2673 // Stack here:
2682 // - home_object 2674 // - home_object
2683 // - this (receiver) 2675 // - this (receiver)
2684 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. 2676 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below.
(...skipping 1815 matching lines...) Expand 10 before | Expand all | Expand 10 after
4500 case NAMED_PROPERTY: { 4492 case NAMED_PROPERTY: {
4501 // Put the object both on the stack and in the register. 4493 // Put the object both on the stack and in the register.
4502 VisitForStackValue(prop->obj()); 4494 VisitForStackValue(prop->obj());
4503 __ Peek(LoadDescriptor::ReceiverRegister(), 0); 4495 __ Peek(LoadDescriptor::ReceiverRegister(), 0);
4504 EmitNamedPropertyLoad(prop); 4496 EmitNamedPropertyLoad(prop);
4505 break; 4497 break;
4506 } 4498 }
4507 4499
4508 case NAMED_SUPER_PROPERTY: { 4500 case NAMED_SUPER_PROPERTY: {
4509 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4501 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4510 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4502 VisitForAccumulatorValue(
4503 prop->obj()->AsSuperReference()->home_object_var());
4511 __ Push(result_register()); 4504 __ Push(result_register());
4512 const Register scratch = x10; 4505 const Register scratch = x10;
4513 __ Peek(scratch, kPointerSize); 4506 __ Peek(scratch, kPointerSize);
4514 __ Push(scratch, result_register()); 4507 __ Push(scratch, result_register());
4515 EmitNamedSuperPropertyLoad(prop); 4508 EmitNamedSuperPropertyLoad(prop);
4516 break; 4509 break;
4517 } 4510 }
4518 4511
4519 case KEYED_SUPER_PROPERTY: { 4512 case KEYED_SUPER_PROPERTY: {
4520 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4513 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4521 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4514 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
4522 __ Push(result_register());
4523 VisitForAccumulatorValue(prop->key()); 4515 VisitForAccumulatorValue(prop->key());
4524 __ Push(result_register()); 4516 __ Push(result_register());
4525 const Register scratch1 = x10; 4517 const Register scratch1 = x10;
4526 const Register scratch2 = x11; 4518 const Register scratch2 = x11;
4527 __ Peek(scratch1, 2 * kPointerSize); 4519 __ Peek(scratch1, 2 * kPointerSize);
4528 __ Peek(scratch2, kPointerSize); 4520 __ Peek(scratch2, kPointerSize);
4529 __ Push(scratch1, scratch2, result_register()); 4521 __ Push(scratch1, scratch2, result_register());
4530 EmitKeyedSuperPropertyLoad(prop); 4522 EmitKeyedSuperPropertyLoad(prop);
4531 break; 4523 break;
4532 } 4524 }
(...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
5453 } 5445 }
5454 } 5446 }
5455 5447
5456 return INTERRUPT; 5448 return INTERRUPT;
5457 } 5449 }
5458 5450
5459 5451
5460 } } // namespace v8::internal 5452 } } // namespace v8::internal
5461 5453
5462 #endif // V8_TARGET_ARCH_ARM64 5454 #endif // V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/ast.h » ('j') | src/ast.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698