| Index: src/compiler/interpreter-assembler.cc
|
| diff --git a/src/compiler/interpreter-assembler.cc b/src/compiler/interpreter-assembler.cc
|
| index 6203245fb50b3f1e8f38b799cc27a796f57ce158..d8266974a28220eddcf6da997716068286bcb4b5 100644
|
| --- a/src/compiler/interpreter-assembler.cc
|
| +++ b/src/compiler/interpreter-assembler.cc
|
| @@ -14,6 +14,7 @@
|
| #include "src/compiler/raw-machine-assembler.h"
|
| #include "src/compiler/schedule.h"
|
| #include "src/frames.h"
|
| +#include "src/interface-descriptors.h"
|
| #include "src/interpreter/bytecodes.h"
|
| #include "src/macro-assembler.h"
|
| #include "src/zone.h"
|
| @@ -223,6 +224,35 @@ Node* InterpreterAssembler::LoadContextSlot(int slot_index) {
|
| }
|
|
|
|
|
| +Node* InterpreterAssembler::LoadTypeFeedbackVector() {
|
| + Node* function = raw_assembler_->Load(
|
| + kMachAnyTagged, RegisterFileRawPointer(),
|
| + IntPtrConstant(InterpreterFrameConstants::kFunctionFromRegisterPointer));
|
| + Node* shared_info =
|
| + LoadObjectField(function, JSFunction::kSharedFunctionInfoOffset);
|
| + Node* vector =
|
| + LoadObjectField(shared_info, SharedFunctionInfo::kFeedbackVectorOffset);
|
| + return vector;
|
| +}
|
| +
|
| +
|
| +Node* InterpreterAssembler::CallIC(CallInterfaceDescriptor descriptor,
|
| + Node* target, Node* arg1, Node* arg2,
|
| + Node* arg3, Node* arg4) {
|
| + CallDescriptor* call_descriptor = Linkage::GetStubCallDescriptor(
|
| + isolate(), zone(), descriptor, 0, CallDescriptor::kNoFlags);
|
| +
|
| + Node** args = zone()->NewArray<Node*>(5);
|
| + args[0] = arg1;
|
| + args[1] = arg2;
|
| + args[2] = arg3;
|
| + args[3] = arg4;
|
| + args[4] = ContextTaggedPointer();
|
| +
|
| + return raw_assembler_->CallN(call_descriptor, target, args);
|
| +}
|
| +
|
| +
|
| Node* InterpreterAssembler::CallJSBuiltin(int context_index, Node* receiver,
|
| Node** js_args, int js_arg_count) {
|
| Node* global_object = LoadContextSlot(Context::GLOBAL_OBJECT_INDEX);
|
|
|