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 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1314 | 1314 |
1315 void FullCodeGenerator::EmitLoadHomeObject(SuperReference* expr) { | 1315 void FullCodeGenerator::EmitLoadHomeObject(SuperReference* expr) { |
1316 Comment cnmt(masm_, "[ SuperReference "); | 1316 Comment cnmt(masm_, "[ SuperReference "); |
1317 | 1317 |
1318 __ movp(LoadDescriptor::ReceiverRegister(), | 1318 __ movp(LoadDescriptor::ReceiverRegister(), |
1319 Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); | 1319 Operand(rbp, JavaScriptFrameConstants::kFunctionOffset)); |
1320 | 1320 |
1321 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol()); | 1321 Handle<Symbol> home_object_symbol(isolate()->heap()->home_object_symbol()); |
1322 __ Move(LoadDescriptor::NameRegister(), home_object_symbol); | 1322 __ Move(LoadDescriptor::NameRegister(), home_object_symbol); |
1323 | 1323 |
1324 CallLoadIC(NOT_CONTEXTUAL, expr->HomeObjectFeedbackId()); | 1324 if (FLAG_vector_ics) { |
| 1325 __ Move(VectorLoadICDescriptor::SlotRegister(), |
| 1326 Smi::FromInt(expr->HomeObjectFeedbackSlot())); |
| 1327 CallLoadIC(NOT_CONTEXTUAL); |
| 1328 } else { |
| 1329 CallLoadIC(NOT_CONTEXTUAL, expr->HomeObjectFeedbackId()); |
| 1330 } |
| 1331 |
1325 | 1332 |
1326 __ Cmp(rax, isolate()->factory()->undefined_value()); | 1333 __ Cmp(rax, isolate()->factory()->undefined_value()); |
1327 Label done; | 1334 Label done; |
1328 __ j(not_equal, &done); | 1335 __ j(not_equal, &done); |
1329 __ CallRuntime(Runtime::kThrowNonMethodError, 0); | 1336 __ CallRuntime(Runtime::kThrowNonMethodError, 0); |
1330 __ bind(&done); | 1337 __ bind(&done); |
1331 } | 1338 } |
1332 | 1339 |
1333 | 1340 |
1334 void FullCodeGenerator::EmitLoadGlobalCheckExtensions(VariableProxy* proxy, | 1341 void FullCodeGenerator::EmitLoadGlobalCheckExtensions(VariableProxy* proxy, |
(...skipping 3710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5045 DCHECK_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), | 5052 DCHECK_EQ(isolate->builtins()->OsrAfterStackCheck()->entry(), |
5046 Assembler::target_address_at(call_target_address, | 5053 Assembler::target_address_at(call_target_address, |
5047 unoptimized_code)); | 5054 unoptimized_code)); |
5048 return OSR_AFTER_STACK_CHECK; | 5055 return OSR_AFTER_STACK_CHECK; |
5049 } | 5056 } |
5050 | 5057 |
5051 | 5058 |
5052 } } // namespace v8::internal | 5059 } } // namespace v8::internal |
5053 | 5060 |
5054 #endif // V8_TARGET_ARCH_X64 | 5061 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |