summaryrefslogtreecommitdiff
path: root/deps/v8/src/frames.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/frames.h')
-rw-r--r--deps/v8/src/frames.h29
1 files changed, 25 insertions, 4 deletions
diff --git a/deps/v8/src/frames.h b/deps/v8/src/frames.h
index e21d62764b..0c988770f6 100644
--- a/deps/v8/src/frames.h
+++ b/deps/v8/src/frames.h
@@ -64,8 +64,9 @@ class InnerPointerToCodeCache {
class StackHandlerConstants : public AllStatic {
public:
static const int kNextOffset = 0 * kPointerSize;
+ static const int kPaddingOffset = 1 * kPointerSize;
- static const int kSize = kNextOffset + kPointerSize;
+ static const int kSize = kPaddingOffset + kPointerSize;
static const int kSlotCount = kSize >> kPointerSizeLog2;
};
@@ -104,7 +105,8 @@ class StackHandler BASE_EMBEDDED {
V(CONSTRUCT, ConstructFrame) \
V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame) \
V(BUILTIN, BuiltinFrame) \
- V(BUILTIN_EXIT, BuiltinExitFrame)
+ V(BUILTIN_EXIT, BuiltinExitFrame) \
+ V(NATIVE, NativeFrame)
// Abstract base class for all stack frames.
class StackFrame BASE_EMBEDDED {
@@ -180,8 +182,7 @@ class StackFrame BASE_EMBEDDED {
// and should be converted back to a stack frame type using MarkerToType.
// Otherwise, the value is a tagged function pointer.
static bool IsTypeMarker(intptr_t function_or_marker) {
- bool is_marker = ((function_or_marker & kSmiTagMask) == kSmiTag);
- return is_marker;
+ return (function_or_marker & kSmiTagMask) == kSmiTag;
}
// Copy constructor; it breaks the connection to host iterator
@@ -328,6 +329,25 @@ class StackFrame BASE_EMBEDDED {
friend class SafeStackFrameIterator;
};
+class NativeFrame : public StackFrame {
+ public:
+ Type type() const override { return NATIVE; }
+
+ Code* unchecked_code() const override { return nullptr; }
+
+ // Garbage collection support.
+ void Iterate(RootVisitor* v) const override {}
+
+ protected:
+ inline explicit NativeFrame(StackFrameIteratorBase* iterator);
+
+ Address GetCallerStackPointer() const override;
+
+ private:
+ void ComputeCallerState(State* state) const override;
+
+ friend class StackFrameIteratorBase;
+};
// Entry frames are used to enter JavaScript execution from C.
class EntryFrame: public StackFrame {
@@ -949,6 +969,7 @@ class WasmCompiledFrame final : public StandardFrame {
// Accessors.
WasmInstanceObject* wasm_instance() const;
+ WasmCodeWrapper wasm_code() const;
uint32_t function_index() const;
Script* script() const override;
int position() const override;