OLD | NEW |
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 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
307 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; | 307 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; |
308 } else { | 308 } else { |
309 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; | 309 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; |
310 } | 310 } |
311 ArgumentsAccessStub stub(isolate(), type, has_new_target); | 311 ArgumentsAccessStub stub(isolate(), type, has_new_target); |
312 __ CallStub(&stub); | 312 __ CallStub(&stub); |
313 | 313 |
314 SetVar(arguments, v0, a1, a2); | 314 SetVar(arguments, v0, a1, a2); |
315 } | 315 } |
316 | 316 |
| 317 // Possibly set up a local binding to the [[HomeObject]]. |
| 318 Variable* home_object_var = scope()->home_object_var(); |
| 319 if (home_object_var != nullptr) { |
| 320 Comment cmnt(masm_, "[ Home object"); |
| 321 if (function_in_register) { |
| 322 __ mov(LoadDescriptor::ReceiverRegister(), a1); |
| 323 } else { |
| 324 __ ld(LoadDescriptor::ReceiverRegister(), |
| 325 MemOperand(fp, JavaScriptFrameConstants::kFunctionOffset)); |
| 326 } |
| 327 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol()); |
| 328 __ li(LoadDescriptor::NameRegister(), home_object_symbol); |
| 329 |
| 330 if (FLAG_vector_ics) { |
| 331 __ li(VectorLoadICDescriptor::SlotRegister(), |
| 332 Operand(SmiFromSlot(function()->HomeObjectFeedbackSlot()))); |
| 333 } |
| 334 CallLoadIC(NOT_CONTEXTUAL); |
| 335 |
| 336 SetVar(home_object_var, v0, a1, a2); |
| 337 } |
| 338 |
317 if (FLAG_trace) { | 339 if (FLAG_trace) { |
318 __ CallRuntime(Runtime::kTraceEnter, 0); | 340 __ CallRuntime(Runtime::kTraceEnter, 0); |
319 } | 341 } |
320 // Visit the declarations and body unless there is an illegal | 342 // Visit the declarations and body unless there is an illegal |
321 // redeclaration. | 343 // redeclaration. |
322 if (scope()->HasIllegalRedeclaration()) { | 344 if (scope()->HasIllegalRedeclaration()) { |
323 Comment cmnt(masm_, "[ Declarations"); | 345 Comment cmnt(masm_, "[ Declarations"); |
324 scope()->VisitIllegalRedeclaration(this); | 346 scope()->VisitIllegalRedeclaration(this); |
325 | 347 |
326 } else { | 348 } else { |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1303 context()->Plug(v0); | 1325 context()->Plug(v0); |
1304 } | 1326 } |
1305 | 1327 |
1306 | 1328 |
1307 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { | 1329 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { |
1308 Comment cmnt(masm_, "[ VariableProxy"); | 1330 Comment cmnt(masm_, "[ VariableProxy"); |
1309 EmitVariableLoad(expr); | 1331 EmitVariableLoad(expr); |
1310 } | 1332 } |
1311 | 1333 |
1312 | 1334 |
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 if (FLAG_vector_ics) { | |
1323 __ li(VectorLoadICDescriptor::SlotRegister(), | |
1324 Operand(SmiFromSlot(expr->HomeObjectFeedbackSlot()))); | |
1325 CallLoadIC(NOT_CONTEXTUAL); | |
1326 } else { | |
1327 CallLoadIC(NOT_CONTEXTUAL, expr->HomeObjectFeedbackId()); | |
1328 } | |
1329 | |
1330 Label done; | |
1331 __ Branch(&done, ne, v0, Operand(isolate()->factory()->undefined_value())); | |
1332 __ CallRuntime(Runtime::kThrowNonMethodError, 0); | |
1333 __ bind(&done); | |
1334 } | |
1335 | |
1336 | |
1337 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, | 1335 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, |
1338 int offset) { | 1336 int offset) { |
1339 if (NeedsHomeObject(initializer)) { | 1337 if (NeedsHomeObject(initializer)) { |
1340 __ ld(StoreDescriptor::ReceiverRegister(), MemOperand(sp)); | 1338 __ ld(StoreDescriptor::ReceiverRegister(), MemOperand(sp)); |
1341 __ li(StoreDescriptor::NameRegister(), | 1339 __ li(StoreDescriptor::NameRegister(), |
1342 Operand(isolate()->factory()->home_object_symbol())); | 1340 Operand(isolate()->factory()->home_object_symbol())); |
1343 __ ld(StoreDescriptor::ValueRegister(), | 1341 __ ld(StoreDescriptor::ValueRegister(), |
1344 MemOperand(sp, offset * kPointerSize)); | 1342 MemOperand(sp, offset * kPointerSize)); |
1345 CallStoreIC(); | 1343 CallStoreIC(); |
1346 } | 1344 } |
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1942 if (expr->is_compound()) { | 1940 if (expr->is_compound()) { |
1943 // We need the receiver both on the stack and in the register. | 1941 // We need the receiver both on the stack and in the register. |
1944 VisitForStackValue(property->obj()); | 1942 VisitForStackValue(property->obj()); |
1945 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); | 1943 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); |
1946 } else { | 1944 } else { |
1947 VisitForStackValue(property->obj()); | 1945 VisitForStackValue(property->obj()); |
1948 } | 1946 } |
1949 break; | 1947 break; |
1950 case NAMED_SUPER_PROPERTY: | 1948 case NAMED_SUPER_PROPERTY: |
1951 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); | 1949 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); |
1952 EmitLoadHomeObject(property->obj()->AsSuperReference()); | 1950 VisitForAccumulatorValue( |
| 1951 property->obj()->AsSuperReference()->home_object_var()); |
1953 __ Push(result_register()); | 1952 __ Push(result_register()); |
1954 if (expr->is_compound()) { | 1953 if (expr->is_compound()) { |
1955 const Register scratch = a1; | 1954 const Register scratch = a1; |
1956 __ ld(scratch, MemOperand(sp, kPointerSize)); | 1955 __ ld(scratch, MemOperand(sp, kPointerSize)); |
1957 __ Push(scratch, result_register()); | 1956 __ Push(scratch, result_register()); |
1958 } | 1957 } |
1959 break; | 1958 break; |
1960 case KEYED_SUPER_PROPERTY: { | 1959 case KEYED_SUPER_PROPERTY: { |
1961 const Register scratch = a1; | 1960 const Register scratch = a1; |
1962 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); | 1961 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); |
1963 EmitLoadHomeObject(property->obj()->AsSuperReference()); | 1962 VisitForAccumulatorValue( |
| 1963 property->obj()->AsSuperReference()->home_object_var()); |
1964 __ Move(scratch, result_register()); | 1964 __ Move(scratch, result_register()); |
1965 VisitForAccumulatorValue(property->key()); | 1965 VisitForAccumulatorValue(property->key()); |
1966 __ Push(scratch, result_register()); | 1966 __ Push(scratch, result_register()); |
1967 if (expr->is_compound()) { | 1967 if (expr->is_compound()) { |
1968 const Register scratch1 = a4; | 1968 const Register scratch1 = a4; |
1969 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize)); | 1969 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize)); |
1970 __ Push(scratch1, scratch, result_register()); | 1970 __ Push(scratch1, scratch, result_register()); |
1971 } | 1971 } |
1972 break; | 1972 break; |
1973 } | 1973 } |
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2600 __ mov(StoreDescriptor::ReceiverRegister(), result_register()); | 2600 __ mov(StoreDescriptor::ReceiverRegister(), result_register()); |
2601 __ pop(StoreDescriptor::ValueRegister()); // Restore value. | 2601 __ pop(StoreDescriptor::ValueRegister()); // Restore value. |
2602 __ li(StoreDescriptor::NameRegister(), | 2602 __ li(StoreDescriptor::NameRegister(), |
2603 Operand(prop->key()->AsLiteral()->value())); | 2603 Operand(prop->key()->AsLiteral()->value())); |
2604 CallStoreIC(); | 2604 CallStoreIC(); |
2605 break; | 2605 break; |
2606 } | 2606 } |
2607 case NAMED_SUPER_PROPERTY: { | 2607 case NAMED_SUPER_PROPERTY: { |
2608 __ Push(v0); | 2608 __ Push(v0); |
2609 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 2609 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
2610 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 2610 VisitForAccumulatorValue( |
| 2611 prop->obj()->AsSuperReference()->home_object_var()); |
2611 // stack: value, this; v0: home_object | 2612 // stack: value, this; v0: home_object |
2612 Register scratch = a2; | 2613 Register scratch = a2; |
2613 Register scratch2 = a3; | 2614 Register scratch2 = a3; |
2614 __ mov(scratch, result_register()); // home_object | 2615 __ mov(scratch, result_register()); // home_object |
2615 __ ld(v0, MemOperand(sp, kPointerSize)); // value | 2616 __ ld(v0, MemOperand(sp, kPointerSize)); // value |
2616 __ ld(scratch2, MemOperand(sp, 0)); // this | 2617 __ ld(scratch2, MemOperand(sp, 0)); // this |
2617 __ sd(scratch2, MemOperand(sp, kPointerSize)); // this | 2618 __ sd(scratch2, MemOperand(sp, kPointerSize)); // this |
2618 __ sd(scratch, MemOperand(sp, 0)); // home_object | 2619 __ sd(scratch, MemOperand(sp, 0)); // home_object |
2619 // stack: this, home_object; v0: value | 2620 // stack: this, home_object; v0: value |
2620 EmitNamedSuperPropertyStore(prop); | 2621 EmitNamedSuperPropertyStore(prop); |
2621 break; | 2622 break; |
2622 } | 2623 } |
2623 case KEYED_SUPER_PROPERTY: { | 2624 case KEYED_SUPER_PROPERTY: { |
2624 __ Push(v0); | 2625 __ Push(v0); |
2625 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 2626 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
2626 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 2627 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var()); |
2627 __ Push(result_register()); | |
2628 VisitForAccumulatorValue(prop->key()); | 2628 VisitForAccumulatorValue(prop->key()); |
2629 Register scratch = a2; | 2629 Register scratch = a2; |
2630 Register scratch2 = a3; | 2630 Register scratch2 = a3; |
2631 __ ld(scratch2, MemOperand(sp, 2 * kPointerSize)); // value | 2631 __ ld(scratch2, MemOperand(sp, 2 * kPointerSize)); // value |
2632 // stack: value, this, home_object; v0: key, a3: value | 2632 // stack: value, this, home_object; v0: key, a3: value |
2633 __ ld(scratch, MemOperand(sp, kPointerSize)); // this | 2633 __ ld(scratch, MemOperand(sp, kPointerSize)); // this |
2634 __ sd(scratch, MemOperand(sp, 2 * kPointerSize)); | 2634 __ sd(scratch, MemOperand(sp, 2 * kPointerSize)); |
2635 __ ld(scratch, MemOperand(sp, 0)); // home_object | 2635 __ ld(scratch, MemOperand(sp, 0)); // home_object |
2636 __ sd(scratch, MemOperand(sp, kPointerSize)); | 2636 __ sd(scratch, MemOperand(sp, kPointerSize)); |
2637 __ sd(v0, MemOperand(sp, 0)); | 2637 __ sd(v0, MemOperand(sp, 0)); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2838 Comment cmnt(masm_, "[ Property"); | 2838 Comment cmnt(masm_, "[ Property"); |
2839 Expression* key = expr->key(); | 2839 Expression* key = expr->key(); |
2840 | 2840 |
2841 if (key->IsPropertyName()) { | 2841 if (key->IsPropertyName()) { |
2842 if (!expr->IsSuperAccess()) { | 2842 if (!expr->IsSuperAccess()) { |
2843 VisitForAccumulatorValue(expr->obj()); | 2843 VisitForAccumulatorValue(expr->obj()); |
2844 __ Move(LoadDescriptor::ReceiverRegister(), v0); | 2844 __ Move(LoadDescriptor::ReceiverRegister(), v0); |
2845 EmitNamedPropertyLoad(expr); | 2845 EmitNamedPropertyLoad(expr); |
2846 } else { | 2846 } else { |
2847 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2847 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2848 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2848 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var()); |
2849 __ Push(result_register()); | |
2850 EmitNamedSuperPropertyLoad(expr); | 2849 EmitNamedSuperPropertyLoad(expr); |
2851 } | 2850 } |
2852 } else { | 2851 } else { |
2853 if (!expr->IsSuperAccess()) { | 2852 if (!expr->IsSuperAccess()) { |
2854 VisitForStackValue(expr->obj()); | 2853 VisitForStackValue(expr->obj()); |
2855 VisitForAccumulatorValue(expr->key()); | 2854 VisitForAccumulatorValue(expr->key()); |
2856 __ Move(LoadDescriptor::NameRegister(), v0); | 2855 __ Move(LoadDescriptor::NameRegister(), v0); |
2857 __ pop(LoadDescriptor::ReceiverRegister()); | 2856 __ pop(LoadDescriptor::ReceiverRegister()); |
2858 EmitKeyedPropertyLoad(expr); | 2857 EmitKeyedPropertyLoad(expr); |
2859 } else { | 2858 } else { |
2860 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2859 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2861 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2860 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var()); |
2862 __ Push(result_register()); | |
2863 VisitForStackValue(expr->key()); | 2861 VisitForStackValue(expr->key()); |
2864 EmitKeyedSuperPropertyLoad(expr); | 2862 EmitKeyedSuperPropertyLoad(expr); |
2865 } | 2863 } |
2866 } | 2864 } |
2867 PrepareForBailoutForId(expr->LoadId(), TOS_REG); | 2865 PrepareForBailoutForId(expr->LoadId(), TOS_REG); |
2868 context()->Plug(v0); | 2866 context()->Plug(v0); |
2869 } | 2867 } |
2870 | 2868 |
2871 | 2869 |
2872 void FullCodeGenerator::CallIC(Handle<Code> code, | 2870 void FullCodeGenerator::CallIC(Handle<Code> code, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2915 DCHECK(callee->IsProperty()); | 2913 DCHECK(callee->IsProperty()); |
2916 Property* prop = callee->AsProperty(); | 2914 Property* prop = callee->AsProperty(); |
2917 DCHECK(prop->IsSuperAccess()); | 2915 DCHECK(prop->IsSuperAccess()); |
2918 | 2916 |
2919 SetSourcePosition(prop->position()); | 2917 SetSourcePosition(prop->position()); |
2920 Literal* key = prop->key()->AsLiteral(); | 2918 Literal* key = prop->key()->AsLiteral(); |
2921 DCHECK(!key->value()->IsSmi()); | 2919 DCHECK(!key->value()->IsSmi()); |
2922 // Load the function from the receiver. | 2920 // Load the function from the receiver. |
2923 const Register scratch = a1; | 2921 const Register scratch = a1; |
2924 SuperReference* super_ref = prop->obj()->AsSuperReference(); | 2922 SuperReference* super_ref = prop->obj()->AsSuperReference(); |
2925 EmitLoadHomeObject(super_ref); | 2923 VisitForAccumulatorValue(super_ref->home_object_var()); |
2926 __ mov(scratch, v0); | 2924 __ mov(scratch, v0); |
2927 VisitForAccumulatorValue(super_ref->this_var()); | 2925 VisitForAccumulatorValue(super_ref->this_var()); |
2928 __ Push(scratch, v0, v0, scratch); | 2926 __ Push(scratch, v0, v0, scratch); |
2929 __ Push(key->value()); | 2927 __ Push(key->value()); |
2930 | 2928 |
2931 // Stack here: | 2929 // Stack here: |
2932 // - home_object | 2930 // - home_object |
2933 // - this (receiver) | 2931 // - this (receiver) |
2934 // - this (receiver) <-- LoadFromSuper will pop here and below. | 2932 // - this (receiver) <-- LoadFromSuper will pop here and below. |
2935 // - home_object | 2933 // - home_object |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2973 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { | 2971 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { |
2974 Expression* callee = expr->expression(); | 2972 Expression* callee = expr->expression(); |
2975 DCHECK(callee->IsProperty()); | 2973 DCHECK(callee->IsProperty()); |
2976 Property* prop = callee->AsProperty(); | 2974 Property* prop = callee->AsProperty(); |
2977 DCHECK(prop->IsSuperAccess()); | 2975 DCHECK(prop->IsSuperAccess()); |
2978 | 2976 |
2979 SetSourcePosition(prop->position()); | 2977 SetSourcePosition(prop->position()); |
2980 // Load the function from the receiver. | 2978 // Load the function from the receiver. |
2981 const Register scratch = a1; | 2979 const Register scratch = a1; |
2982 SuperReference* super_ref = prop->obj()->AsSuperReference(); | 2980 SuperReference* super_ref = prop->obj()->AsSuperReference(); |
2983 EmitLoadHomeObject(super_ref); | 2981 VisitForAccumulatorValue(super_ref->home_object_var()); |
2984 __ Move(scratch, v0); | 2982 __ Move(scratch, v0); |
2985 VisitForAccumulatorValue(super_ref->this_var()); | 2983 VisitForAccumulatorValue(super_ref->this_var()); |
2986 __ Push(scratch, v0, v0, scratch); | 2984 __ Push(scratch, v0, v0, scratch); |
2987 VisitForStackValue(prop->key()); | 2985 VisitForStackValue(prop->key()); |
2988 | 2986 |
2989 // Stack here: | 2987 // Stack here: |
2990 // - home_object | 2988 // - home_object |
2991 // - this (receiver) | 2989 // - this (receiver) |
2992 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. | 2990 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. |
2993 // - home_object | 2991 // - home_object |
(...skipping 1855 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4849 case NAMED_PROPERTY: { | 4847 case NAMED_PROPERTY: { |
4850 // Put the object both on the stack and in the register. | 4848 // Put the object both on the stack and in the register. |
4851 VisitForStackValue(prop->obj()); | 4849 VisitForStackValue(prop->obj()); |
4852 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); | 4850 __ ld(LoadDescriptor::ReceiverRegister(), MemOperand(sp, 0)); |
4853 EmitNamedPropertyLoad(prop); | 4851 EmitNamedPropertyLoad(prop); |
4854 break; | 4852 break; |
4855 } | 4853 } |
4856 | 4854 |
4857 case NAMED_SUPER_PROPERTY: { | 4855 case NAMED_SUPER_PROPERTY: { |
4858 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 4856 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
4859 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 4857 VisitForAccumulatorValue( |
| 4858 prop->obj()->AsSuperReference()->home_object_var()); |
4860 __ Push(result_register()); | 4859 __ Push(result_register()); |
4861 const Register scratch = a1; | 4860 const Register scratch = a1; |
4862 __ ld(scratch, MemOperand(sp, kPointerSize)); | 4861 __ ld(scratch, MemOperand(sp, kPointerSize)); |
4863 __ Push(scratch, result_register()); | 4862 __ Push(scratch, result_register()); |
4864 EmitNamedSuperPropertyLoad(prop); | 4863 EmitNamedSuperPropertyLoad(prop); |
4865 break; | 4864 break; |
4866 } | 4865 } |
4867 | 4866 |
4868 case KEYED_SUPER_PROPERTY: { | 4867 case KEYED_SUPER_PROPERTY: { |
4869 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 4868 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
4870 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 4869 VisitForAccumulatorValue( |
| 4870 prop->obj()->AsSuperReference()->home_object_var()); |
4871 const Register scratch = a1; | 4871 const Register scratch = a1; |
4872 const Register scratch1 = a4; | 4872 const Register scratch1 = a4; |
4873 __ Move(scratch, result_register()); | 4873 __ Move(scratch, result_register()); |
4874 VisitForAccumulatorValue(prop->key()); | 4874 VisitForAccumulatorValue(prop->key()); |
4875 __ Push(scratch, result_register()); | 4875 __ Push(scratch, result_register()); |
4876 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize)); | 4876 __ ld(scratch1, MemOperand(sp, 2 * kPointerSize)); |
4877 __ Push(scratch1, scratch, result_register()); | 4877 __ Push(scratch1, scratch, result_register()); |
4878 EmitKeyedSuperPropertyLoad(prop); | 4878 EmitKeyedSuperPropertyLoad(prop); |
4879 break; | 4879 break; |
4880 } | 4880 } |
(...skipping 576 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5457 Assembler::target_address_at(pc_immediate_load_address)) == | 5457 Assembler::target_address_at(pc_immediate_load_address)) == |
5458 reinterpret_cast<uint64_t>( | 5458 reinterpret_cast<uint64_t>( |
5459 isolate->builtins()->OsrAfterStackCheck()->entry())); | 5459 isolate->builtins()->OsrAfterStackCheck()->entry())); |
5460 return OSR_AFTER_STACK_CHECK; | 5460 return OSR_AFTER_STACK_CHECK; |
5461 } | 5461 } |
5462 | 5462 |
5463 | 5463 |
5464 } } // namespace v8::internal | 5464 } } // namespace v8::internal |
5465 | 5465 |
5466 #endif // V8_TARGET_ARCH_MIPS64 | 5466 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |