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

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

Powered by Google App Engine
This is Rietveld 408576698