Index: src/compiler/linkage.h |
diff --git a/src/compiler/linkage.h b/src/compiler/linkage.h |
index 31b9faca2a9f15f145141b2160c117b6c24fb3cd..45d15c9eead52a5cdc709f20b4c19fc4261accbf 100644 |
--- a/src/compiler/linkage.h |
+++ b/src/compiler/linkage.h |
@@ -63,9 +63,10 @@ class CallDescriptor final : public ZoneObject { |
public: |
// Describes the kind of this call, which determines the target. |
enum Kind { |
- kCallCodeObject, // target is a Code object |
- kCallJSFunction, // target is a JSFunction object |
- kCallAddress // target is a machine pointer |
+ kCallCodeObject, // target is a Code object |
+ kCallJSFunction, // target is a JSFunction object |
+ kCallAddress, // target is a machine pointer |
+ kInterpreterDispatch // target is an interpreter bytecode handler |
}; |
enum Flag { |
@@ -111,6 +112,8 @@ class CallDescriptor final : public ZoneObject { |
// Returns {true} if this descriptor is a call to a JSFunction. |
bool IsJSFunctionCall() const { return kind_ == kCallJSFunction; } |
+ bool IsInterpreterDispatch() const { return kind_ == kInterpreterDispatch; } |
+ |
// The number of return values from this call. |
size_t ReturnCount() const { return machine_sig_->return_count(); } |
@@ -235,6 +238,12 @@ class Linkage : public ZoneObject { |
static CallDescriptor* GetSimplifiedCDescriptor(Zone* zone, |
const MachineSignature* sig); |
+ // Creates a call descriptor for interpreter handler code stubs. These are not |
+ // intended to be called directly but are instead dispatched to by the |
+ // interpreter. |
+ static CallDescriptor* GetInterpreterDispatchDescriptor( |
+ Zone* zone, const MachineSignature* sig); |
+ |
// Get the location of an (incoming) parameter to this function. |
LinkageLocation GetParameterLocation(int index) const { |
return incoming_->GetInputLocation(index + 1); // + 1 to skip target. |