OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/compiler/interpreter-assembler.h" | 5 #include "src/compiler/interpreter-assembler.h" |
6 | 6 |
7 #include <ostream> | 7 #include <ostream> |
8 | 8 |
9 #include "src/compiler/graph.h" | 9 #include "src/compiler/graph.h" |
10 #include "src/compiler/instruction-selector.h" | 10 #include "src/compiler/instruction-selector.h" |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 IntPtrConstant(InterpreterFrameConstants::kFunctionFromRegisterPointer)); | 230 IntPtrConstant(InterpreterFrameConstants::kFunctionFromRegisterPointer)); |
231 Node* shared_info = | 231 Node* shared_info = |
232 LoadObjectField(function, JSFunction::kSharedFunctionInfoOffset); | 232 LoadObjectField(function, JSFunction::kSharedFunctionInfoOffset); |
233 Node* vector = | 233 Node* vector = |
234 LoadObjectField(shared_info, SharedFunctionInfo::kFeedbackVectorOffset); | 234 LoadObjectField(shared_info, SharedFunctionInfo::kFeedbackVectorOffset); |
235 return vector; | 235 return vector; |
236 } | 236 } |
237 | 237 |
238 | 238 |
239 Node* InterpreterAssembler::CallIC(CallInterfaceDescriptor descriptor, | 239 Node* InterpreterAssembler::CallIC(CallInterfaceDescriptor descriptor, |
| 240 Node* target, Node** args) { |
| 241 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( |
| 242 isolate(), zone(), descriptor, 0, CallDescriptor::kNoFlags); |
| 243 return raw_assembler_->CallN(call_descriptor, target, args); |
| 244 } |
| 245 |
| 246 |
| 247 Node* InterpreterAssembler::CallIC(CallInterfaceDescriptor descriptor, |
240 Node* target, Node* arg1, Node* arg2, | 248 Node* target, Node* arg1, Node* arg2, |
241 Node* arg3, Node* arg4) { | 249 Node* arg3, Node* arg4) { |
242 CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor( | |
243 isolate(), zone(), descriptor, 0, CallDescriptor::kNoFlags); | |
244 | |
245 Node** args = zone()->NewArray<Node*>(5); | 250 Node** args = zone()->NewArray<Node*>(5); |
246 args[0] = arg1; | 251 args[0] = arg1; |
247 args[1] = arg2; | 252 args[1] = arg2; |
248 args[2] = arg3; | 253 args[2] = arg3; |
249 args[3] = arg4; | 254 args[3] = arg4; |
250 args[4] = ContextTaggedPointer(); | 255 args[4] = ContextTaggedPointer(); |
251 | 256 return CallIC(descriptor, target, args); |
252 return raw_assembler_->CallN(call_descriptor, target, args); | |
253 } | 257 } |
254 | 258 |
255 | 259 |
| 260 Node* InterpreterAssembler::CallIC(CallInterfaceDescriptor descriptor, |
| 261 Node* target, Node* arg1, Node* arg2, |
| 262 Node* arg3, Node* arg4, Node* arg5) { |
| 263 Node** args = zone()->NewArray<Node*>(6); |
| 264 args[0] = arg1; |
| 265 args[1] = arg2; |
| 266 args[2] = arg3; |
| 267 args[3] = arg4; |
| 268 args[4] = arg5; |
| 269 args[5] = ContextTaggedPointer(); |
| 270 return CallIC(descriptor, target, args); |
| 271 } |
| 272 |
| 273 |
256 Node* InterpreterAssembler::CallJSBuiltin(int context_index, Node* receiver, | 274 Node* InterpreterAssembler::CallJSBuiltin(int context_index, Node* receiver, |
257 Node** js_args, int js_arg_count) { | 275 Node** js_args, int js_arg_count) { |
258 Node* global_object = LoadContextSlot(Context::GLOBAL_OBJECT_INDEX); | 276 Node* global_object = LoadContextSlot(Context::GLOBAL_OBJECT_INDEX); |
259 Node* native_context = | 277 Node* native_context = |
260 LoadObjectField(global_object, GlobalObject::kNativeContextOffset); | 278 LoadObjectField(global_object, GlobalObject::kNativeContextOffset); |
261 Node* function = LoadContextSlot(native_context, context_index); | 279 Node* function = LoadContextSlot(native_context, context_index); |
262 Node* context = LoadObjectField(function, JSFunction::kContextOffset); | 280 Node* context = LoadObjectField(function, JSFunction::kContextOffset); |
263 | 281 |
264 int index = 0; | 282 int index = 0; |
265 Node** args = zone()->NewArray<Node*>(js_arg_count + 2); | 283 Node** args = zone()->NewArray<Node*>(js_arg_count + 2); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
376 return raw_assembler_->schedule(); | 394 return raw_assembler_->schedule(); |
377 } | 395 } |
378 | 396 |
379 | 397 |
380 Zone* InterpreterAssembler::zone() { return raw_assembler_->zone(); } | 398 Zone* InterpreterAssembler::zone() { return raw_assembler_->zone(); } |
381 | 399 |
382 | 400 |
383 } // namespace interpreter | 401 } // namespace interpreter |
384 } // namespace internal | 402 } // namespace internal |
385 } // namespace v8 | 403 } // namespace v8 |
OLD | NEW |