v8
3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
|
#include <deoptimizer.h>
Data Structures | |
class | BASE_EMBEDDED |
class | TableEntryGenerator |
Public Types | |
enum | BailoutType { EAGER, LAZY, OSR, DEBUGGER } |
Public Member Functions | |
int | output_count () const |
int | jsframe_count () const |
~Deoptimizer () | |
void | MaterializeHeapObjects (JavaScriptFrameIterator *it) |
int | ConvertJSFrameIndexToFrameIndex (int jsframe_index) |
Public Member Functions inherited from Malloced | |
void * | operator new (size_t size) |
void | operator delete (void *p) |
Static Public Member Functions | |
static Deoptimizer * | New (JSFunction *function, BailoutType type, unsigned bailout_id, Address from, int fp_to_sp_delta, Isolate *isolate) |
static Deoptimizer * | Grab (Isolate *isolate) |
static void | EnsureRelocSpaceForLazyDeoptimization (Handle< Code > code) |
static void | DeoptimizeFunction (JSFunction *function) |
static void | ReplaceCodeForRelatedFunctions (JSFunction *function, Code *code) |
static void | DeoptimizeAll () |
static void | DeoptimizeGlobalObject (JSObject *object) |
static void | VisitAllOptimizedFunctionsForContext (Context *context, OptimizedFunctionVisitor *visitor) |
static void | VisitAllOptimizedFunctionsForGlobalObject (JSObject *object, OptimizedFunctionVisitor *visitor) |
static void | VisitAllOptimizedFunctions (OptimizedFunctionVisitor *visitor) |
static int | patch_size () |
static void | PatchStackCheckCode (Code *unoptimized_code, Code *check_code, Code *replacement_code) |
static void | PatchStackCheckCodeAt (Code *unoptimized_code, Address pc_after, Code *check_code, Code *replacement_code) |
static void | RevertStackCheckCode (Code *unoptimized_code, Code *check_code, Code *replacement_code) |
static void | RevertStackCheckCodeAt (Code *unoptimized_code, Address pc_after, Code *check_code, Code *replacement_code) |
static void | ComputeOutputFrames (Deoptimizer *deoptimizer) |
static Address | GetDeoptimizationEntry (int id, BailoutType type) |
static int | GetDeoptimizationId (Address addr, BailoutType type) |
static int | GetOutputInfo (DeoptimizationOutputData *data, BailoutId node_id, SharedFunctionInfo *shared) |
static int | input_offset () |
static int | output_count_offset () |
static int | output_offset () |
static int | has_alignment_padding_offset () |
static int | GetDeoptimizedCodeCount (Isolate *isolate) |
Static Public Member Functions inherited from Malloced | |
static void | FatalProcessOutOfMemory () |
static void * | New (size_t size) |
static void | Delete (void *p) |
Static Public Attributes | |
static const int | kNotDeoptimizationEntry = -1 |
Friends | |
class | FrameDescription |
class | DeoptimizingCodeListNode |
class | DeoptimizedFrameInfo |
Definition at line 123 of file deoptimizer.h.
enum BailoutType |
Enumerator | |
---|---|
EAGER | |
LAZY | |
OSR | |
DEBUGGER |
Definition at line 125 of file deoptimizer.h.
~Deoptimizer | ( | ) |
Definition at line 440 of file deoptimizer.cc.
References ASSERT, and v8::internal::NULL.
|
static |
Definition at line 349 of file deoptimizer.cc.
int ConvertJSFrameIndexToFrameIndex | ( | int | jsframe_index | ) |
Definition at line 109 of file deoptimizer.cc.
References FrameDescription::GetFrameType().
|
static |
Definition at line 250 of file deoptimizer.cc.
References v8::internal::PrintF(), and Deoptimizer::VisitAllOptimizedFunctions().
Referenced by Testing::DeoptimizeAll(), and Object::ForceDelete().
|
static |
Definition at line 47 of file deoptimizer-arm.cc.
References ASSERT, MacroAssembler::Call(), MacroAssembler::CallSizeNotPredictableCodeSize(), DeoptimizationInputData::cast(), v8::internal::code(), DeoptimizationInputData::DeoptCount(), Isolate::deoptimizer_data(), Deoptimizer::DeoptimizingCodeListNode, Deoptimizer::GetDeoptimizationEntry(), HeapObject::GetIsolate(), Isolate::heap(), Code::instruction_end(), Code::instruction_start(), MarkCompactCollector::InvalidateCode(), Code::InvalidateRelocation(), Assembler::kInstrSize, Deoptimizer::LAZY, Heap::mark_compact_collector(), CodePatcher::masm(), NONE, v8::internal::NULL, Deoptimizer::patch_size(), v8::internal::PrintF(), Deoptimizer::ReplaceCodeForRelatedFunctions(), and DeoptimizingCodeListNode::set_next().
Referenced by v8::internal::RUNTIME_FUNCTION(), and DeoptimizingVisitor::VisitFunction().
|
static |
Definition at line 262 of file deoptimizer.cc.
References Deoptimizer::VisitAllOptimizedFunctionsForGlobalObject().
Referenced by Object::TurnOnAccessCheck().
|
static |
Definition at line 457 of file deoptimizer.cc.
References MemoryChunk::area_start(), ASSERT, Deoptimizer::EAGER, and v8::internal::NULL.
Referenced by Deoptimizer::DeoptimizeFunction().
|
static |
Definition at line 478 of file deoptimizer.cc.
References MemoryChunk::area_start(), ASSERT_EQ, Deoptimizer::EAGER, Deoptimizer::kNotDeoptimizationEntry, and v8::internal::NULL.
|
static |
Definition at line 523 of file deoptimizer.cc.
References Isolate::deoptimizer_data(), DeoptimizingCodeListNode::next(), and v8::internal::NULL.
|
static |
Definition at line 498 of file deoptimizer.cc.
References DeoptimizationOutputData::AstId(), SharedFunctionInfo::DebugName(), DeoptimizationOutputData::DeoptPoints(), DeoptimizationOutputData::PcAndState(), v8::internal::PrintF(), SharedFunctionInfo::SourceCodePrint(), StringStream::ToCString(), String::ToCString(), UNREACHABLE, and Smi::value().
Referenced by OptimizedFrame::Summarize(), and SharedFunctionInfo::VerifyBailoutId().
|
static |
Definition at line 99 of file deoptimizer.cc.
References ASSERT, Isolate::deoptimizer_data(), and v8::internal::NULL.
Referenced by v8::internal::RUNTIME_FUNCTION().
|
inlinestatic |
Definition at line 242 of file deoptimizer.h.
References OFFSET_OF.
|
inlinestatic |
Definition at line 236 of file deoptimizer.h.
References OFFSET_OF.
|
inline |
Definition at line 137 of file deoptimizer.h.
Referenced by Deoptimizer::MaterializeHeapObjects().
void MaterializeHeapObjects | ( | JavaScriptFrameIterator * | it | ) |
Definition at line 639 of file deoptimizer.cc.
References List< T, P >::Add(), ASSERT, ASSERT_EQ, ASSERT_NE, JSObject::cast(), JSFunction::cast(), StandardFrame::ComputeExpressionsCount(), Deoptimizer::DEBUGGER, Isolate::factory(), JavaScriptFrame::function(), Accessors::FunctionGetArguments(), StandardFrame::GetExpression(), JavaScriptFrame::has_adapted_arguments(), Isolate::heap(), Handle< T >::is_null(), Deoptimizer::jsframe_count(), Factory::NewArgumentsObject(), Factory::NewFixedArray(), Factory::NewNumber(), v8::internal::NULL, Memory::Object_at(), v8::internal::PrintF(), and StandardFrame::SetExpression().
Referenced by v8::internal::RUNTIME_FUNCTION().
|
static |
Definition at line 79 of file deoptimizer.cc.
References ASSERT, Isolate::deoptimizer_data(), and v8::internal::NULL.
|
inline |
Definition at line 134 of file deoptimizer.h.
|
inlinestatic |
Definition at line 237 of file deoptimizer.h.
References OFFSET_OF.
|
inlinestatic |
Definition at line 240 of file deoptimizer.h.
References OFFSET_OF.
|
static |
Definition at line 41 of file deoptimizer-arm.cc.
References Assembler::kInstrSize.
Referenced by Deoptimizer::DeoptimizeFunction().
|
static |
Definition at line 1264 of file deoptimizer.cc.
References ASSERT, Code::instruction_start(), Code::kind(), v8::internal::kIntSize, Deoptimizer::PatchStackCheckCodeAt(), Code::stack_check_table_offset(), and Memory::uint32_at().
Referenced by RuntimeProfiler::AttemptOnStackReplacement().
|
static |
Definition at line 121 of file deoptimizer-arm.cc.
References ASSERT, ASSERT_EQ, Code::entry(), HeapObject::GetHeap(), Heap::incremental_marking(), Assembler::instr_at(), Memory::int32_at(), Assembler::IsLdrPcImmediateOffset(), v8::internal::kBlxIp, Assembler::kInstrSize, CodePatcher::masm(), Assembler::nop(), IncrementalMarking::RecordCodeTargetPatch(), Memory::uint16_at(), and Memory::uint32_at().
Referenced by Deoptimizer::PatchStackCheckCode().
|
static |
Definition at line 1476 of file deoptimizer.cc.
References JSFunction::cast(), Context::native_context(), and JSFunction::set_code().
Referenced by Deoptimizer::DeoptimizeFunction().
|
static |
Definition at line 1286 of file deoptimizer.cc.
References ASSERT, Code::instruction_start(), Code::kind(), v8::internal::kIntSize, Deoptimizer::RevertStackCheckCodeAt(), Code::stack_check_table_offset(), and Memory::uint32_at().
Referenced by v8::internal::RUNTIME_FUNCTION().
|
static |
Definition at line 169 of file deoptimizer-arm.cc.
References ASSERT, ASSERT_EQ, Assembler::b(), v8::internal::cs, Code::entry(), HeapObject::GetHeap(), Heap::incremental_marking(), Assembler::instr_at(), Memory::int32_at(), Assembler::IsLdrPcImmediateOffset(), v8::internal::kBlxIp, Assembler::kInstrSize, CodePatcher::masm(), v8::internal::pl, IncrementalMarking::RecordCodeTargetPatch(), Memory::uint16_at(), and Memory::uint32_at().
Referenced by Deoptimizer::RevertStackCheckCode().
|
static |
Definition at line 315 of file deoptimizer.cc.
References Context::cast(), JSObject::cast(), FixedArray::get(), Context::GLOBAL_OBJECT_INDEX, Context::NEXT_CONTEXT_LINK, and Deoptimizer::VisitAllOptimizedFunctionsForGlobalObject().
Referenced by Deoptimizer::DeoptimizeAll().
|
static |
Definition at line 270 of file deoptimizer.cc.
References ASSERT, JSFunction::cast(), v8::internal::DELETE_ON_EXIT, HeapObject::GetIsolate(), Context::OptimizedFunctionsListHead(), Isolate::runtime_zone(), and v8::internal::snapshot().
Referenced by Deoptimizer::VisitAllOptimizedFunctionsForGlobalObject().
|
static |
Definition at line 299 of file deoptimizer.cc.
References ASSERT, GlobalObject::cast(), Object::GetPrototype(), and Deoptimizer::VisitAllOptimizedFunctionsForContext().
Referenced by Deoptimizer::DeoptimizeGlobalObject(), and Deoptimizer::VisitAllOptimizedFunctions().
|
friend |
Definition at line 371 of file deoptimizer.h.
|
friend |
Definition at line 370 of file deoptimizer.h.
Referenced by Deoptimizer::DeoptimizeFunction().
|
friend |
Definition at line 369 of file deoptimizer.h.
|
static |
Definition at line 248 of file deoptimizer.h.
Referenced by Deoptimizer::GetDeoptimizationId().