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

Side by Side Diff: src/x64/full-codegen-x64.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, 7 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
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_X64 7 #if V8_TARGET_ARCH_X64
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 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 } else if (FLAG_debug_code) { 227 } else if (FLAG_debug_code) {
228 Label done; 228 Label done;
229 __ JumpIfInNewSpace(rsi, rax, &done, Label::kNear); 229 __ JumpIfInNewSpace(rsi, rax, &done, Label::kNear);
230 __ Abort(kExpectedNewSpaceObject); 230 __ Abort(kExpectedNewSpaceObject);
231 __ bind(&done); 231 __ bind(&done);
232 } 232 }
233 } 233 }
234 } 234 }
235 } 235 }
236 236
237 Variable* home_object_var = scope()->home_object_var();
238 if (home_object_var != nullptr) {
239 __ Push(rdi);
240 }
241
237 ArgumentsAccessStub::HasNewTarget has_new_target = 242 ArgumentsAccessStub::HasNewTarget has_new_target =
238 IsSubclassConstructor(info->function()->kind()) 243 IsSubclassConstructor(info->function()->kind())
239 ? ArgumentsAccessStub::HAS_NEW_TARGET 244 ? ArgumentsAccessStub::HAS_NEW_TARGET
240 : ArgumentsAccessStub::NO_NEW_TARGET; 245 : ArgumentsAccessStub::NO_NEW_TARGET;
241 246
242 // Possibly allocate RestParameters 247 // Possibly allocate RestParameters
243 int rest_index; 248 int rest_index;
244 Variable* rest_param = scope()->rest_parameter(&rest_index); 249 Variable* rest_param = scope()->rest_parameter(&rest_index);
245 if (rest_param) { 250 if (rest_param) {
246 Comment cmnt(masm_, "[ Allocate rest parameter array"); 251 Comment cmnt(masm_, "[ Allocate rest parameter array");
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; 299 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW;
295 } else { 300 } else {
296 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; 301 type = ArgumentsAccessStub::NEW_SLOPPY_FAST;
297 } 302 }
298 ArgumentsAccessStub stub(isolate(), type, has_new_target); 303 ArgumentsAccessStub stub(isolate(), type, has_new_target);
299 __ CallStub(&stub); 304 __ CallStub(&stub);
300 305
301 SetVar(arguments, rax, rbx, rdx); 306 SetVar(arguments, rax, rbx, rdx);
302 } 307 }
303 308
309 // Possibly set up a local binding to the [[HomeObject]].
310 // Variable* home_object_var = scope()->home_object_var();
311 if (home_object_var != nullptr) {
312 Comment cmnt(masm_, "[ Home object");
313 __ Pop(LoadDescriptor::ReceiverRegister());
314 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol());
315 __ Move(LoadDescriptor::NameRegister(), home_object_symbol);
316 __ Move(LoadDescriptor::SlotRegister(),
317 SmiFromSlot(function()->HomeObjectFeedbackSlot()));
318 CallLoadIC(NOT_CONTEXTUAL);
319
320 SetVar(home_object_var, rax, rbx, rdx);
321 }
322
304 if (FLAG_trace) { 323 if (FLAG_trace) {
305 __ CallRuntime(Runtime::kTraceEnter, 0); 324 __ CallRuntime(Runtime::kTraceEnter, 0);
306 } 325 }
307 326
308 // Visit the declarations and body unless there is an illegal 327 // Visit the declarations and body unless there is an illegal
309 // redeclaration. 328 // redeclaration.
310 if (scope()->HasIllegalRedeclaration()) { 329 if (scope()->HasIllegalRedeclaration()) {
311 Comment cmnt(masm_, "[ Declarations"); 330 Comment cmnt(masm_, "[ Declarations");
312 scope()->VisitIllegalRedeclaration(this); 331 scope()->VisitIllegalRedeclaration(this);
313 332
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after
1278 context()->Plug(rax); 1297 context()->Plug(rax);
1279 } 1298 }
1280 1299
1281 1300
1282 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { 1301 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) {
1283 Comment cmnt(masm_, "[ VariableProxy"); 1302 Comment cmnt(masm_, "[ VariableProxy");
1284 EmitVariableLoad(expr); 1303 EmitVariableLoad(expr);
1285 } 1304 }
1286 1305
1287 1306
1288 void FullCodeGenerator::EmitLoadHomeObject(SuperReference* expr) {
1289 Comment cnmt(masm_, "[ SuperReference ");
1290
1291 __ movp(LoadDescriptor::ReceiverRegister(),
1292 Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
1293
1294 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol());
1295 __ Move(LoadDescriptor::NameRegister(), home_object_symbol);
1296
1297 __ Move(LoadDescriptor::SlotRegister(),
1298 SmiFromSlot(expr->HomeObjectFeedbackSlot()));
1299 CallLoadIC(NOT_CONTEXTUAL);
1300
1301 __ Cmp(rax, isolate()->factory()->undefined_value());
1302 Label done;
1303 __ j(not_equal, &done);
1304 __ CallRuntime(Runtime::kThrowNonMethodError, 0);
1305 __ bind(&done);
1306 }
1307
1308
1309 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, 1307 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer,
1310 int offset) { 1308 int offset) {
1311 if (NeedsHomeObject(initializer)) { 1309 if (NeedsHomeObject(initializer)) {
1312 __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, 0)); 1310 __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, 0));
1313 __ Move(StoreDescriptor::NameRegister(), 1311 __ Move(StoreDescriptor::NameRegister(),
1314 isolate()->factory()->home_object_symbol()); 1312 isolate()->factory()->home_object_symbol());
1315 __ movp(StoreDescriptor::ValueRegister(), 1313 __ movp(StoreDescriptor::ValueRegister(),
1316 Operand(rsp, offset * kPointerSize)); 1314 Operand(rsp, offset * kPointerSize));
1317 CallStoreIC(); 1315 CallStoreIC();
1318 } 1316 }
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
1909 if (expr->is_compound()) { 1907 if (expr->is_compound()) {
1910 // We need the receiver both on the stack and in the register. 1908 // We need the receiver both on the stack and in the register.
1911 VisitForStackValue(property->obj()); 1909 VisitForStackValue(property->obj());
1912 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0)); 1910 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0));
1913 } else { 1911 } else {
1914 VisitForStackValue(property->obj()); 1912 VisitForStackValue(property->obj());
1915 } 1913 }
1916 break; 1914 break;
1917 case NAMED_SUPER_PROPERTY: 1915 case NAMED_SUPER_PROPERTY:
1918 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1916 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1919 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1917 VisitForAccumulatorValue(
1918 property->obj()->AsSuperReference()->home_object_var());
1920 __ Push(result_register()); 1919 __ Push(result_register());
1921 if (expr->is_compound()) { 1920 if (expr->is_compound()) {
1922 __ Push(MemOperand(rsp, kPointerSize)); 1921 __ Push(MemOperand(rsp, kPointerSize));
1923 __ Push(result_register()); 1922 __ Push(result_register());
1924 } 1923 }
1925 break; 1924 break;
1926 case KEYED_SUPER_PROPERTY: 1925 case KEYED_SUPER_PROPERTY:
1927 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1926 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1928 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1927 VisitForStackValue(
1929 __ Push(result_register()); 1928 property->obj()->AsSuperReference()->home_object_var());
1930 VisitForAccumulatorValue(property->key()); 1929 VisitForAccumulatorValue(property->key());
1931 __ Push(result_register()); 1930 __ Push(result_register());
1932 if (expr->is_compound()) { 1931 if (expr->is_compound()) {
1933 __ Push(MemOperand(rsp, 2 * kPointerSize)); 1932 __ Push(MemOperand(rsp, 2 * kPointerSize));
1934 __ Push(MemOperand(rsp, 2 * kPointerSize)); 1933 __ Push(MemOperand(rsp, 2 * kPointerSize));
1935 __ Push(result_register()); 1934 __ Push(result_register());
1936 } 1935 }
1937 break; 1936 break;
1938 case KEYED_PROPERTY: { 1937 case KEYED_PROPERTY: {
1939 if (expr->is_compound()) { 1938 if (expr->is_compound()) {
(...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after
2510 __ Move(StoreDescriptor::ReceiverRegister(), rax); 2509 __ Move(StoreDescriptor::ReceiverRegister(), rax);
2511 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. 2510 __ Pop(StoreDescriptor::ValueRegister()); // Restore value.
2512 __ Move(StoreDescriptor::NameRegister(), 2511 __ Move(StoreDescriptor::NameRegister(),
2513 prop->key()->AsLiteral()->value()); 2512 prop->key()->AsLiteral()->value());
2514 CallStoreIC(); 2513 CallStoreIC();
2515 break; 2514 break;
2516 } 2515 }
2517 case NAMED_SUPER_PROPERTY: { 2516 case NAMED_SUPER_PROPERTY: {
2518 __ Push(rax); 2517 __ Push(rax);
2519 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2518 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2520 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2519 VisitForAccumulatorValue(
2520 prop->obj()->AsSuperReference()->home_object_var());
2521 // stack: value, this; rax: home_object 2521 // stack: value, this; rax: home_object
2522 Register scratch = rcx; 2522 Register scratch = rcx;
2523 Register scratch2 = rdx; 2523 Register scratch2 = rdx;
2524 __ Move(scratch, result_register()); // home_object 2524 __ Move(scratch, result_register()); // home_object
2525 __ movp(rax, MemOperand(rsp, kPointerSize)); // value 2525 __ movp(rax, MemOperand(rsp, kPointerSize)); // value
2526 __ movp(scratch2, MemOperand(rsp, 0)); // this 2526 __ movp(scratch2, MemOperand(rsp, 0)); // this
2527 __ movp(MemOperand(rsp, kPointerSize), scratch2); // this 2527 __ movp(MemOperand(rsp, kPointerSize), scratch2); // this
2528 __ movp(MemOperand(rsp, 0), scratch); // home_object 2528 __ movp(MemOperand(rsp, 0), scratch); // home_object
2529 // stack: this, home_object; rax: value 2529 // stack: this, home_object; rax: value
2530 EmitNamedSuperPropertyStore(prop); 2530 EmitNamedSuperPropertyStore(prop);
2531 break; 2531 break;
2532 } 2532 }
2533 case KEYED_SUPER_PROPERTY: { 2533 case KEYED_SUPER_PROPERTY: {
2534 __ Push(rax); 2534 __ Push(rax);
2535 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2535 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2536 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2536 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
2537 __ Push(result_register());
2538 VisitForAccumulatorValue(prop->key()); 2537 VisitForAccumulatorValue(prop->key());
2539 Register scratch = rcx; 2538 Register scratch = rcx;
2540 Register scratch2 = rdx; 2539 Register scratch2 = rdx;
2541 __ movp(scratch2, MemOperand(rsp, 2 * kPointerSize)); // value 2540 __ movp(scratch2, MemOperand(rsp, 2 * kPointerSize)); // value
2542 // stack: value, this, home_object; rax: key, rdx: value 2541 // stack: value, this, home_object; rax: key, rdx: value
2543 __ movp(scratch, MemOperand(rsp, kPointerSize)); // this 2542 __ movp(scratch, MemOperand(rsp, kPointerSize)); // this
2544 __ movp(MemOperand(rsp, 2 * kPointerSize), scratch); 2543 __ movp(MemOperand(rsp, 2 * kPointerSize), scratch);
2545 __ movp(scratch, MemOperand(rsp, 0)); // home_object 2544 __ movp(scratch, MemOperand(rsp, 0)); // home_object
2546 __ movp(MemOperand(rsp, kPointerSize), scratch); 2545 __ movp(MemOperand(rsp, kPointerSize), scratch);
2547 __ movp(MemOperand(rsp, 0), rax); 2546 __ movp(MemOperand(rsp, 0), rax);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
2735 Expression* key = expr->key(); 2734 Expression* key = expr->key();
2736 2735
2737 if (key->IsPropertyName()) { 2736 if (key->IsPropertyName()) {
2738 if (!expr->IsSuperAccess()) { 2737 if (!expr->IsSuperAccess()) {
2739 VisitForAccumulatorValue(expr->obj()); 2738 VisitForAccumulatorValue(expr->obj());
2740 DCHECK(!rax.is(LoadDescriptor::ReceiverRegister())); 2739 DCHECK(!rax.is(LoadDescriptor::ReceiverRegister()));
2741 __ movp(LoadDescriptor::ReceiverRegister(), rax); 2740 __ movp(LoadDescriptor::ReceiverRegister(), rax);
2742 EmitNamedPropertyLoad(expr); 2741 EmitNamedPropertyLoad(expr);
2743 } else { 2742 } else {
2744 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2743 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2745 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2744 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2746 __ Push(result_register());
2747 EmitNamedSuperPropertyLoad(expr); 2745 EmitNamedSuperPropertyLoad(expr);
2748 } 2746 }
2749 } else { 2747 } else {
2750 if (!expr->IsSuperAccess()) { 2748 if (!expr->IsSuperAccess()) {
2751 VisitForStackValue(expr->obj()); 2749 VisitForStackValue(expr->obj());
2752 VisitForAccumulatorValue(expr->key()); 2750 VisitForAccumulatorValue(expr->key());
2753 __ Move(LoadDescriptor::NameRegister(), rax); 2751 __ Move(LoadDescriptor::NameRegister(), rax);
2754 __ Pop(LoadDescriptor::ReceiverRegister()); 2752 __ Pop(LoadDescriptor::ReceiverRegister());
2755 EmitKeyedPropertyLoad(expr); 2753 EmitKeyedPropertyLoad(expr);
2756 } else { 2754 } else {
2757 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2755 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2758 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2756 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2759 __ Push(result_register());
2760 VisitForStackValue(expr->key()); 2757 VisitForStackValue(expr->key());
2761 EmitKeyedSuperPropertyLoad(expr); 2758 EmitKeyedSuperPropertyLoad(expr);
2762 } 2759 }
2763 } 2760 }
2764 PrepareForBailoutForId(expr->LoadId(), TOS_REG); 2761 PrepareForBailoutForId(expr->LoadId(), TOS_REG);
2765 context()->Plug(rax); 2762 context()->Plug(rax);
2766 } 2763 }
2767 2764
2768 2765
2769 void FullCodeGenerator::CallIC(Handle<Code> code, 2766 void FullCodeGenerator::CallIC(Handle<Code> code,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2808 Expression* callee = expr->expression(); 2805 Expression* callee = expr->expression();
2809 DCHECK(callee->IsProperty()); 2806 DCHECK(callee->IsProperty());
2810 Property* prop = callee->AsProperty(); 2807 Property* prop = callee->AsProperty();
2811 DCHECK(prop->IsSuperAccess()); 2808 DCHECK(prop->IsSuperAccess());
2812 2809
2813 SetSourcePosition(prop->position()); 2810 SetSourcePosition(prop->position());
2814 Literal* key = prop->key()->AsLiteral(); 2811 Literal* key = prop->key()->AsLiteral();
2815 DCHECK(!key->value()->IsSmi()); 2812 DCHECK(!key->value()->IsSmi());
2816 // Load the function from the receiver. 2813 // Load the function from the receiver.
2817 SuperReference* super_ref = prop->obj()->AsSuperReference(); 2814 SuperReference* super_ref = prop->obj()->AsSuperReference();
2818 EmitLoadHomeObject(super_ref); 2815 VisitForStackValue(super_ref->home_object_var());
2819 __ Push(rax);
2820 VisitForAccumulatorValue(super_ref->this_var()); 2816 VisitForAccumulatorValue(super_ref->this_var());
2821 __ Push(rax); 2817 __ Push(rax);
2822 __ Push(rax); 2818 __ Push(rax);
2823 __ Push(Operand(rsp, kPointerSize * 2)); 2819 __ Push(Operand(rsp, kPointerSize * 2));
2824 __ Push(key->value()); 2820 __ Push(key->value());
2825 2821
2826 // Stack here: 2822 // Stack here:
2827 // - home_object 2823 // - home_object
2828 // - this (receiver) 2824 // - this (receiver)
2829 // - this (receiver) <-- LoadFromSuper will pop here and below. 2825 // - this (receiver) <-- LoadFromSuper will pop here and below.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2866 2862
2867 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { 2863 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) {
2868 Expression* callee = expr->expression(); 2864 Expression* callee = expr->expression();
2869 DCHECK(callee->IsProperty()); 2865 DCHECK(callee->IsProperty());
2870 Property* prop = callee->AsProperty(); 2866 Property* prop = callee->AsProperty();
2871 DCHECK(prop->IsSuperAccess()); 2867 DCHECK(prop->IsSuperAccess());
2872 2868
2873 SetSourcePosition(prop->position()); 2869 SetSourcePosition(prop->position());
2874 // Load the function from the receiver. 2870 // Load the function from the receiver.
2875 SuperReference* super_ref = prop->obj()->AsSuperReference(); 2871 SuperReference* super_ref = prop->obj()->AsSuperReference();
2876 EmitLoadHomeObject(super_ref); 2872 VisitForStackValue(super_ref->home_object_var());
2877 __ Push(rax);
2878 VisitForAccumulatorValue(super_ref->this_var()); 2873 VisitForAccumulatorValue(super_ref->this_var());
2879 __ Push(rax); 2874 __ Push(rax);
2880 __ Push(rax); 2875 __ Push(rax);
2881 __ Push(Operand(rsp, kPointerSize * 2)); 2876 __ Push(Operand(rsp, kPointerSize * 2));
2882 VisitForStackValue(prop->key()); 2877 VisitForStackValue(prop->key());
2883 2878
2884 // Stack here: 2879 // Stack here:
2885 // - home_object 2880 // - home_object
2886 // - this (receiver) 2881 // - this (receiver)
2887 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. 2882 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below.
(...skipping 1873 matching lines...) Expand 10 before | Expand all | Expand 10 after
4761 switch (assign_type) { 4756 switch (assign_type) {
4762 case NAMED_PROPERTY: { 4757 case NAMED_PROPERTY: {
4763 VisitForStackValue(prop->obj()); 4758 VisitForStackValue(prop->obj());
4764 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0)); 4759 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0));
4765 EmitNamedPropertyLoad(prop); 4760 EmitNamedPropertyLoad(prop);
4766 break; 4761 break;
4767 } 4762 }
4768 4763
4769 case NAMED_SUPER_PROPERTY: { 4764 case NAMED_SUPER_PROPERTY: {
4770 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4765 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4771 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4766 VisitForAccumulatorValue(
4767 prop->obj()->AsSuperReference()->home_object_var());
4772 __ Push(result_register()); 4768 __ Push(result_register());
4773 __ Push(MemOperand(rsp, kPointerSize)); 4769 __ Push(MemOperand(rsp, kPointerSize));
4774 __ Push(result_register()); 4770 __ Push(result_register());
4775 EmitNamedSuperPropertyLoad(prop); 4771 EmitNamedSuperPropertyLoad(prop);
4776 break; 4772 break;
4777 } 4773 }
4778 4774
4779 case KEYED_SUPER_PROPERTY: { 4775 case KEYED_SUPER_PROPERTY: {
4780 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4776 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4781 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4777 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
4782 __ Push(result_register());
4783 VisitForAccumulatorValue(prop->key()); 4778 VisitForAccumulatorValue(prop->key());
4784 __ Push(result_register()); 4779 __ Push(result_register());
4785 __ Push(MemOperand(rsp, 2 * kPointerSize)); 4780 __ Push(MemOperand(rsp, 2 * kPointerSize));
4786 __ Push(MemOperand(rsp, 2 * kPointerSize)); 4781 __ Push(MemOperand(rsp, 2 * kPointerSize));
4787 __ Push(result_register()); 4782 __ Push(result_register());
4788 EmitKeyedSuperPropertyLoad(prop); 4783 EmitKeyedSuperPropertyLoad(prop);
4789 break; 4784 break;
4790 } 4785 }
4791 4786
4792 case KEYED_PROPERTY: { 4787 case KEYED_PROPERTY: {
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
5367 DCHECK_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), 5362 DCHECK_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(),
5368 Assembler::target_address_at(call_target_address, 5363 Assembler::target_address_at(call_target_address,
5369 unoptimized_code)); 5364 unoptimized_code));
5370 return OSR_AFTER_STACK_CHECK; 5365 return OSR_AFTER_STACK_CHECK;
5371 } 5366 }
5372 5367
5373 5368
5374 } } // namespace v8::internal 5369 } } // namespace v8::internal
5375 5370
5376 #endif // V8_TARGET_ARCH_X64 5371 #endif // V8_TARGET_ARCH_X64
OLDNEW
« src/ast.h ('K') | « src/scopes.cc ('k') | test/cctest/test-compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698