aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/frames.h
diff options
context:
space:
mode:
authorAli Ijaz Sheikh <ofrobots@google.com>2016-01-20 09:45:45 -0800
committerAli Ijaz Sheikh <ofrobots@google.com>2016-01-21 16:53:58 -0800
commitef4170ea03a80b21b2d8a65ce432efaa370fe2fa (patch)
treee382b1b38b729cd8155b56b441c3a563914854a3 /deps/v8/src/frames.h
parent5f6dfab832979999d2f806fc1a2f1c11a25b0f35 (diff)
downloadandroid-node-v8-ef4170ea03a80b21b2d8a65ce432efaa370fe2fa.tar.gz
android-node-v8-ef4170ea03a80b21b2d8a65ce432efaa370fe2fa.tar.bz2
android-node-v8-ef4170ea03a80b21b2d8a65ce432efaa370fe2fa.zip
deps: upgrade to V8 4.8.271.17
Pick up V8 4.8 branch-head. This branch brings in @@isConcatSpreadable, @@toPrimitive and ToLength ES6 changes. For full details see: http://v8project.blogspot.de/2015/11/v8-release-48.html https://github.com/v8/v8/commit/fa163e2 Ref: https://github.com/nodejs/node/pull/4399 PR-URL: https://github.com/nodejs/node/pull/4785 Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/v8/src/frames.h')
-rw-r--r--deps/v8/src/frames.h143
1 files changed, 78 insertions, 65 deletions
diff --git a/deps/v8/src/frames.h b/deps/v8/src/frames.h
index d6bfd7aab8..f00cbdb887 100644
--- a/deps/v8/src/frames.h
+++ b/deps/v8/src/frames.h
@@ -99,16 +99,17 @@ class StackHandler BASE_EMBEDDED {
#define STACK_FRAME_TYPE_LIST(V) \
- V(ENTRY, EntryFrame) \
- V(ENTRY_CONSTRUCT, EntryConstructFrame) \
- V(EXIT, ExitFrame) \
- V(JAVA_SCRIPT, JavaScriptFrame) \
- V(OPTIMIZED, OptimizedFrame) \
- V(STUB, StubFrame) \
+ V(ENTRY, EntryFrame) \
+ V(ENTRY_CONSTRUCT, EntryConstructFrame) \
+ V(EXIT, ExitFrame) \
+ V(JAVA_SCRIPT, JavaScriptFrame) \
+ V(OPTIMIZED, OptimizedFrame) \
+ V(INTERPRETED, InterpretedFrame) \
+ V(STUB, StubFrame) \
V(STUB_FAILURE_TRAMPOLINE, StubFailureTrampolineFrame) \
- V(INTERNAL, InternalFrame) \
- V(CONSTRUCT, ConstructFrame) \
- V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame)
+ V(INTERNAL, InternalFrame) \
+ V(CONSTRUCT, ConstructFrame) \
+ V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame)
class StandardFrameConstants : public AllStatic {
@@ -181,6 +182,7 @@ class InterpreterFrameConstants : public AllStatic {
static const int kLastParamFromRegisterPointer =
StandardFrameConstants::kFixedFrameSize + kPointerSize;
static const int kFunctionFromRegisterPointer = kPointerSize;
+ static const int kContextFromRegisterPointer = 2 * kPointerSize;
};
@@ -246,7 +248,8 @@ class StackFrame BASE_EMBEDDED {
bool is_java_script() const {
Type type = this->type();
- return (type == JAVA_SCRIPT) || (type == OPTIMIZED);
+ return (type == JAVA_SCRIPT) || (type == OPTIMIZED) ||
+ (type == INTERPRETED);
}
// Accessors.
@@ -373,18 +376,18 @@ class StackFrame BASE_EMBEDDED {
// Entry frames are used to enter JavaScript execution from C.
class EntryFrame: public StackFrame {
public:
- virtual Type type() const { return ENTRY; }
+ Type type() const override { return ENTRY; }
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
// Garbage collection support.
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
static EntryFrame* cast(StackFrame* frame) {
DCHECK(frame->is_entry());
return static_cast<EntryFrame*>(frame);
}
- virtual void SetCallerFp(Address caller_fp);
+ void SetCallerFp(Address caller_fp) override;
protected:
inline explicit EntryFrame(StackFrameIteratorBase* iterator);
@@ -392,11 +395,11 @@ class EntryFrame: public StackFrame {
// The caller stack pointer for entry frames is always zero. The
// real information about the caller frame is available through the
// link to the top exit frame.
- virtual Address GetCallerStackPointer() const { return 0; }
+ Address GetCallerStackPointer() const override { return 0; }
private:
- virtual void ComputeCallerState(State* state) const;
- virtual Type GetCallerState(State* state) const;
+ void ComputeCallerState(State* state) const override;
+ Type GetCallerState(State* state) const override;
friend class StackFrameIteratorBase;
};
@@ -404,9 +407,9 @@ class EntryFrame: public StackFrame {
class EntryConstructFrame: public EntryFrame {
public:
- virtual Type type() const { return ENTRY_CONSTRUCT; }
+ Type type() const override { return ENTRY_CONSTRUCT; }
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
static EntryConstructFrame* cast(StackFrame* frame) {
DCHECK(frame->is_entry_construct());
@@ -424,16 +427,16 @@ class EntryConstructFrame: public EntryFrame {
// Exit frames are used to exit JavaScript execution and go to C.
class ExitFrame: public StackFrame {
public:
- virtual Type type() const { return EXIT; }
+ Type type() const override { return EXIT; }
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
Object*& code_slot() const;
// Garbage collection support.
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
- virtual void SetCallerFp(Address caller_fp);
+ void SetCallerFp(Address caller_fp) override;
static ExitFrame* cast(StackFrame* frame) {
DCHECK(frame->is_exit());
@@ -450,10 +453,10 @@ class ExitFrame: public StackFrame {
protected:
inline explicit ExitFrame(StackFrameIteratorBase* iterator);
- virtual Address GetCallerStackPointer() const;
+ Address GetCallerStackPointer() const override;
private:
- virtual void ComputeCallerState(State* state) const;
+ void ComputeCallerState(State* state) const override;
friend class StackFrameIteratorBase;
};
@@ -462,7 +465,7 @@ class ExitFrame: public StackFrame {
class StandardFrame: public StackFrame {
public:
// Testers.
- virtual bool is_standard() const { return true; }
+ bool is_standard() const override { return true; }
// Accessors.
inline Object* context() const;
@@ -473,7 +476,7 @@ class StandardFrame: public StackFrame {
int ComputeExpressionsCount() const;
static Object* GetExpression(Address fp, int index);
- virtual void SetCallerFp(Address caller_fp);
+ void SetCallerFp(Address caller_fp) override;
static StandardFrame* cast(StackFrame* frame) {
DCHECK(frame->is_standard());
@@ -483,7 +486,7 @@ class StandardFrame: public StackFrame {
protected:
inline explicit StandardFrame(StackFrameIteratorBase* iterator);
- virtual void ComputeCallerState(State* state) const;
+ void ComputeCallerState(State* state) const override;
// Accessors.
inline Address caller_fp() const;
@@ -547,7 +550,7 @@ class FrameSummary BASE_EMBEDDED {
class JavaScriptFrame: public StandardFrame {
public:
- virtual Type type() const { return JAVA_SCRIPT; }
+ Type type() const override { return JAVA_SCRIPT; }
// Accessors.
inline JSFunction* function() const;
@@ -578,7 +581,7 @@ class JavaScriptFrame: public StandardFrame {
// Determines whether this frame includes inlined activations. To get details
// about the inlined frames use {GetFunctions} and {Summarize}.
- bool HasInlinedFrames();
+ bool HasInlinedFrames() const;
// Returns the original constructor function that was used in the constructor
// call to this frame. Note that this is only valid on constructor frames.
@@ -591,18 +594,17 @@ class JavaScriptFrame: public StandardFrame {
int GetArgumentsLength() const;
// Garbage collection support.
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
// Printing support.
- virtual void Print(StringStream* accumulator,
- PrintMode mode,
- int index) const;
+ void Print(StringStream* accumulator, PrintMode mode,
+ int index) const override;
// Determine the code for the frame.
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
// Return a list with JSFunctions of this frame.
- virtual void GetFunctions(List<JSFunction*>* functions);
+ virtual void GetFunctions(List<JSFunction*>* functions) const;
// Build a list with summaries for this frame including all inlined frames.
virtual void Summarize(List<FrameSummary>* frames);
@@ -632,7 +634,7 @@ class JavaScriptFrame: public StandardFrame {
protected:
inline explicit JavaScriptFrame(StackFrameIteratorBase* iterator);
- virtual Address GetCallerStackPointer() const;
+ Address GetCallerStackPointer() const override;
virtual int GetNumberOfIncomingArguments() const;
@@ -649,18 +651,18 @@ class JavaScriptFrame: public StandardFrame {
class StubFrame : public StandardFrame {
public:
- virtual Type type() const { return STUB; }
+ Type type() const override { return STUB; }
// GC support.
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
// Determine the code for the frame.
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
protected:
inline explicit StubFrame(StackFrameIteratorBase* iterator);
- virtual Address GetCallerStackPointer() const;
+ Address GetCallerStackPointer() const override;
virtual int GetNumberOfIncomingArguments() const;
@@ -670,24 +672,24 @@ class StubFrame : public StandardFrame {
class OptimizedFrame : public JavaScriptFrame {
public:
- virtual Type type() const { return OPTIMIZED; }
+ Type type() const override { return OPTIMIZED; }
// GC support.
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
// Return a list with JSFunctions of this frame.
// The functions are ordered bottom-to-top (i.e. functions.last()
// is the top-most activation)
- virtual void GetFunctions(List<JSFunction*>* functions);
+ void GetFunctions(List<JSFunction*>* functions) const override;
- virtual void Summarize(List<FrameSummary>* frames);
+ void Summarize(List<FrameSummary>* frames) override;
// Lookup exception handler for current {pc}, returns -1 if none found. Also
// returns the expected number of stack slots at the handler site.
- virtual int LookupExceptionHandlerInTable(
- int* stack_slots, HandlerTable::CatchPrediction* prediction);
+ int LookupExceptionHandlerInTable(
+ int* stack_slots, HandlerTable::CatchPrediction* prediction) override;
- DeoptimizationInputData* GetDeoptimizationData(int* deopt_index);
+ DeoptimizationInputData* GetDeoptimizationData(int* deopt_index) const;
static int StackSlotOffsetRelativeToFp(int slot_index);
@@ -701,15 +703,26 @@ class OptimizedFrame : public JavaScriptFrame {
};
+class InterpretedFrame : public JavaScriptFrame {
+ Type type() const override { return INTERPRETED; }
+
+ protected:
+ inline explicit InterpretedFrame(StackFrameIteratorBase* iterator);
+
+ private:
+ friend class StackFrameIteratorBase;
+};
+
+
// Arguments adaptor frames are automatically inserted below
// JavaScript frames when the actual number of parameters does not
// match the formal number of parameters.
class ArgumentsAdaptorFrame: public JavaScriptFrame {
public:
- virtual Type type() const { return ARGUMENTS_ADAPTOR; }
+ Type type() const override { return ARGUMENTS_ADAPTOR; }
// Determine the code for the frame.
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
static ArgumentsAdaptorFrame* cast(StackFrame* frame) {
DCHECK(frame->is_arguments_adaptor());
@@ -717,16 +730,15 @@ class ArgumentsAdaptorFrame: public JavaScriptFrame {
}
// Printing support.
- virtual void Print(StringStream* accumulator,
- PrintMode mode,
- int index) const;
+ void Print(StringStream* accumulator, PrintMode mode,
+ int index) const override;
protected:
inline explicit ArgumentsAdaptorFrame(StackFrameIteratorBase* iterator);
- virtual int GetNumberOfIncomingArguments() const;
+ int GetNumberOfIncomingArguments() const override;
- virtual Address GetCallerStackPointer() const;
+ Address GetCallerStackPointer() const override;
private:
friend class StackFrameIteratorBase;
@@ -735,13 +747,13 @@ class ArgumentsAdaptorFrame: public JavaScriptFrame {
class InternalFrame: public StandardFrame {
public:
- virtual Type type() const { return INTERNAL; }
+ Type type() const override { return INTERNAL; }
// Garbage collection support.
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
// Determine the code for the frame.
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
static InternalFrame* cast(StackFrame* frame) {
DCHECK(frame->is_internal());
@@ -751,7 +763,7 @@ class InternalFrame: public StandardFrame {
protected:
inline explicit InternalFrame(StackFrameIteratorBase* iterator);
- virtual Address GetCallerStackPointer() const;
+ Address GetCallerStackPointer() const override;
private:
friend class StackFrameIteratorBase;
@@ -768,13 +780,13 @@ class StubFailureTrampolineFrame: public StandardFrame {
static const int kCallerStackParameterCountFrameOffset =
StandardFrameConstants::kMarkerOffset - 2 * kPointerSize;
- virtual Type type() const { return STUB_FAILURE_TRAMPOLINE; }
+ Type type() const override { return STUB_FAILURE_TRAMPOLINE; }
// Get the code associated with this frame.
// This method could be called during marking phase of GC.
- virtual Code* unchecked_code() const;
+ Code* unchecked_code() const override;
- virtual void Iterate(ObjectVisitor* v) const;
+ void Iterate(ObjectVisitor* v) const override;
// Architecture-specific register description.
static Register fp_register();
@@ -785,7 +797,7 @@ class StubFailureTrampolineFrame: public StandardFrame {
inline explicit StubFailureTrampolineFrame(
StackFrameIteratorBase* iterator);
- virtual Address GetCallerStackPointer() const;
+ Address GetCallerStackPointer() const override;
private:
friend class StackFrameIteratorBase;
@@ -796,7 +808,7 @@ class StubFailureTrampolineFrame: public StandardFrame {
// function invocations through 'new'.
class ConstructFrame: public InternalFrame {
public:
- virtual Type type() const { return CONSTRUCT; }
+ Type type() const override { return CONSTRUCT; }
static ConstructFrame* cast(StackFrame* frame) {
DCHECK(frame->is_construct());
@@ -949,6 +961,7 @@ class StackFrameLocator BASE_EMBEDDED {
// zone memory.
Vector<StackFrame*> CreateStackMap(Isolate* isolate, Zone* zone);
-} } // namespace v8::internal
+} // namespace internal
+} // namespace v8
#endif // V8_FRAMES_H_