diff options
Diffstat (limited to 'deps/v8/src/frames-inl.h')
-rw-r--r-- | deps/v8/src/frames-inl.h | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/deps/v8/src/frames-inl.h b/deps/v8/src/frames-inl.h index 9430cad0d..595180624 100644 --- a/deps/v8/src/frames-inl.h +++ b/deps/v8/src/frames-inl.h @@ -29,6 +29,8 @@ #define V8_FRAMES_INL_H_ #include "frames.h" +#include "isolate.h" +#include "v8memory.h" #if V8_TARGET_ARCH_IA32 #include "ia32/frames-ia32.h" @@ -86,11 +88,21 @@ inline Address* StackHandler::pc_address() const { } +inline StackFrame::StackFrame(StackFrameIterator* iterator) + : iterator_(iterator), isolate_(iterator_->isolate()) { +} + + inline StackHandler* StackFrame::top_handler() const { return iterator_->handler(); } +inline Code* StackFrame::GetContainingCode(Isolate* isolate, Address pc) { + return isolate->pc_to_code_cache()->GetCacheEntry(pc)->code; +} + + inline Object* StandardFrame::GetExpression(int index) const { return Memory::Object_at(GetExpressionAddress(index)); } @@ -172,6 +184,13 @@ inline Object* JavaScriptFrame::function() const { template<typename Iterator> +inline JavaScriptFrameIteratorTemp<Iterator>::JavaScriptFrameIteratorTemp( + Isolate* isolate) + : iterator_(isolate) { + if (!done()) Advance(); +} + +template<typename Iterator> inline JavaScriptFrame* JavaScriptFrameIteratorTemp<Iterator>::frame() const { // TODO(1233797): The frame hierarchy needs to change. It's // problematic that we can't use the safe-cast operator to cast to @@ -185,11 +204,9 @@ inline JavaScriptFrame* JavaScriptFrameIteratorTemp<Iterator>::frame() const { template<typename Iterator> JavaScriptFrameIteratorTemp<Iterator>::JavaScriptFrameIteratorTemp( - StackFrame::Id id) { - while (!done()) { - Advance(); - if (frame()->id() == id) return; - } + Isolate* isolate, StackFrame::Id id) + : iterator_(isolate) { + AdvanceToId(id); } @@ -210,6 +227,15 @@ void JavaScriptFrameIteratorTemp<Iterator>::AdvanceToArgumentsFrame() { template<typename Iterator> +void JavaScriptFrameIteratorTemp<Iterator>::AdvanceToId(StackFrame::Id id) { + while (!done()) { + Advance(); + if (frame()->id() == id) return; + } +} + + +template<typename Iterator> void JavaScriptFrameIteratorTemp<Iterator>::Reset() { iterator_.Reset(); if (!done()) Advance(); |