diff options
author | Michaƫl Zasso <targos@protonmail.com> | 2017-09-12 11:34:59 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-09-13 16:15:18 +0200 |
commit | d82e1075dbc2cec2d6598ade10c1f43805f690fd (patch) | |
tree | ccd242b9b491dfc341d1099fe11b0ef528839877 /deps/v8/src/frames.h | |
parent | b4b7ac6ae811b2b5a3082468115dfb5a5246fe3f (diff) | |
download | node-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.h | 121 |
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); |