diff options
| author | Ben Murdoch <benm@google.com> | 2012-04-12 10:51:47 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2012-04-16 16:41:38 +0100 |
| commit | 3ef787dbeca8a5fb1086949cda830dccee07bfbd (patch) | |
| tree | 0a22edd97aa148abffdd405c585b22213fccbc82 /src/frames-inl.h | |
| parent | 85b71799222b55eb5dd74ea26efe0c64ab655c8c (diff) | |
| download | android_external_v8-3ef787dbeca8a5fb1086949cda830dccee07bfbd.tar.gz android_external_v8-3ef787dbeca8a5fb1086949cda830dccee07bfbd.tar.bz2 android_external_v8-3ef787dbeca8a5fb1086949cda830dccee07bfbd.zip | |
Merge V8 at 3.9.24.13
Bug: 5688872
Change-Id: Id0aa8d23375030494d3189c31774059c0f5398fc
Diffstat (limited to 'src/frames-inl.h')
| -rw-r--r-- | src/frames-inl.h | 92 |
1 files changed, 83 insertions, 9 deletions
diff --git a/src/frames-inl.h b/src/frames-inl.h index 7ba79bf1..27a526ce 100644 --- a/src/frames-inl.h +++ b/src/frames-inl.h @@ -1,4 +1,4 @@ -// Copyright 2011 the V8 project authors. All rights reserved. +// Copyright 2012 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -68,7 +68,7 @@ inline bool StackHandler::includes(Address address) const { inline void StackHandler::Iterate(ObjectVisitor* v, Code* holder) const { v->VisitPointer(context_address()); - StackFrame::IteratePc(v, pc_address(), holder); + v->VisitPointer(code_address()); } @@ -77,9 +77,24 @@ inline StackHandler* StackHandler::FromAddress(Address address) { } -inline StackHandler::State StackHandler::state() const { +inline bool StackHandler::is_js_entry() const { + return kind() == JS_ENTRY; +} + + +inline bool StackHandler::is_catch() const { + return kind() == CATCH; +} + + +inline bool StackHandler::is_finally() const { + return kind() == FINALLY; +} + + +inline StackHandler::Kind StackHandler::kind() const { const int offset = StackHandlerConstants::kStateOffset; - return static_cast<State>(Memory::int_at(address() + offset)); + return KindField::decode(Memory::unsigned_at(address() + offset)); } @@ -89,9 +104,9 @@ inline Object** StackHandler::context_address() const { } -inline Address* StackHandler::pc_address() const { - const int offset = StackHandlerConstants::kPCOffset; - return reinterpret_cast<Address*>(address() + offset); +inline Object** StackHandler::code_address() const { + const int offset = StackHandlerConstants::kCodeOffset; + return reinterpret_cast<Object**>(address() + offset); } @@ -105,8 +120,33 @@ inline StackHandler* StackFrame::top_handler() const { } +inline Code* StackFrame::LookupCode() const { + return GetContainingCode(isolate(), pc()); +} + + inline Code* StackFrame::GetContainingCode(Isolate* isolate, Address pc) { - return isolate->pc_to_code_cache()->GetCacheEntry(pc)->code; + return isolate->inner_pointer_to_code_cache()->GetCacheEntry(pc)->code; +} + + +inline EntryFrame::EntryFrame(StackFrameIterator* iterator) + : StackFrame(iterator) { +} + + +inline EntryConstructFrame::EntryConstructFrame(StackFrameIterator* iterator) + : EntryFrame(iterator) { +} + + +inline ExitFrame::ExitFrame(StackFrameIterator* iterator) + : StackFrame(iterator) { +} + + +inline StandardFrame::StandardFrame(StackFrameIterator* iterator) + : StackFrame(iterator) { } @@ -151,7 +191,12 @@ inline bool StandardFrame::IsArgumentsAdaptorFrame(Address fp) { inline bool StandardFrame::IsConstructFrame(Address fp) { Object* marker = Memory::Object_at(fp + StandardFrameConstants::kMarkerOffset); - return marker == Smi::FromInt(CONSTRUCT); + return marker == Smi::FromInt(StackFrame::CONSTRUCT); +} + + +inline JavaScriptFrame::JavaScriptFrame(StackFrameIterator* iterator) + : StandardFrame(iterator) { } @@ -190,6 +235,26 @@ inline Object* JavaScriptFrame::function() const { } +inline OptimizedFrame::OptimizedFrame(StackFrameIterator* iterator) + : JavaScriptFrame(iterator) { +} + + +inline ArgumentsAdaptorFrame::ArgumentsAdaptorFrame( + StackFrameIterator* iterator) : JavaScriptFrame(iterator) { +} + + +inline InternalFrame::InternalFrame(StackFrameIterator* iterator) + : StandardFrame(iterator) { +} + + +inline ConstructFrame::ConstructFrame(StackFrameIterator* iterator) + : InternalFrame(iterator) { +} + + template<typename Iterator> inline JavaScriptFrameIteratorTemp<Iterator>::JavaScriptFrameIteratorTemp( Isolate* isolate) @@ -197,6 +262,15 @@ inline JavaScriptFrameIteratorTemp<Iterator>::JavaScriptFrameIteratorTemp( if (!done()) Advance(); } + +template<typename Iterator> +inline JavaScriptFrameIteratorTemp<Iterator>::JavaScriptFrameIteratorTemp( + Isolate* isolate, ThreadLocalTop* top) + : iterator_(isolate, top) { + if (!done()) Advance(); +} + + template<typename Iterator> inline JavaScriptFrame* JavaScriptFrameIteratorTemp<Iterator>::frame() const { // TODO(1233797): The frame hierarchy needs to change. It's |
