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.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/deps/v8/src/compiler/linkage.h b/deps/v8/src/compiler/linkage.h
index 6f302bc534..b515aca2da 100644
--- a/deps/v8/src/compiler/linkage.h
+++ b/deps/v8/src/compiler/linkage.h
@@ -5,10 +5,12 @@
#ifndef V8_COMPILER_LINKAGE_H_
#define V8_COMPILER_LINKAGE_H_
+#include "src/base/compiler-specific.h"
#include "src/base/flags.h"
#include "src/compiler/frame.h"
#include "src/compiler/operator.h"
#include "src/frames.h"
+#include "src/globals.h"
#include "src/machine-type.h"
#include "src/runtime/runtime.h"
#include "src/zone/zone.h"
@@ -161,7 +163,8 @@ typedef Signature<LinkageLocation> LocationSignature;
// Describes a call to various parts of the compiler. Every call has the notion
// of a "target", which is the first input to the call.
-class CallDescriptor final : public ZoneObject {
+class V8_EXPORT_PRIVATE CallDescriptor final
+ : public NON_EXPORTED_BASE(ZoneObject) {
public:
// Describes the kind of this call, which determines the target.
enum Kind {
@@ -184,7 +187,9 @@ class CallDescriptor final : public ZoneObject {
// Causes the code generator to initialize the root register.
kInitializeRootRegister = 1u << 7,
// Does not ever try to allocate space on our heap.
- kNoAllocate = 1u << 8
+ kNoAllocate = 1u << 8,
+ // Push argument count as part of function prologue.
+ kPushArgumentCount = 1u << 9
};
typedef base::Flags<Flag> Flags;
@@ -246,6 +251,7 @@ class CallDescriptor final : public ZoneObject {
bool NeedsFrameState() const { return flags() & kNeedsFrameState; }
bool SupportsTailCalls() const { return flags() & kSupportsTailCalls; }
bool UseNativeStack() const { return flags() & kUseNativeStack; }
+ bool PushArgumentCount() const { return flags() & kPushArgumentCount; }
bool InitializeRootRegister() const {
return flags() & kInitializeRootRegister;
}
@@ -293,6 +299,8 @@ class CallDescriptor final : public ZoneObject {
bool CanTailCall(const Node* call) const;
+ int CalculateFixedFrameSize() const;
+
private:
friend class Linkage;
@@ -313,7 +321,8 @@ class CallDescriptor final : public ZoneObject {
DEFINE_OPERATORS_FOR_FLAGS(CallDescriptor::Flags)
std::ostream& operator<<(std::ostream& os, const CallDescriptor& d);
-std::ostream& operator<<(std::ostream& os, const CallDescriptor::Kind& k);
+V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
+ const CallDescriptor::Kind& k);
// Defines the linkage for a compilation, including the calling conventions
// for incoming parameters and return value(s) as well as the outgoing calling
@@ -329,7 +338,7 @@ std::ostream& operator<<(std::ostream& os, const CallDescriptor::Kind& k);
// Call[JSFunction] function, rcvr, arg 1, [...], new, #arg, context
// Call[Runtime] CEntryStub, arg 1, arg 2, [...], fun, #arg, context
// Call[BytecodeDispatch] address, arg 1, arg 2, [...]
-class Linkage : public ZoneObject {
+class V8_EXPORT_PRIVATE Linkage : public NON_EXPORTED_BASE(ZoneObject) {
public:
explicit Linkage(CallDescriptor* incoming) : incoming_(incoming) {}