summaryrefslogtreecommitdiff
path: root/deps/v8/src/frames.h
diff options
context:
space:
mode:
authorMichaƫl Zasso <targos@protonmail.com>2017-09-12 11:34:59 +0200
committerAnna Henningsen <anna@addaleax.net>2017-09-13 16:15:18 +0200
commitd82e1075dbc2cec2d6598ade10c1f43805f690fd (patch)
treeccd242b9b491dfc341d1099fe11b0ef528839877 /deps/v8/src/frames.h
parentb4b7ac6ae811b2b5a3082468115dfb5a5246fe3f (diff)
downloadnode-new-d82e1075dbc2cec2d6598ade10c1f43805f690fd.tar.gz
deps: update V8 to 6.1.534.36
PR-URL: https://github.com/nodejs/node/pull/14730 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/v8/src/frames.h')
-rw-r--r--deps/v8/src/frames.h121
1 files changed, 69 insertions, 52 deletions
diff --git a/deps/v8/src/frames.h b/deps/v8/src/frames.h
index a5355a4e8c..92cce268f1 100644
--- a/deps/v8/src/frames.h
+++ b/deps/v8/src/frames.h
@@ -15,6 +15,7 @@ namespace v8 {
namespace internal {
class AbstractCode;
+class Debug;
class ObjectVisitor;
class StringStream;
@@ -98,23 +99,24 @@ class StackHandler BASE_EMBEDDED {
DISALLOW_IMPLICIT_CONSTRUCTORS(StackHandler);
};
-#define STACK_FRAME_TYPE_LIST(V) \
- V(ENTRY, EntryFrame) \
- V(ENTRY_CONSTRUCT, EntryConstructFrame) \
- V(EXIT, ExitFrame) \
- V(JAVA_SCRIPT, JavaScriptFrame) \
- V(OPTIMIZED, OptimizedFrame) \
- V(WASM_COMPILED, WasmCompiledFrame) \
- V(WASM_TO_JS, WasmToJsFrame) \
- V(JS_TO_WASM, JsToWasmFrame) \
- V(WASM_INTERPRETER_ENTRY, WasmInterpreterEntryFrame) \
- V(INTERPRETED, InterpretedFrame) \
- V(STUB, StubFrame) \
- V(STUB_FAILURE_TRAMPOLINE, StubFailureTrampolineFrame) \
- V(INTERNAL, InternalFrame) \
- V(CONSTRUCT, ConstructFrame) \
- V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame) \
- V(BUILTIN, BuiltinFrame) \
+#define STACK_FRAME_TYPE_LIST(V) \
+ V(ENTRY, EntryFrame) \
+ V(ENTRY_CONSTRUCT, EntryConstructFrame) \
+ V(EXIT, ExitFrame) \
+ V(JAVA_SCRIPT, JavaScriptFrame) \
+ V(OPTIMIZED, OptimizedFrame) \
+ V(WASM_COMPILED, WasmCompiledFrame) \
+ V(WASM_TO_JS, WasmToJsFrame) \
+ V(JS_TO_WASM, JsToWasmFrame) \
+ V(WASM_INTERPRETER_ENTRY, WasmInterpreterEntryFrame) \
+ V(INTERPRETED, InterpretedFrame) \
+ V(STUB, StubFrame) \
+ V(BUILTIN_CONTINUATION, BuiltinContinuationFrame) \
+ V(JAVA_SCRIPT_BUILTIN_CONTINUATION, JavaScriptBuiltinContinuationFrame) \
+ V(INTERNAL, InternalFrame) \
+ V(CONSTRUCT, ConstructFrame) \
+ V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame) \
+ V(BUILTIN, BuiltinFrame) \
V(BUILTIN_EXIT, BuiltinExitFrame)
// Every pointer in a frame has a slot id. On 32-bit platforms, doubles consume
@@ -359,14 +361,13 @@ class ConstructFrameConstants : public TypedFrameConstants {
DEFINE_TYPED_FRAME_SIZES(4);
};
-class StubFailureTrampolineFrameConstants : public InternalFrameConstants {
+class BuiltinContinuationFrameConstants : public TypedFrameConstants {
public:
- static const int kArgumentsArgumentsOffset =
- TYPED_FRAME_PUSHED_VALUE_OFFSET(0);
- static const int kArgumentsLengthOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(1);
- static const int kArgumentsPointerOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(2);
- static const int kFixedHeaderBottomOffset = kArgumentsPointerOffset;
- DEFINE_TYPED_FRAME_SIZES(3);
+ // FP-relative.
+ static const int kFunctionOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(0);
+ static const int kBuiltinOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(1);
+ static const int kArgCOffset = TYPED_FRAME_PUSHED_VALUE_OFFSET(2);
+ DEFINE_TYPED_FRAME_SIZES(2);
};
// Behaves like an exit frame but with target and new target args.
@@ -522,8 +523,11 @@ class StackFrame BASE_EMBEDDED {
bool is_arguments_adaptor() const { return type() == ARGUMENTS_ADAPTOR; }
bool is_builtin() const { return type() == BUILTIN; }
bool is_internal() const { return type() == INTERNAL; }
- bool is_stub_failure_trampoline() const {
- return type() == STUB_FAILURE_TRAMPOLINE;
+ bool is_builtin_continuation() const {
+ return type() == BUILTIN_CONTINUATION;
+ }
+ bool is_java_script_builtin_continuation() const {
+ return type() == JAVA_SCRIPT_BUILTIN_CONTINUATION;
}
bool is_construct() const { return type() == CONSTRUCT; }
bool is_builtin_exit() const { return type() == BUILTIN_EXIT; }
@@ -532,7 +536,8 @@ class StackFrame BASE_EMBEDDED {
bool is_java_script() const {
Type type = this->type();
return (type == JAVA_SCRIPT) || (type == OPTIMIZED) ||
- (type == INTERPRETED) || (type == BUILTIN);
+ (type == INTERPRETED) || (type == BUILTIN) ||
+ (type == JAVA_SCRIPT_BUILTIN_CONTINUATION);
}
bool is_wasm() const {
Type type = this->type();
@@ -1416,51 +1421,59 @@ class InternalFrame: public StandardFrame {
};
-class StubFailureTrampolineFrame: public StandardFrame {
+// Construct frames are special trampoline frames introduced to handle
+// function invocations through 'new'.
+class ConstructFrame: public InternalFrame {
public:
- Type type() const override { return STUB_FAILURE_TRAMPOLINE; }
+ Type type() const override { return CONSTRUCT; }
- // Get the code associated with this frame.
- // This method could be called during marking phase of GC.
- Code* unchecked_code() const override;
+ static ConstructFrame* cast(StackFrame* frame) {
+ DCHECK(frame->is_construct());
+ return static_cast<ConstructFrame*>(frame);
+ }
- void Iterate(RootVisitor* v) const override;
+ protected:
+ inline explicit ConstructFrame(StackFrameIteratorBase* iterator);
- // Architecture-specific register description.
- static Register fp_register();
- static Register context_register();
- static Register constant_pool_pointer_register();
+ private:
+ friend class StackFrameIteratorBase;
+};
- protected:
- inline explicit StubFailureTrampolineFrame(
- StackFrameIteratorBase* iterator);
+class BuiltinContinuationFrame : public InternalFrame {
+ public:
+ Type type() const override { return BUILTIN_CONTINUATION; }
- Address GetCallerStackPointer() const override;
+ static BuiltinContinuationFrame* cast(StackFrame* frame) {
+ DCHECK(frame->is_builtin_continuation());
+ return static_cast<BuiltinContinuationFrame*>(frame);
+ }
+
+ protected:
+ inline explicit BuiltinContinuationFrame(StackFrameIteratorBase* iterator);
private:
friend class StackFrameIteratorBase;
};
-
-// Construct frames are special trampoline frames introduced to handle
-// function invocations through 'new'.
-class ConstructFrame: public InternalFrame {
+class JavaScriptBuiltinContinuationFrame : public JavaScriptFrame {
public:
- Type type() const override { return CONSTRUCT; }
+ Type type() const override { return JAVA_SCRIPT_BUILTIN_CONTINUATION; }
- static ConstructFrame* cast(StackFrame* frame) {
- DCHECK(frame->is_construct());
- return static_cast<ConstructFrame*>(frame);
+ static JavaScriptBuiltinContinuationFrame* cast(StackFrame* frame) {
+ DCHECK(frame->is_java_script_builtin_continuation());
+ return static_cast<JavaScriptBuiltinContinuationFrame*>(frame);
}
+ int ComputeParametersCount() const override;
+
protected:
- inline explicit ConstructFrame(StackFrameIteratorBase* iterator);
+ inline explicit JavaScriptBuiltinContinuationFrame(
+ StackFrameIteratorBase* iterator);
private:
friend class StackFrameIteratorBase;
};
-
class StackFrameIteratorBase BASE_EMBEDDED {
public:
Isolate* isolate() const { return isolate_; }
@@ -1531,12 +1544,16 @@ class JavaScriptFrameIterator BASE_EMBEDDED {
// arguments.
void AdvanceToArgumentsFrame();
+ // Skips the frames that point to the debug context.
+ void AdvanceWhileDebugContext(Debug* debug);
+
private:
StackFrameIterator iterator_;
};
// NOTE: The stack trace frame iterator is an iterator that only traverse proper
-// JavaScript frames that have proper JavaScript functions and WASM frames.
+// JavaScript frames that have proper JavaScript functions and WebAssembly
+// frames.
class StackTraceFrameIterator BASE_EMBEDDED {
public:
explicit StackTraceFrameIterator(Isolate* isolate);