summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/linkage.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/linkage.h')
-rw-r--r--deps/v8/src/compiler/linkage.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/deps/v8/src/compiler/linkage.h b/deps/v8/src/compiler/linkage.h
index b25fe413c9..0f4b8db1c4 100644
--- a/deps/v8/src/compiler/linkage.h
+++ b/deps/v8/src/compiler/linkage.h
@@ -110,9 +110,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
+ kLazyBailout // the call is no-op, only used for lazy bailout
};
enum Flag {
@@ -257,7 +258,7 @@ std::ostream& operator<<(std::ostream& os, const CallDescriptor::Kind& k);
//
// #0 #1 #2 #3 [...] #n
// Call[CodeStub] code, arg 1, arg 2, arg 3, [...], context
-// Call[JSFunction] function, rcvr, arg 1, arg 2, [...], context
+// Call[JSFunction] function, rcvr, arg 1, arg 2, [...], #arg, context
// Call[Runtime] CEntryStub, arg 1, arg 2, arg 3, [...], fun, #arg, context
class Linkage : public ZoneObject {
public:
@@ -271,10 +272,13 @@ class Linkage : public ZoneObject {
static CallDescriptor* GetJSCallDescriptor(Zone* zone, bool is_osr,
int parameter_count,
CallDescriptor::Flags flags);
+
static CallDescriptor* GetRuntimeCallDescriptor(
Zone* zone, Runtime::FunctionId function, int parameter_count,
Operator::Properties properties, bool needs_frame_state = true);
+ static CallDescriptor* GetLazyBailoutDescriptor(Zone* zone);
+
static CallDescriptor* GetStubCallDescriptor(
Isolate* isolate, Zone* zone, const CallInterfaceDescriptor& descriptor,
int stack_parameter_count, CallDescriptor::Flags flags,
@@ -304,12 +308,14 @@ class Linkage : public ZoneObject {
}
// Get the location where this function should place its return value.
- LinkageLocation GetReturnLocation() const {
- return incoming_->GetReturnLocation(0);
+ LinkageLocation GetReturnLocation(size_t index = 0) const {
+ return incoming_->GetReturnLocation(index);
}
// Get the machine type of this function's return value.
- MachineType GetReturnType() const { return incoming_->GetReturnType(0); }
+ MachineType GetReturnType(size_t index = 0) const {
+ return incoming_->GetReturnType(index);
+ }
// Get the frame offset for a given spill slot. The location depends on the
// calling convention and the specific frame layout, and may thus be