diff options
Diffstat (limited to 'deps/v8/src/compiler/linkage.h')
-rw-r--r-- | deps/v8/src/compiler/linkage.h | 17 |
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) {} |