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_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 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; | 294 type = ArgumentsAccessStub::NEW_SLOPPY_SLOW; |
295 } else { | 295 } else { |
296 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; | 296 type = ArgumentsAccessStub::NEW_SLOPPY_FAST; |
297 } | 297 } |
298 ArgumentsAccessStub stub(isolate(), type, has_new_target); | 298 ArgumentsAccessStub stub(isolate(), type, has_new_target); |
299 __ CallStub(&stub); | 299 __ CallStub(&stub); |
300 | 300 |
301 SetVar(arguments, rax, rbx, rdx); | 301 SetVar(arguments, rax, rbx, rdx); |
302 } | 302 } |
303 | 303 |
| 304 Variable* home_object_var = scope()->home_object_var(); |
| 305 if (home_object_var != nullptr) { |
| 306 Comment cmnt(masm_, "[ Home object"); |
| 307 if (function_in_register) { |
| 308 __ movp(LoadDescriptor::ReceiverRegister(), rdi); |
| 309 } else { |
| 310 __ movp(LoadDescriptor::ReceiverRegister(), |
| 311 Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
| 312 } |
| 313 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol()); |
| 314 __ Move(LoadDescriptor::NameRegister(), home_object_symbol); |
| 315 |
| 316 if (FLAG_vector_ics) { |
| 317 __ Move(VectorLoadICDescriptor::SlotRegister(), |
| 318 SmiFromSlot(function()->HomeObjectFeedbackSlot())); |
| 319 } |
| 320 CallLoadIC(NOT_CONTEXTUAL); |
| 321 |
| 322 SetVar(home_object_var, rax, rbx, rdx); |
| 323 } |
| 324 |
| 325 |
304 if (FLAG_trace) { | 326 if (FLAG_trace) { |
305 __ CallRuntime(Runtime::kTraceEnter, 0); | 327 __ CallRuntime(Runtime::kTraceEnter, 0); |
306 } | 328 } |
307 | 329 |
308 // Visit the declarations and body unless there is an illegal | 330 // Visit the declarations and body unless there is an illegal |
309 // redeclaration. | 331 // redeclaration. |
310 if (scope()->HasIllegalRedeclaration()) { | 332 if (scope()->HasIllegalRedeclaration()) { |
311 Comment cmnt(masm_, "[ Declarations"); | 333 Comment cmnt(masm_, "[ Declarations"); |
312 scope()->VisitIllegalRedeclaration(this); | 334 scope()->VisitIllegalRedeclaration(this); |
313 | 335 |
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1278 context()->Plug(rax); | 1300 context()->Plug(rax); |
1279 } | 1301 } |
1280 | 1302 |
1281 | 1303 |
1282 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { | 1304 void FullCodeGenerator::VisitVariableProxy(VariableProxy* expr) { |
1283 Comment cmnt(masm_, "[ VariableProxy"); | 1305 Comment cmnt(masm_, "[ VariableProxy"); |
1284 EmitVariableLoad(expr); | 1306 EmitVariableLoad(expr); |
1285 } | 1307 } |
1286 | 1308 |
1287 | 1309 |
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 if (FLAG_vector_ics) { | |
1298 __ Move(VectorLoadICDescriptor::SlotRegister(), | |
1299 SmiFromSlot(expr->HomeObjectFeedbackSlot())); | |
1300 CallLoadIC(NOT_CONTEXTUAL); | |
1301 } else { | |
1302 CallLoadIC(NOT_CONTEXTUAL, expr->HomeObjectFeedbackId()); | |
1303 } | |
1304 | |
1305 | |
1306 __ Cmp(rax, isolate()->factory()->undefined_value()); | |
1307 Label done; | |
1308 __ j(not_equal, &done); | |
1309 __ CallRuntime(Runtime::kThrowNonMethodError, 0); | |
1310 __ bind(&done); | |
1311 } | |
1312 | |
1313 | |
1314 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, | 1310 void FullCodeGenerator::EmitSetHomeObjectIfNeeded(Expression* initializer, |
1315 int offset) { | 1311 int offset) { |
1316 if (NeedsHomeObject(initializer)) { | 1312 if (NeedsHomeObject(initializer)) { |
1317 __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, 0)); | 1313 __ movp(StoreDescriptor::ReceiverRegister(), Operand(rsp, 0)); |
1318 __ Move(StoreDescriptor::NameRegister(), | 1314 __ Move(StoreDescriptor::NameRegister(), |
1319 isolate()->factory()->home_object_symbol()); | 1315 isolate()->factory()->home_object_symbol()); |
1320 __ movp(StoreDescriptor::ValueRegister(), | 1316 __ movp(StoreDescriptor::ValueRegister(), |
1321 Operand(rsp, offset * kPointerSize)); | 1317 Operand(rsp, offset * kPointerSize)); |
1322 CallStoreIC(); | 1318 CallStoreIC(); |
1323 } | 1319 } |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1918 if (expr->is_compound()) { | 1914 if (expr->is_compound()) { |
1919 // We need the receiver both on the stack and in the register. | 1915 // We need the receiver both on the stack and in the register. |
1920 VisitForStackValue(property->obj()); | 1916 VisitForStackValue(property->obj()); |
1921 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0)); | 1917 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0)); |
1922 } else { | 1918 } else { |
1923 VisitForStackValue(property->obj()); | 1919 VisitForStackValue(property->obj()); |
1924 } | 1920 } |
1925 break; | 1921 break; |
1926 case NAMED_SUPER_PROPERTY: | 1922 case NAMED_SUPER_PROPERTY: |
1927 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); | 1923 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); |
1928 EmitLoadHomeObject(property->obj()->AsSuperReference()); | 1924 VisitForAccumulatorValue( |
| 1925 property->obj()->AsSuperReference()->home_object_var()); |
1929 __ Push(result_register()); | 1926 __ Push(result_register()); |
1930 if (expr->is_compound()) { | 1927 if (expr->is_compound()) { |
1931 __ Push(MemOperand(rsp, kPointerSize)); | 1928 __ Push(MemOperand(rsp, kPointerSize)); |
1932 __ Push(result_register()); | 1929 __ Push(result_register()); |
1933 } | 1930 } |
1934 break; | 1931 break; |
1935 case KEYED_SUPER_PROPERTY: | 1932 case KEYED_SUPER_PROPERTY: |
1936 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); | 1933 VisitForStackValue(property->obj()->AsSuperReference()->this_var()); |
1937 EmitLoadHomeObject(property->obj()->AsSuperReference()); | 1934 VisitForStackValue( |
1938 __ Push(result_register()); | 1935 property->obj()->AsSuperReference()->home_object_var()); |
1939 VisitForAccumulatorValue(property->key()); | 1936 VisitForAccumulatorValue(property->key()); |
1940 __ Push(result_register()); | 1937 __ Push(result_register()); |
1941 if (expr->is_compound()) { | 1938 if (expr->is_compound()) { |
1942 __ Push(MemOperand(rsp, 2 * kPointerSize)); | 1939 __ Push(MemOperand(rsp, 2 * kPointerSize)); |
1943 __ Push(MemOperand(rsp, 2 * kPointerSize)); | 1940 __ Push(MemOperand(rsp, 2 * kPointerSize)); |
1944 __ Push(result_register()); | 1941 __ Push(result_register()); |
1945 } | 1942 } |
1946 break; | 1943 break; |
1947 case KEYED_PROPERTY: { | 1944 case KEYED_PROPERTY: { |
1948 if (expr->is_compound()) { | 1945 if (expr->is_compound()) { |
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2533 __ Move(StoreDescriptor::ReceiverRegister(), rax); | 2530 __ Move(StoreDescriptor::ReceiverRegister(), rax); |
2534 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. | 2531 __ Pop(StoreDescriptor::ValueRegister()); // Restore value. |
2535 __ Move(StoreDescriptor::NameRegister(), | 2532 __ Move(StoreDescriptor::NameRegister(), |
2536 prop->key()->AsLiteral()->value()); | 2533 prop->key()->AsLiteral()->value()); |
2537 CallStoreIC(); | 2534 CallStoreIC(); |
2538 break; | 2535 break; |
2539 } | 2536 } |
2540 case NAMED_SUPER_PROPERTY: { | 2537 case NAMED_SUPER_PROPERTY: { |
2541 __ Push(rax); | 2538 __ Push(rax); |
2542 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 2539 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
2543 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 2540 VisitForAccumulatorValue( |
| 2541 prop->obj()->AsSuperReference()->home_object_var()); |
2544 // stack: value, this; rax: home_object | 2542 // stack: value, this; rax: home_object |
2545 Register scratch = rcx; | 2543 Register scratch = rcx; |
2546 Register scratch2 = rdx; | 2544 Register scratch2 = rdx; |
2547 __ Move(scratch, result_register()); // home_object | 2545 __ Move(scratch, result_register()); // home_object |
2548 __ movp(rax, MemOperand(rsp, kPointerSize)); // value | 2546 __ movp(rax, MemOperand(rsp, kPointerSize)); // value |
2549 __ movp(scratch2, MemOperand(rsp, 0)); // this | 2547 __ movp(scratch2, MemOperand(rsp, 0)); // this |
2550 __ movp(MemOperand(rsp, kPointerSize), scratch2); // this | 2548 __ movp(MemOperand(rsp, kPointerSize), scratch2); // this |
2551 __ movp(MemOperand(rsp, 0), scratch); // home_object | 2549 __ movp(MemOperand(rsp, 0), scratch); // home_object |
2552 // stack: this, home_object; rax: value | 2550 // stack: this, home_object; rax: value |
2553 EmitNamedSuperPropertyStore(prop); | 2551 EmitNamedSuperPropertyStore(prop); |
2554 break; | 2552 break; |
2555 } | 2553 } |
2556 case KEYED_SUPER_PROPERTY: { | 2554 case KEYED_SUPER_PROPERTY: { |
2557 __ Push(rax); | 2555 __ Push(rax); |
2558 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 2556 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
2559 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 2557 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var()); |
2560 __ Push(result_register()); | |
2561 VisitForAccumulatorValue(prop->key()); | 2558 VisitForAccumulatorValue(prop->key()); |
2562 Register scratch = rcx; | 2559 Register scratch = rcx; |
2563 Register scratch2 = rdx; | 2560 Register scratch2 = rdx; |
2564 __ movp(scratch2, MemOperand(rsp, 2 * kPointerSize)); // value | 2561 __ movp(scratch2, MemOperand(rsp, 2 * kPointerSize)); // value |
2565 // stack: value, this, home_object; rax: key, rdx: value | 2562 // stack: value, this, home_object; rax: key, rdx: value |
2566 __ movp(scratch, MemOperand(rsp, kPointerSize)); // this | 2563 __ movp(scratch, MemOperand(rsp, kPointerSize)); // this |
2567 __ movp(MemOperand(rsp, 2 * kPointerSize), scratch); | 2564 __ movp(MemOperand(rsp, 2 * kPointerSize), scratch); |
2568 __ movp(scratch, MemOperand(rsp, 0)); // home_object | 2565 __ movp(scratch, MemOperand(rsp, 0)); // home_object |
2569 __ movp(MemOperand(rsp, kPointerSize), scratch); | 2566 __ movp(MemOperand(rsp, kPointerSize), scratch); |
2570 __ movp(MemOperand(rsp, 0), rax); | 2567 __ movp(MemOperand(rsp, 0), rax); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2758 Expression* key = expr->key(); | 2755 Expression* key = expr->key(); |
2759 | 2756 |
2760 if (key->IsPropertyName()) { | 2757 if (key->IsPropertyName()) { |
2761 if (!expr->IsSuperAccess()) { | 2758 if (!expr->IsSuperAccess()) { |
2762 VisitForAccumulatorValue(expr->obj()); | 2759 VisitForAccumulatorValue(expr->obj()); |
2763 DCHECK(!rax.is(LoadDescriptor::ReceiverRegister())); | 2760 DCHECK(!rax.is(LoadDescriptor::ReceiverRegister())); |
2764 __ movp(LoadDescriptor::ReceiverRegister(), rax); | 2761 __ movp(LoadDescriptor::ReceiverRegister(), rax); |
2765 EmitNamedPropertyLoad(expr); | 2762 EmitNamedPropertyLoad(expr); |
2766 } else { | 2763 } else { |
2767 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2764 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2768 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2765 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var()); |
2769 __ Push(result_register()); | |
2770 EmitNamedSuperPropertyLoad(expr); | 2766 EmitNamedSuperPropertyLoad(expr); |
2771 } | 2767 } |
2772 } else { | 2768 } else { |
2773 if (!expr->IsSuperAccess()) { | 2769 if (!expr->IsSuperAccess()) { |
2774 VisitForStackValue(expr->obj()); | 2770 VisitForStackValue(expr->obj()); |
2775 VisitForAccumulatorValue(expr->key()); | 2771 VisitForAccumulatorValue(expr->key()); |
2776 __ Move(LoadDescriptor::NameRegister(), rax); | 2772 __ Move(LoadDescriptor::NameRegister(), rax); |
2777 __ Pop(LoadDescriptor::ReceiverRegister()); | 2773 __ Pop(LoadDescriptor::ReceiverRegister()); |
2778 EmitKeyedPropertyLoad(expr); | 2774 EmitKeyedPropertyLoad(expr); |
2779 } else { | 2775 } else { |
2780 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); | 2776 VisitForStackValue(expr->obj()->AsSuperReference()->this_var()); |
2781 EmitLoadHomeObject(expr->obj()->AsSuperReference()); | 2777 VisitForStackValue(expr->obj()->AsSuperReference()->home_object_var()); |
2782 __ Push(result_register()); | |
2783 VisitForStackValue(expr->key()); | 2778 VisitForStackValue(expr->key()); |
2784 EmitKeyedSuperPropertyLoad(expr); | 2779 EmitKeyedSuperPropertyLoad(expr); |
2785 } | 2780 } |
2786 } | 2781 } |
2787 PrepareForBailoutForId(expr->LoadId(), TOS_REG); | 2782 PrepareForBailoutForId(expr->LoadId(), TOS_REG); |
2788 context()->Plug(rax); | 2783 context()->Plug(rax); |
2789 } | 2784 } |
2790 | 2785 |
2791 | 2786 |
2792 void FullCodeGenerator::CallIC(Handle<Code> code, | 2787 void FullCodeGenerator::CallIC(Handle<Code> code, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2831 Expression* callee = expr->expression(); | 2826 Expression* callee = expr->expression(); |
2832 DCHECK(callee->IsProperty()); | 2827 DCHECK(callee->IsProperty()); |
2833 Property* prop = callee->AsProperty(); | 2828 Property* prop = callee->AsProperty(); |
2834 DCHECK(prop->IsSuperAccess()); | 2829 DCHECK(prop->IsSuperAccess()); |
2835 | 2830 |
2836 SetSourcePosition(prop->position()); | 2831 SetSourcePosition(prop->position()); |
2837 Literal* key = prop->key()->AsLiteral(); | 2832 Literal* key = prop->key()->AsLiteral(); |
2838 DCHECK(!key->value()->IsSmi()); | 2833 DCHECK(!key->value()->IsSmi()); |
2839 // Load the function from the receiver. | 2834 // Load the function from the receiver. |
2840 SuperReference* super_ref = prop->obj()->AsSuperReference(); | 2835 SuperReference* super_ref = prop->obj()->AsSuperReference(); |
2841 EmitLoadHomeObject(super_ref); | 2836 VisitForStackValue(super_ref->home_object_var()); |
2842 __ Push(rax); | |
2843 VisitForAccumulatorValue(super_ref->this_var()); | 2837 VisitForAccumulatorValue(super_ref->this_var()); |
2844 __ Push(rax); | 2838 __ Push(rax); |
2845 __ Push(rax); | 2839 __ Push(rax); |
2846 __ Push(Operand(rsp, kPointerSize * 2)); | 2840 __ Push(Operand(rsp, kPointerSize * 2)); |
2847 __ Push(key->value()); | 2841 __ Push(key->value()); |
2848 | 2842 |
2849 // Stack here: | 2843 // Stack here: |
2850 // - home_object | 2844 // - home_object |
2851 // - this (receiver) | 2845 // - this (receiver) |
2852 // - this (receiver) <-- LoadFromSuper will pop here and below. | 2846 // - this (receiver) <-- LoadFromSuper will pop here and below. |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2889 | 2883 |
2890 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { | 2884 void FullCodeGenerator::EmitKeyedSuperCallWithLoadIC(Call* expr) { |
2891 Expression* callee = expr->expression(); | 2885 Expression* callee = expr->expression(); |
2892 DCHECK(callee->IsProperty()); | 2886 DCHECK(callee->IsProperty()); |
2893 Property* prop = callee->AsProperty(); | 2887 Property* prop = callee->AsProperty(); |
2894 DCHECK(prop->IsSuperAccess()); | 2888 DCHECK(prop->IsSuperAccess()); |
2895 | 2889 |
2896 SetSourcePosition(prop->position()); | 2890 SetSourcePosition(prop->position()); |
2897 // Load the function from the receiver. | 2891 // Load the function from the receiver. |
2898 SuperReference* super_ref = prop->obj()->AsSuperReference(); | 2892 SuperReference* super_ref = prop->obj()->AsSuperReference(); |
2899 EmitLoadHomeObject(super_ref); | 2893 VisitForStackValue(super_ref->home_object_var()); |
2900 __ Push(rax); | |
2901 VisitForAccumulatorValue(super_ref->this_var()); | 2894 VisitForAccumulatorValue(super_ref->this_var()); |
2902 __ Push(rax); | 2895 __ Push(rax); |
2903 __ Push(rax); | 2896 __ Push(rax); |
2904 __ Push(Operand(rsp, kPointerSize * 2)); | 2897 __ Push(Operand(rsp, kPointerSize * 2)); |
2905 VisitForStackValue(prop->key()); | 2898 VisitForStackValue(prop->key()); |
2906 | 2899 |
2907 // Stack here: | 2900 // Stack here: |
2908 // - home_object | 2901 // - home_object |
2909 // - this (receiver) | 2902 // - this (receiver) |
2910 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. | 2903 // - this (receiver) <-- LoadKeyedFromSuper will pop here and below. |
(...skipping 1877 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4788 switch (assign_type) { | 4781 switch (assign_type) { |
4789 case NAMED_PROPERTY: { | 4782 case NAMED_PROPERTY: { |
4790 VisitForStackValue(prop->obj()); | 4783 VisitForStackValue(prop->obj()); |
4791 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0)); | 4784 __ movp(LoadDescriptor::ReceiverRegister(), Operand(rsp, 0)); |
4792 EmitNamedPropertyLoad(prop); | 4785 EmitNamedPropertyLoad(prop); |
4793 break; | 4786 break; |
4794 } | 4787 } |
4795 | 4788 |
4796 case NAMED_SUPER_PROPERTY: { | 4789 case NAMED_SUPER_PROPERTY: { |
4797 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 4790 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
4798 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 4791 VisitForAccumulatorValue( |
| 4792 prop->obj()->AsSuperReference()->home_object_var()); |
4799 __ Push(result_register()); | 4793 __ Push(result_register()); |
4800 __ Push(MemOperand(rsp, kPointerSize)); | 4794 __ Push(MemOperand(rsp, kPointerSize)); |
4801 __ Push(result_register()); | 4795 __ Push(result_register()); |
4802 EmitNamedSuperPropertyLoad(prop); | 4796 EmitNamedSuperPropertyLoad(prop); |
4803 break; | 4797 break; |
4804 } | 4798 } |
4805 | 4799 |
4806 case KEYED_SUPER_PROPERTY: { | 4800 case KEYED_SUPER_PROPERTY: { |
4807 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); | 4801 VisitForStackValue(prop->obj()->AsSuperReference()->this_var()); |
4808 EmitLoadHomeObject(prop->obj()->AsSuperReference()); | 4802 VisitForStackValue(prop->obj()->AsSuperReference()->home_object_var()); |
4809 __ Push(result_register()); | |
4810 VisitForAccumulatorValue(prop->key()); | 4803 VisitForAccumulatorValue(prop->key()); |
4811 __ Push(result_register()); | 4804 __ Push(result_register()); |
4812 __ Push(MemOperand(rsp, 2 * kPointerSize)); | 4805 __ Push(MemOperand(rsp, 2 * kPointerSize)); |
4813 __ Push(MemOperand(rsp, 2 * kPointerSize)); | 4806 __ Push(MemOperand(rsp, 2 * kPointerSize)); |
4814 __ Push(result_register()); | 4807 __ Push(result_register()); |
4815 EmitKeyedSuperPropertyLoad(prop); | 4808 EmitKeyedSuperPropertyLoad(prop); |
4816 break; | 4809 break; |
4817 } | 4810 } |
4818 | 4811 |
4819 case KEYED_PROPERTY: { | 4812 case KEYED_PROPERTY: { |
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5395 DCHECK_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), | 5388 DCHECK_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), |
5396 Assembler::target_address_at(call_target_address, | 5389 Assembler::target_address_at(call_target_address, |
5397 unoptimized_code)); | 5390 unoptimized_code)); |
5398 return OSR_AFTER_STACK_CHECK; | 5391 return OSR_AFTER_STACK_CHECK; |
5399 } | 5392 } |
5400 | 5393 |
5401 | 5394 |
5402 } } // namespace v8::internal | 5395 } } // namespace v8::internal |
5403 | 5396 |
5404 #endif // V8_TARGET_ARCH_X64 | 5397 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |