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

Side by Side Diff: src/mips64/full-codegen-mips64.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/mips/full-codegen-mips.cc ('k') | src/parser.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 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_MIPS64 7 #if V8_TARGET_ARCH_MIPS64
8 8
9 // Note on Mips implementation: 9 // Note on Mips implementation:
10 // 10 //
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 } else if (FLAG_debug_code) { 241 } else if (FLAG_debug_code) {
242 Label done; 242 Label done;
243 __ JumpIfInNewSpace(cp, a0, &done); 243 __ JumpIfInNewSpace(cp, a0, &done);
244 __ Abort(kExpectedNewSpaceObject); 244 __ Abort(kExpectedNewSpaceObject);
245 __ bind(&done); 245 __ bind(&done);
246 } 246 }
247 } 247 }
248 } 248 }
249 } 249 }
250 250
251 Variable* home_object_var = scope()->home_object_var();
252 if (home_object_var != nullptr) {
253 __ Push(a1);
254 }
255
251 ArgumentsAccessStub::HasNewTarget has_new_target = 256 ArgumentsAccessStub::HasNewTarget has_new_target =
252 IsSubclassConstructor(info->function()->kind()) 257 IsSubclassConstructor(info->function()->kind())
253 ? ArgumentsAccessStub::HAS_NEW_TARGET 258 ? ArgumentsAccessStub::HAS_NEW_TARGET
254 : ArgumentsAccessStub::NO_NEW_TARGET; 259 : ArgumentsAccessStub::NO_NEW_TARGET;
255 260
256 // Possibly allocate RestParameters 261 // Possibly allocate RestParameters
257 int rest_index; 262 int rest_index;
258 Variable* rest_param = scope()->rest_parameter(&rest_index); 263 Variable* rest_param = scope()->rest_parameter(&rest_index);
259 if (rest_param) { 264 if (rest_param) {
260 Comment cmnt(masm_, "[ Allocate rest parameter array"); 265 Comment cmnt(masm_, "[ Allocate rest parameter array");
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; 312 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW;
308 } else { 313 } else {
309 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; 314 type = ArgumentsAccessStub::NEW_SLOPPY_FAST;
310 } 315 }
311 ArgumentsAccessStub stub(isolate(), type, has_new_target); 316 ArgumentsAccessStub stub(isolate(), type, has_new_target);
312 __ CallStub(&stub); 317 __ CallStub(&stub);
313 318
314 SetVar(arguments, v0, a1, a2); 319 SetVar(arguments, v0, a1, a2);
315 } 320 }
316 321
322 // Possibly set up a local binding to the [[HomeObject]].
323 if (home_object_var != nullptr) {
324 Comment cmnt(masm_, "[ Home object");
325 __ pop(LoadDescriptor::ReceiverRegister());
326 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol());
327 __ li(LoadDescriptor::NameRegister(), home_object_symbol);
328 __ li(LoadDescriptor::SlotRegister(),
329 Operand(SmiFromSlot(function()->HomeObjectFeedbackSlot())));
330 CallLoadIC(NOT_CONTEXTUAL);
331
332 SetVar(home_object_var, v0, a1, a2);
333 }
334
317 if (FLAG_trace) { 335 if (FLAG_trace) {
318 __ CallRuntime(Runtime::kTraceEnter, 0); 336 __ CallRuntime(Runtime::kTraceEnter, 0);
319 } 337 }
320 // Visit the declarations and body unless there is an illegal 338 // Visit the declarations and body unless there is an illegal
321 // redeclaration. 339 // redeclaration.
322 if (scope()->HasIllegalRedeclaration()) { 340 if (scope()->HasIllegalRedeclaration()) {
323 Comment cmnt(masm_, "[ Declarations"); 341 Comment cmnt(masm_, "[ Declarations");
324 scope()->VisitIllegalRedeclaration(this); 342 scope()->VisitIllegalRedeclaration(this);
325 343
326 } else { 344 } else {
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 context()->Plug(v0); 1321 context()->Plug(v0);
1304 } 1322 }
1305 1323
1306 1324
1307 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { 1325 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) {
1308 Comment cmnt(masm_, "[ VariableProxy"); 1326 Comment cmnt(masm_, "[ VariableProxy");
1309 EmitVariableLoad(expr); 1327 EmitVariableLoad(expr);
1310 } 1328 }
1311 1329
1312 1330
1313 void FullCodeGenerator::EmitLoadHomeObject(SuperReference* expr) {
1314 Comment cnmt(masm_, "[ SuperReference ");
1315
1316 __ ld(LoadDescriptor::ReceiverRegister(),
1317 MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset));
1318
1319 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol());
1320 __ li(LoadDescriptor::NameRegister(), home_object_symbol);
1321
1322 __ li(LoadDescriptor::SlotRegister(),
1323 Operand(SmiFromSlot(expr->HomeObjectFeedbackSlot())));
1324 CallLoadIC(NOT_CONTEXTUAL);
1325
1326 Label done;
1327 __ Branch(&done, ne, v0, Operand(isolate()->factory()->undefined_value()));
1328 __ CallRuntime(Runtime::kThrowNonMethodError, 0);
1329 __ bind(&done);
1330 }
1331
1332
1333 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, 1331 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer,
1334 int offset) { 1332 int offset) {
1335 if (NeedsHomeObject(initializer)) { 1333 if (NeedsHomeObject(initializer)) {
1336 __ ld(StoreDescriptor::ReceiverRegister(), MemOperand(sp)); 1334 __ ld(StoreDescriptor::ReceiverRegister(), MemOperand(sp));
1337 __ li(StoreDescriptor::NameRegister(), 1335 __ li(StoreDescriptor::NameRegister(),
1338 Operand(isolate()->factory()->home_object_symbol())); 1336 Operand(isolate()->factory()->home_object_symbol()));
1339 __ ld(StoreDescriptor::ValueRegister(), 1337 __ ld(StoreDescriptor::ValueRegister(),
1340 MemOperand(sp, offset * kPointerSize)); 1338 MemOperand(sp, offset * kPointerSize));
1341 CallStoreIC(); 1339 CallStoreIC();
1342 } 1340 }
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 if (expr->is_compound()) { 1956 if (expr->is_compound()) {
1959 // We need the receiver both on the stack and in the register. 1957 // We need the receiver both on the stack and in the register.
1960 VisitForStackValue(property->obj()); 1958 VisitForStackValue(property->obj());
1961 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 1959 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
1962 } else { 1960 } else {
1963 VisitForStackValue(property->obj()); 1961 VisitForStackValue(property->obj());
1964 } 1962 }
1965 break; 1963 break;
1966 case NAMED_SUPER_PROPERTY: 1964 case NAMED_SUPER_PROPERTY:
1967 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1965 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1968 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1966 VisitForAccumulatorValue(
1967 property->obj()->AsSuperReference()->home_object_var());
1969 __ Push(result_register()); 1968 __ Push(result_register());
1970 if (expr->is_compound()) { 1969 if (expr->is_compound()) {
1971 const Register scratch = a1; 1970 const Register scratch = a1;
1972 __ ld(scratch, MemOperand(sp, kPointerSize)); 1971 __ ld(scratch, MemOperand(sp, kPointerSize));
1973 __ Push(scratch, result_register()); 1972 __ Push(scratch, result_register());
1974 } 1973 }
1975 break; 1974 break;
1976 case KEYED_SUPER_PROPERTY: { 1975 case KEYED_SUPER_PROPERTY: {
1977 const Register scratch = a1; 1976 const Register scratch = a1;
1978 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); 1977 VisitForStackValue(property->obj()->AsSuperReference()->this_var());
1979 EmitLoadHomeObject(property->obj()->AsSuperReference()); 1978 VisitForAccumulatorValue(
1979 property->obj()->AsSuperReference()->home_object_var());
1980 __ Move(scratch, result_register()); 1980 __ Move(scratch, result_register());
1981 VisitForAccumulatorValue(property->key()); 1981 VisitForAccumulatorValue(property->key());
1982 __ Push(scratch, result_register()); 1982 __ Push(scratch, result_register());
1983 if (expr->is_compound()) { 1983 if (expr->is_compound()) {
1984 const Register scratch1 = a4; 1984 const Register scratch1 = a4;
1985 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize)); 1985 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize));
1986 __ Push(scratch1, scratch, result_register()); 1986 __ Push(scratch1, scratch, result_register());
1987 } 1987 }
1988 break; 1988 break;
1989 } 1989 }
(...skipping 612 matching lines...) Expand 10 before | Expand all | Expand 10 after
2602 __ mov(StoreDescriptor::ReceiverRegister(), result_register()); 2602 __ mov(StoreDescriptor::ReceiverRegister(), result_register());
2603 __ pop(StoreDescriptor::ValueRegister()); // Restore value. 2603 __ pop(StoreDescriptor::ValueRegister()); // Restore value.
2604 __ li(StoreDescriptor::NameRegister(), 2604 __ li(StoreDescriptor::NameRegister(),
2605 Operand(prop->key()->AsLiteral()->value())); 2605 Operand(prop->key()->AsLiteral()->value()));
2606 CallStoreIC(); 2606 CallStoreIC();
2607 break; 2607 break;
2608 } 2608 }
2609 case NAMED_SUPER_PROPERTY: { 2609 case NAMED_SUPER_PROPERTY: {
2610 __ Push(v0); 2610 __ Push(v0);
2611 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2611 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2612 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2612 VisitForAccumulatorValue(
2613 prop->obj()->AsSuperReference()->home_object_var());
2613 // stack: value, this; v0: home_object 2614 // stack: value, this; v0: home_object
2614 Register scratch = a2; 2615 Register scratch = a2;
2615 Register scratch2 = a3; 2616 Register scratch2 = a3;
2616 __ mov(scratch, result_register()); // home_object 2617 __ mov(scratch, result_register()); // home_object
2617 __ ld(v0, MemOperand(sp, kPointerSize)); // value 2618 __ ld(v0, MemOperand(sp, kPointerSize)); // value
2618 __ ld(scratch2, MemOperand(sp, 0)); // this 2619 __ ld(scratch2, MemOperand(sp, 0)); // this
2619 __ sd(scratch2, MemOperand(sp, kPointerSize)); // this 2620 __ sd(scratch2, MemOperand(sp, kPointerSize)); // this
2620 __ sd(scratch, MemOperand(sp, 0)); // home_object 2621 __ sd(scratch, MemOperand(sp, 0)); // home_object
2621 // stack: this, home_object; v0: value 2622 // stack: this, home_object; v0: value
2622 EmitNamedSuperPropertyStore(prop); 2623 EmitNamedSuperPropertyStore(prop);
2623 break; 2624 break;
2624 } 2625 }
2625 case KEYED_SUPER_PROPERTY: { 2626 case KEYED_SUPER_PROPERTY: {
2626 __ Push(v0); 2627 __ Push(v0);
2627 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 2628 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
2628 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 2629 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var());
2629 __ Push(result_register());
2630 VisitForAccumulatorValue(prop->key()); 2630 VisitForAccumulatorValue(prop->key());
2631 Register scratch = a2; 2631 Register scratch = a2;
2632 Register scratch2 = a3; 2632 Register scratch2 = a3;
2633 __ ld(scratch2, MemOperand(sp, 2 * kPointerSize)); // value 2633 __ ld(scratch2, MemOperand(sp, 2 * kPointerSize)); // value
2634 // stack: value, this, home_object; v0: key, a3: value 2634 // stack: value, this, home_object; v0: key, a3: value
2635 __ ld(scratch, MemOperand(sp, kPointerSize)); // this 2635 __ ld(scratch, MemOperand(sp, kPointerSize)); // this
2636 __ sd(scratch, MemOperand(sp, 2 * kPointerSize)); 2636 __ sd(scratch, MemOperand(sp, 2 * kPointerSize));
2637 __ ld(scratch, MemOperand(sp, 0)); // home_object 2637 __ ld(scratch, MemOperand(sp, 0)); // home_object
2638 __ sd(scratch, MemOperand(sp, kPointerSize)); 2638 __ sd(scratch, MemOperand(sp, kPointerSize));
2639 __ sd(v0, MemOperand(sp, 0)); 2639 __ sd(v0, MemOperand(sp, 0));
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
2840 Comment cmnt(masm_, "[ Property"); 2840 Comment cmnt(masm_, "[ Property");
2841 Expression* key = expr->key(); 2841 Expression* key = expr->key();
2842 2842
2843 if (key->IsPropertyName()) { 2843 if (key->IsPropertyName()) {
2844 if (!expr->IsSuperAccess()) { 2844 if (!expr->IsSuperAccess()) {
2845 VisitForAccumulatorValue(expr->obj()); 2845 VisitForAccumulatorValue(expr->obj());
2846 __ Move(LoadDescriptor::ReceiverRegister(), v0); 2846 __ Move(LoadDescriptor::ReceiverRegister(), v0);
2847 EmitNamedPropertyLoad(expr); 2847 EmitNamedPropertyLoad(expr);
2848 } else { 2848 } else {
2849 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2849 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2850 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2850 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2851 __ Push(result_register());
2852 EmitNamedSuperPropertyLoad(expr); 2851 EmitNamedSuperPropertyLoad(expr);
2853 } 2852 }
2854 } else { 2853 } else {
2855 if (!expr->IsSuperAccess()) { 2854 if (!expr->IsSuperAccess()) {
2856 VisitForStackValue(expr->obj()); 2855 VisitForStackValue(expr->obj());
2857 VisitForAccumulatorValue(expr->key()); 2856 VisitForAccumulatorValue(expr->key());
2858 __ Move(LoadDescriptor::NameRegister(), v0); 2857 __ Move(LoadDescriptor::NameRegister(), v0);
2859 __ pop(LoadDescriptor::ReceiverRegister()); 2858 __ pop(LoadDescriptor::ReceiverRegister());
2860 EmitKeyedPropertyLoad(expr); 2859 EmitKeyedPropertyLoad(expr);
2861 } else { 2860 } else {
2862 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); 2861 VisitForStackValue(expr->obj()->AsSuperReference()->this_var());
2863 EmitLoadHomeObject(expr->obj()->AsSuperReference()); 2862 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var());
2864 __ Push(result_register());
2865 VisitForStackValue(expr->key()); 2863 VisitForStackValue(expr->key());
2866 EmitKeyedSuperPropertyLoad(expr); 2864 EmitKeyedSuperPropertyLoad(expr);
2867 } 2865 }
2868 } 2866 }
2869 PrepareForBailoutForId(expr->LoadId(), TOS_REG); 2867 PrepareForBailoutForId(expr->LoadId(), TOS_REG);
2870 context()->Plug(v0); 2868 context()->Plug(v0);
2871 } 2869 }
2872 2870
2873 2871
2874 void FullCodeGenerator::CallIC(Handle<Code> code, 2872 void FullCodeGenerator::CallIC(Handle<Code> code,
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2917 DCHECK(callee->IsProperty()); 2915 DCHECK(callee->IsProperty());
2918 Property* prop = callee->AsProperty(); 2916 Property* prop = callee->AsProperty();
2919 DCHECK(prop->IsSuperAccess()); 2917 DCHECK(prop->IsSuperAccess());
2920 2918
2921 SetSourcePosition(prop->position()); 2919 SetSourcePosition(prop->position());
2922 Literal* key = prop->key()->AsLiteral(); 2920 Literal* key = prop->key()->AsLiteral();
2923 DCHECK(!key->value()->IsSmi()); 2921 DCHECK(!key->value()->IsSmi());
2924 // Load the function from the receiver. 2922 // Load the function from the receiver.
2925 const Register scratch = a1; 2923 const Register scratch = a1;
2926 SuperReference* super_ref = prop->obj()->AsSuperReference(); 2924 SuperReference* super_ref = prop->obj()->AsSuperReference();
2927 EmitLoadHomeObject(super_ref); 2925 VisitForAccumulatorValue(super_ref->home_object_var());
2928 __ mov(scratch, v0); 2926 __ mov(scratch, v0);
2929 VisitForAccumulatorValue(super_ref->this_var()); 2927 VisitForAccumulatorValue(super_ref->this_var());
2930 __ Push(scratch, v0, v0, scratch); 2928 __ Push(scratch, v0, v0, scratch);
2931 __ Push(key->value()); 2929 __ Push(key->value());
2932 2930
2933 // Stack here: 2931 // Stack here:
2934 // - home_object 2932 // - home_object
2935 // - this (receiver) 2933 // - this (receiver)
2936 // - this (receiver) <-- LoadFromSuper will pop here and below. 2934 // - this (receiver) <-- LoadFromSuper will pop here and below.
2937 // - home_object 2935 // - home_object
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2975 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { 2973 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) {
2976 Expression* callee = expr->expression(); 2974 Expression* callee = expr->expression();
2977 DCHECK(callee->IsProperty()); 2975 DCHECK(callee->IsProperty());
2978 Property* prop = callee->AsProperty(); 2976 Property* prop = callee->AsProperty();
2979 DCHECK(prop->IsSuperAccess()); 2977 DCHECK(prop->IsSuperAccess());
2980 2978
2981 SetSourcePosition(prop->position()); 2979 SetSourcePosition(prop->position());
2982 // Load the function from the receiver. 2980 // Load the function from the receiver.
2983 const Register scratch = a1; 2981 const Register scratch = a1;
2984 SuperReference* super_ref = prop->obj()->AsSuperReference(); 2982 SuperReference* super_ref = prop->obj()->AsSuperReference();
2985 EmitLoadHomeObject(super_ref); 2983 VisitForAccumulatorValue(super_ref->home_object_var());
2986 __ Move(scratch, v0); 2984 __ Move(scratch, v0);
2987 VisitForAccumulatorValue(super_ref->this_var()); 2985 VisitForAccumulatorValue(super_ref->this_var());
2988 __ Push(scratch, v0, v0, scratch); 2986 __ Push(scratch, v0, v0, scratch);
2989 VisitForStackValue(prop->key()); 2987 VisitForStackValue(prop->key());
2990 2988
2991 // Stack here: 2989 // Stack here:
2992 // - home_object 2990 // - home_object
2993 // - this (receiver) 2991 // - this (receiver)
2994 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. 2992 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below.
2995 // - home_object 2993 // - home_object
(...skipping 1851 matching lines...) Expand 10 before | Expand all | Expand 10 after
4847 case NAMED_PROPERTY: { 4845 case NAMED_PROPERTY: {
4848 // Put the object both on the stack and in the register. 4846 // Put the object both on the stack and in the register.
4849 VisitForStackValue(prop->obj()); 4847 VisitForStackValue(prop->obj());
4850 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); 4848 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0));
4851 EmitNamedPropertyLoad(prop); 4849 EmitNamedPropertyLoad(prop);
4852 break; 4850 break;
4853 } 4851 }
4854 4852
4855 case NAMED_SUPER_PROPERTY: { 4853 case NAMED_SUPER_PROPERTY: {
4856 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4854 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4857 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4855 VisitForAccumulatorValue(
4856 prop->obj()->AsSuperReference()->home_object_var());
4858 __ Push(result_register()); 4857 __ Push(result_register());
4859 const Register scratch = a1; 4858 const Register scratch = a1;
4860 __ ld(scratch, MemOperand(sp, kPointerSize)); 4859 __ ld(scratch, MemOperand(sp, kPointerSize));
4861 __ Push(scratch, result_register()); 4860 __ Push(scratch, result_register());
4862 EmitNamedSuperPropertyLoad(prop); 4861 EmitNamedSuperPropertyLoad(prop);
4863 break; 4862 break;
4864 } 4863 }
4865 4864
4866 case KEYED_SUPER_PROPERTY: { 4865 case KEYED_SUPER_PROPERTY: {
4867 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); 4866 VisitForStackValue(prop->obj()->AsSuperReference()->this_var());
4868 EmitLoadHomeObject(prop->obj()->AsSuperReference()); 4867 VisitForAccumulatorValue(
4868 prop->obj()->AsSuperReference()->home_object_var());
4869 const Register scratch = a1; 4869 const Register scratch = a1;
4870 const Register scratch1 = a4; 4870 const Register scratch1 = a4;
4871 __ Move(scratch, result_register()); 4871 __ Move(scratch, result_register());
4872 VisitForAccumulatorValue(prop->key()); 4872 VisitForAccumulatorValue(prop->key());
4873 __ Push(scratch, result_register()); 4873 __ Push(scratch, result_register());
4874 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize)); 4874 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize));
4875 __ Push(scratch1, scratch, result_register()); 4875 __ Push(scratch1, scratch, result_register());
4876 EmitKeyedSuperPropertyLoad(prop); 4876 EmitKeyedSuperPropertyLoad(prop);
4877 break; 4877 break;
4878 } 4878 }
(...skipping 587 matching lines...) Expand 10 before | Expand all | Expand 10 after
5466 Assembler::target_address_at(pc_immediate_load_address)) == 5466 Assembler::target_address_at(pc_immediate_load_address)) ==
5467 reinterpret_cast<uint64_t>( 5467 reinterpret_cast<uint64_t>(
5468 isolate->builtins()->OsrAfterStackCheck()->entry())); 5468 isolate->builtins()->OsrAfterStackCheck()->entry()));
5469 return OSR_AFTER_STACK_CHECK; 5469 return OSR_AFTER_STACK_CHECK;
5470 } 5470 }
5471 5471
5472 5472
5473 } } // namespace v8::internal 5473 } } // namespace v8::internal
5474 5474
5475 #endif // V8_TARGET_ARCH_MIPS64 5475 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/mips/full-codegen-mips.cc ('k') | src/parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698