v8
3.11.10(node0.8.26)
V8 is Google's open source JavaScript engine
|
#include <ic.h>
Public Types | |
enum | UtilityId { kUtilityCount } |
enum | FrameDepth { NO_EXTRA_FRAME = 0, EXTRA_CALL_FRAME = 1 } |
typedef InlineCacheState | State |
Public Member Functions | |
IC (FrameDepth depth, Isolate *isolate) | |
virtual | ~IC () |
Code * | target () const |
Address | address () const |
virtual bool | IsGeneric () const |
RelocInfo::Mode | ComputeMode () |
bool | IsContextual (Handle< Object > receiver) |
bool | SlowIsContextual () |
Static Public Member Functions | |
static Address | AddressFromUtilityId (UtilityId id) |
static State | StateFrom (Code *target, Object *receiver, Object *name) |
static void | Clear (Address address) |
static InlineCacheHolderFlag | GetCodeCacheForObject (Object *object, JSObject *holder) |
static InlineCacheHolderFlag | GetCodeCacheForObject (JSObject *object, JSObject *holder) |
static JSObject * | GetCodeCacheHolder (Object *object, InlineCacheHolderFlag holder) |
Protected Member Functions | |
Address | fp () const |
Address | pc () const |
Isolate * | isolate () const |
void | set_target (Code *code) |
Failure * | TypeError (const char *type, Handle< Object > object, Handle< Object > key) |
Failure * | ReferenceError (const char *type, Handle< String > name) |
Static Protected Member Functions | |
static Code * | GetTargetAtAddress (Address address) |
static void | SetTargetAtAddress (Address address, Code *target) |
static void | PostPatching (Address address, Code *target, Code *old_target) |
typedef InlineCacheState State |
enum FrameDepth |
IC | ( | FrameDepth | depth, |
Isolate * | isolate | ||
) |
Definition at line 112 of file ic.cc.
References Memory::Address_at(), ASSERT, Isolate::c_entry_fp(), IC::EXTRA_CALL_FRAME, IC::fp(), ExitFrameConstants::kCallerFPOffset, StandardFrameConstants::kCallerFPOffset, ExitFrameConstants::kCallerPCOffset, StandardFrameConstants::kCallerPCOffset, and Isolate::thread_local_top().
|
inline |
Definition at line 41 of file ic-inl.h.
References Assembler::kCallTargetAddressOffset, IC::pc(), and Assembler::target_address_at().
Referenced by IC::ComputeMode(), BASE_EMBEDDED< Visitor >::done(), Isolate::IsExternallyCaught(), v8::internal::RUNTIME_FUNCTION(), IC::set_target(), Isolate::ShouldReportException(), and IC::target().
|
static |
|
static |
Definition at line 340 of file ic.cc.
References Code::BINARY_OP_IC, Code::CALL_IC, CallICBase::Clear(), Code::COMPARE_IC, v8::internal::DEBUG_BREAK, IC::GetTargetAtAddress(), Code::ic_state(), Code::KEYED_CALL_IC, Code::KEYED_LOAD_IC, Code::KEYED_STORE_IC, Code::kind(), Code::LOAD_IC, Code::STORE_IC, Code::TO_BOOLEAN_IC, Code::UNARY_OP_IC, and UNREACHABLE.
Referenced by Code::ClearInlineCaches(), IncrementalMarkingMarkingVisitor::VisitCodeTarget(), and StaticMarkingVisitor::VisitCodeTarget().
RelocInfo::Mode ComputeMode | ( | ) |
Definition at line 267 of file ic.cc.
References IC::address(), Code::cast(), RelocIterator::done(), IC::isolate(), NONE, and UNREACHABLE.
Referenced by IC::SlowIsContextual().
|
inlineprotected |
Definition at line 138 of file ic.h.
Referenced by IC::IC(), CallICBase::LoadFunction(), and CallICBase::TryUpdateExtraICState().
|
inlinestatic |
Definition at line 99 of file ic-inl.h.
References ASSERT, JSObject::cast(), and v8::internal::PROTOTYPE_MAP.
|
inlinestatic |
Definition at line 110 of file ic-inl.h.
References JSObject::HasFastProperties(), v8::internal::OWN_MAP, and v8::internal::PROTOTYPE_MAP.
|
inlinestatic |
Definition at line 127 of file ic-inl.h.
References ASSERT, JSObject::cast(), and v8::internal::OWN_MAP.
Definition at line 69 of file ic-inl.h.
References ASSERT, Code::GetCodeFromTargetAddress(), Code::is_inline_cache_stub(), IC::target(), and Assembler::target_address_at().
Referenced by IC::Clear(), IC::SetTargetAtAddress(), and IC::target().
Definition at line 115 of file ic.h.
References ASSERT, and IC::SlowIsContextual().
Referenced by LoadIC::Load(), KeyedLoadIC::Load(), CallICBase::LoadFunction(), and StoreIC::Store().
|
inlinevirtual |
Reimplemented in KeyedStoreIC, and KeyedLoadIC.
|
inlineprotected |
Definition at line 140 of file ic.h.
Referenced by IC::ComputeMode(), CallICBase::ComputeMonomorphicStub(), KeyedLoadIC::ComputePolymorphicStub(), KeyedStoreIC::ComputePolymorphicStub(), KeyedIC::ComputeStub(), LoadIC::Load(), KeyedLoadIC::Load(), CallICBase::LoadFunction(), KeyedCallIC::LoadFunction(), ParserApi::Parse(), CallICBase::ReceiverToObjectIfRequired(), IC::ReferenceError(), StoreIC::Store(), KeyedStoreIC::Store(), KeyedLoadIC::string_stub(), CallICBase::TryUpdateExtraICState(), IC::TypeError(), and CallICBase::UpdateCaches().
|
inlineprotected |
Definition at line 139 of file ic.h.
Referenced by IC::address().
Definition at line 309 of file ic.cc.
References TypeFeedbackInfo::cast(), Code::FUNCTION, HeapObject::GetHeap(), Code::ic_state(), TypeFeedbackInfo::ic_with_type_info_count(), Code::is_inline_cache_stub(), Heap::isolate(), Code::kind(), TypeFeedbackInfo::set_ic_with_type_info_count(), and Code::set_profiler_ticks().
Referenced by IC::SetTargetAtAddress().
Definition at line 291 of file ic.cc.
References Isolate::factory(), v8::internal::HandleVector(), IC::isolate(), Factory::NewReferenceError(), and Isolate::Throw().
Referenced by LoadIC::Load(), KeyedLoadIC::Load(), CallICBase::LoadFunction(), and StoreIC::Store().
|
inlineprotected |
Definition at line 149 of file ic.h.
References IC::address(), and IC::SetTargetAtAddress().
Referenced by LoadIC::Load(), KeyedLoadIC::Load(), KeyedCallIC::LoadFunction(), UnaryOpIC::patch(), BinaryOpIC::patch(), ToBooleanIC::patch(), and CallICBase::UpdateCaches().
Definition at line 80 of file ic-inl.h.
References ASSERT, Code::extra_ic_state(), HeapObject::GetHeap(), Code::GetStrictMode(), IC::GetTargetAtAddress(), Heap::incremental_marking(), Code::instruction_start(), Code::is_compare_ic_stub(), Code::is_inline_cache_stub(), Code::KEYED_STORE_IC, IC::PostPatching(), IncrementalMarking::RecordCodeTargetPatch(), Assembler::set_target_address_at(), and Code::STORE_IC.
Referenced by CallICBase::Clear(), and IC::set_target().
|
inline |
Definition at line 124 of file ic.h.
References IC::ComputeMode().
Referenced by IC::IsContextual().
Definition at line 227 of file ic.cc.
References Code::CALL_IC, Code::ic_state(), Code::KEYED_CALL_IC, Code::KEYED_LOAD_IC, Code::KEYED_STORE_IC, Code::kind(), v8::internal::MONOMORPHIC, v8::internal::MONOMORPHIC_PROTOTYPE_FAILURE, and v8::internal::UNINITIALIZED.
Referenced by v8::internal::RUNTIME_FUNCTION().
|
inline |
Definition at line 97 of file ic.h.
References IC::address(), and IC::GetTargetAtAddress().
Referenced by CallIC::CallIC(), CallICBase::ComputeMonomorphicStub(), KeyedIC::ComputeStub(), IC::GetTargetAtAddress(), KeyedLoadIC::IsGeneric(), KeyedStoreIC::IsGeneric(), KeyedCallIC::KeyedCallIC(), KeyedLoadIC::KeyedLoadIC(), KeyedStoreIC::KeyedStoreIC(), KeyedLoadIC::Load(), KeyedCallIC::LoadFunction(), LoadIC::LoadIC(), CallICBase::ReceiverToObjectIfRequired(), StoreIC::Store(), KeyedStoreIC::Store(), StoreIC::StoreIC(), CallICBase::TryCallAsFunction(), CallICBase::TryUpdateExtraICState(), and CallICBase::UpdateCaches().
Definition at line 280 of file ic.cc.
References Isolate::factory(), v8::internal::HandleVector(), IC::isolate(), Factory::NewTypeError(), and Isolate::Throw().
Referenced by LoadIC::Load(), KeyedLoadIC::Load(), CallICBase::LoadFunction(), KeyedCallIC::LoadFunction(), StoreIC::Store(), and KeyedStoreIC::Store().