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.h43
1 files changed, 26 insertions, 17 deletions
diff --git a/deps/v8/src/frames.h b/deps/v8/src/frames.h
index 05a2d2b01b..a5355a4e8c 100644
--- a/deps/v8/src/frames.h
+++ b/deps/v8/src/frames.h
@@ -6,12 +6,18 @@
#define V8_FRAMES_H_
#include "src/allocation.h"
+#include "src/flags.h"
#include "src/handles.h"
+#include "src/objects.h"
#include "src/safepoint-table.h"
namespace v8 {
namespace internal {
+class AbstractCode;
+class ObjectVisitor;
+class StringStream;
+
#if V8_TARGET_ARCH_ARM64
typedef uint64_t RegList;
#else
@@ -30,6 +36,7 @@ int JSCallerSavedCode(int n);
// Forward declarations.
class ExternalCallbackScope;
class Isolate;
+class RootVisitor;
class StackFrameIteratorBase;
class ThreadLocalTop;
class WasmInstanceObject;
@@ -346,8 +353,10 @@ class ConstructFrameConstants : public TypedFrameConstants {
// FP-relative.
static const int kContextOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(0);
static const int kLengthOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(1);
- static const int kImplicitReceiverOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(2);
- DEFINE_TYPED_FRAME_SIZES(3);
+ static const int kConstructorOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(2);
+ static const int kNewTargetOrImplicitReceiverOffset =
+ TYPED_FRAME_PUSHED_VALUE_OFFSET(3);
+ DEFINE_TYPED_FRAME_SIZES(4);
};
class StubFailureTrampolineFrameConstants : public InternalFrameConstants {
@@ -589,8 +598,8 @@ class StackFrame BASE_EMBEDDED {
SafepointEntry* safepoint_entry,
unsigned* stack_slots);
- virtual void Iterate(ObjectVisitor* v) const = 0;
- static void IteratePc(ObjectVisitor* v, Address* pc_address,
+ virtual void Iterate(RootVisitor* v) const = 0;
+ static void IteratePc(RootVisitor* v, Address* pc_address,
Address* constant_pool_address, Code* holder);
// Sets a callback function for return-address rewriting profilers
@@ -661,7 +670,7 @@ class EntryFrame: public StackFrame {
Code* unchecked_code() const override;
// Garbage collection support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
static EntryFrame* cast(StackFrame* frame) {
DCHECK(frame->is_entry());
@@ -714,7 +723,7 @@ class ExitFrame: public StackFrame {
Object*& code_slot() const;
// Garbage collection support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
void SetCallerFp(Address caller_fp) override;
@@ -993,7 +1002,7 @@ class StandardFrame : public StackFrame {
// Iterate over expression stack including stack handlers, locals,
// and parts of the fixed part including context and code fields.
- void IterateExpressions(ObjectVisitor* v) const;
+ void IterateExpressions(RootVisitor* v) const;
// Returns the address of the n'th expression stack element.
virtual Address GetExpressionAddress(int n) const;
@@ -1007,7 +1016,7 @@ class StandardFrame : public StackFrame {
static inline bool IsConstructFrame(Address fp);
// Used by OptimizedFrames and StubFrames.
- void IterateCompiledFrame(ObjectVisitor* v) const;
+ void IterateCompiledFrame(RootVisitor* v) const;
private:
friend class StackFrame;
@@ -1057,7 +1066,7 @@ class JavaScriptFrame : public StandardFrame {
int GetArgumentsLength() const;
// Garbage collection support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Printing support.
void Print(StringStream* accumulator, PrintMode mode,
@@ -1109,7 +1118,7 @@ class JavaScriptFrame : public StandardFrame {
// Garbage collection support. Iterates over incoming arguments,
// receiver, and any callee-saved registers.
- void IterateArguments(ObjectVisitor* v) const;
+ void IterateArguments(RootVisitor* v) const;
virtual void PrintFrameKind(StringStream* accumulator) const {}
@@ -1125,7 +1134,7 @@ class StubFrame : public StandardFrame {
Type type() const override { return STUB; }
// GC support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Determine the code for the frame.
Code* unchecked_code() const override;
@@ -1152,7 +1161,7 @@ class OptimizedFrame : public JavaScriptFrame {
Type type() const override { return OPTIMIZED; }
// GC support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Return a list with {SharedFunctionInfo} objects of this frame.
// The functions are ordered bottom-to-top (i.e. functions.last()
@@ -1285,7 +1294,7 @@ class WasmCompiledFrame final : public StandardFrame {
Type type() const override { return WASM_COMPILED; }
// GC support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Printing support.
void Print(StringStream* accumulator, PrintMode mode,
@@ -1327,7 +1336,7 @@ class WasmInterpreterEntryFrame final : public StandardFrame {
Type type() const override { return WASM_INTERPRETER_ENTRY; }
// GC support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Printing support.
void Print(StringStream* accumulator, PrintMode mode,
@@ -1344,6 +1353,7 @@ class WasmInterpreterEntryFrame final : public StandardFrame {
WasmInstanceObject* wasm_instance() const;
Script* script() const override;
int position() const override;
+ Object* context() const override;
static WasmInterpreterEntryFrame* cast(StackFrame* frame) {
DCHECK(frame->is_wasm_interpreter_entry());
@@ -1386,7 +1396,7 @@ class InternalFrame: public StandardFrame {
Type type() const override { return INTERNAL; }
// Garbage collection support.
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Determine the code for the frame.
Code* unchecked_code() const override;
@@ -1414,7 +1424,7 @@ class StubFailureTrampolineFrame: public StandardFrame {
// This method could be called during marking phase of GC.
Code* unchecked_code() const override;
- void Iterate(ObjectVisitor* v) const override;
+ void Iterate(RootVisitor* v) const override;
// Architecture-specific register description.
static Register fp_register();
@@ -1527,7 +1537,6 @@ class JavaScriptFrameIterator BASE_EMBEDDED {
// NOTE: The stack trace frame iterator is an iterator that only traverse proper
// JavaScript frames that have proper JavaScript functions and WASM frames.
-// This excludes the problematic functions in runtime.js.
class StackTraceFrameIterator BASE_EMBEDDED {
public:
explicit StackTraceFrameIterator(Isolate* isolate);