30 class RandomNumberGenerator;
35 class BasicBlockProfiler;
37 class CallInterfaceDescriptorData;
40 class CodeStubDescriptor;
42 class CompilationCache;
43 class ConsStringIteratorOp;
44 class ContextSlotCache;
48 class DeoptimizerData;
51 class ExternalCallbackScope;
52 class ExternalReferenceTable;
54 class FunctionInfoListener;
55 class HandleScopeImplementer;
59 class InlineRuntimeFunctionsTable;
60 class InnerPointerToCodeCache;
61 class MaterializedObjectStore;
62 class CodeAgingHelper;
84 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \
85 !defined(__aarch64__) && V8_TARGET_ARCH_ARM64 || \
86 !defined(__mips__) && V8_TARGET_ARCH_MIPS || \
87 !defined(__mips__) && V8_TARGET_ARCH_MIPS64
101 #define RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate) \
103 Isolate* __isolate__ = (isolate); \
104 if (__isolate__->has_scheduled_exception()) { \
105 return __isolate__->PromoteScheduledException(); \
111 #define RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, value) \
113 Isolate* __isolate__ = (isolate); \
114 if (__isolate__->has_scheduled_exception()) { \
115 __isolate__->PromoteScheduledException(); \
120 #define RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, T) \
121 RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, MaybeHandle<T>())
123 #define ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, dst, call, value) \
125 if (!(call).ToHandle(&dst)) { \
126 DCHECK((isolate)->has_pending_exception()); \
131 #define ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, dst, call) \
132 ASSIGN_RETURN_ON_EXCEPTION_VALUE( \
133 isolate, dst, call, isolate->heap()->exception())
135 #define ASSIGN_RETURN_ON_EXCEPTION(isolate, dst, call, T) \
136 ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, dst, call, MaybeHandle<T>())
138 #define THROW_NEW_ERROR(isolate, call, T) \
140 Handle<Object> __error__; \
141 ASSIGN_RETURN_ON_EXCEPTION(isolate, __error__, isolate->factory()->call, \
143 return isolate->Throw<T>(__error__); \
146 #define THROW_NEW_ERROR_RETURN_FAILURE(isolate, call) \
148 Handle<Object> __error__; \
149 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, __error__, \
150 isolate->factory()->call); \
151 return isolate->Throw(*__error__); \
154 #define RETURN_ON_EXCEPTION_VALUE(isolate, call, value) \
156 if ((call).is_null()) { \
157 DCHECK((isolate)->has_pending_exception()); \
162 #define RETURN_FAILURE_ON_EXCEPTION(isolate, call) \
163 RETURN_ON_EXCEPTION_VALUE(isolate, call, isolate->heap()->exception())
165 #define RETURN_ON_EXCEPTION(isolate, call, T) \
166 RETURN_ON_EXCEPTION_VALUE(isolate, call, MaybeHandle<T>())
169 #define FOR_EACH_ISOLATE_ADDRESS_NAME(C) \
170 C(Handler, handler) \
171 C(CEntryFP, c_entry_fp) \
172 C(Context, context) \
173 C(PendingException, pending_exception) \
174 C(ExternalCaughtException, external_caught_exception) \
175 C(JSEntrySP, js_entry_sp)
225 #define FIELD_ACCESSOR(type, name) \
226 inline void set_##name(type v) { name##_ = v; } \
227 inline type name() const { return name##_; }
257 return reinterpret_cast<Address>(
293 Simulator* simulator_;
317 #if V8_TARGET_ARCH_ARM && !defined(__arm__) || \
318 V8_TARGET_ARCH_ARM64 && !defined(__aarch64__) || \
319 V8_TARGET_ARCH_MIPS && !defined(__mips__) || \
320 V8_TARGET_ARCH_MIPS64 && !defined(__mips__)
322 #define ISOLATE_INIT_SIMULATOR_LIST(V) \
323 V(bool, simulator_initialized, false) \
324 V(HashMap*, simulator_i_cache, NULL) \
325 V(Redirection*, simulator_redirection, NULL)
328 #define ISOLATE_INIT_SIMULATOR_LIST(V)
335 #define ISOLATE_INIT_DEBUG_ARRAY_LIST(V) \
336 V(CommentStatistic, paged_space_comments_statistics, \
337 CommentStatistic::kMaxComments + 1) \
338 V(int, code_kind_statistics, Code::NUMBER_OF_KINDS)
341 #define ISOLATE_INIT_DEBUG_ARRAY_LIST(V)
345 #define ISOLATE_INIT_ARRAY_LIST(V) \
347 V(int32_t, jsregexp_static_offsets_vector, kJSRegexpStaticOffsetsVectorSize) \
348 V(int, bad_char_shift_table, kUC16AlphabetSize) \
349 V(int, good_suffix_shift_table, (kBMMaxShift + 1)) \
350 V(int, suffix_table, (kBMMaxShift + 1)) \
351 V(uint32_t, private_random_seed, 2) \
352 ISOLATE_INIT_DEBUG_ARRAY_LIST(V)
356 #define ISOLATE_INIT_LIST(V) \
358 V(int, serialize_partial_snapshot_cache_length, 0) \
359 V(int, serialize_partial_snapshot_cache_capacity, 0) \
360 V(Object**, serialize_partial_snapshot_cache, NULL) \
362 V(FatalErrorCallback, exception_behavior, NULL) \
363 V(LogEventCallback, event_logger, NULL) \
364 V(AllowCodeGenerationFromStringsCallback, allow_code_gen_callback, NULL) \
367 V(int, next_serial_number, 0) \
368 V(ExternalReferenceRedirectorPointer*, external_reference_redirector, NULL) \
370 V(FunctionInfoListener*, active_function_info_listener, NULL) \
372 V(Relocatable*, relocatable_top, NULL) \
373 V(DebugObjectCache*, string_stream_debug_object_cache, NULL) \
374 V(Object*, string_stream_current_security_token, NULL) \
376 V(ExternalReferenceTable*, external_reference_table, NULL) \
377 V(int, pending_microtask_count, 0) \
378 V(bool, autorun_microtasks, true) \
379 V(HStatistics*, hstatistics, NULL) \
380 V(HStatistics*, tstatistics, NULL) \
381 V(HTracer*, htracer, NULL) \
382 V(CodeTracer*, code_tracer, NULL) \
383 V(bool, fp_stubs_generated, false) \
384 V(int, max_available_threads, 0) \
385 V(uint32_t, per_isolate_assert_data, 0xFFFFFFFFu) \
386 V(InterruptCallback, api_interrupt_callback, NULL) \
387 V(void*, api_interrupt_callback_data, NULL) \
388 ISOLATE_INIT_SIMULATOR_LIST(V)
390 #define THREAD_LOCAL_TOP_ACCESSOR(type, name) \
391 inline void set_##name(type v) { thread_local_top_.name##_ = v; } \
392 inline type name() const { return thread_local_top_.name##_; }
413 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \
414 !defined(__aarch64__) && V8_TARGET_ARCH_ARM64 || \
415 !defined(__mips__) && V8_TARGET_ARCH_MIPS || \
416 !defined(__mips__) && V8_TARGET_ARCH_MIPS64
428 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \
429 !defined(__aarch64__) && V8_TARGET_ARCH_ARM64 || \
430 !defined(__mips__) && V8_TARGET_ARCH_MIPS || \
431 !defined(__mips__) && V8_TARGET_ARCH_MIPS64
445 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \
446 !defined(__aarch64__) && V8_TARGET_ARCH_ARM64 || \
447 !defined(__mips__) && V8_TARGET_ARCH_MIPS || \
448 !defined(__mips__) && V8_TARGET_ARCH_MIPS64
464 #define DECLARE_ENUM(CamelName, hacker_name) k##CamelName##Address,
488 return reinterpret_cast<Isolate*
>(
495 return reinterpret_cast<Isolate*
>(
568 DCHECK(!exception_obj->IsException());
618 return reinterpret_cast<Address>(
640 return exception !=
heap()->termination_exception();
648 return thread->c_entry_fp_;
730 unsigned int magic2));
758 template <
typename T>
761 Throw(*exception, location);
786 bool catchable_by_javascript);
826 #define GLOBAL_ACCESSOR(type, name, initialvalue) \
827 inline type name() const { \
828 DCHECK(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
831 inline void set_##name(type value) { \
832 DCHECK(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
836 #undef GLOBAL_ACCESSOR
838 #define GLOBAL_ARRAY_ACCESSOR(type, name, length) \
839 inline type* name() { \
840 DCHECK(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
841 return &(name##_)[0]; \
844 #undef GLOBAL_ARRAY_ACCESSOR
846 #define NATIVE_CONTEXT_FIELD_ACCESSOR(index, type, name) \
847 Handle<type> name() { \
848 return Handle<type>(native_context()->name(), this); \
850 bool is_##name(type* value) { \
851 return native_context()->is_##name(value); \
854 #undef NATIVE_CONTEXT_FIELD_ACCESSOR
975 HistogramInfo* heap_histograms() {
return heap_histograms_; }
977 JSObject::SpillInformation* js_spill_information() {
978 return &js_spill_information_;
982 Factory*
factory() {
return reinterpret_cast<Factory*
>(
this); }
1042 bool IsDeferredHandle(
Object** location);
1048 FLAG_concurrent_recompilation);
1055 FLAG_concurrent_recompilation);
1071 int id()
const {
return static_cast<int>(
id_); }
1208 ThreadLocalTop* archived_thread_data);
1210 ThreadLocalTop* archived_thread_data);
1291 JSObject::SpillInformation js_spill_information_;
1299 #define GLOBAL_BACKING_STORE(type, name, initialvalue) \
1302 #undef GLOBAL_BACKING_STORE
1304 #define GLOBAL_ARRAY_BACKING_STORE(type, name, length) \
1305 type name##_[length];
1307 #undef GLOBAL_ARRAY_BACKING_STORE
1313 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \
1314 static const intptr_t name##_debug_offset_;
1317 #undef ISOLATE_FIELD_OFFSET
1355 #undef FIELD_ACCESSOR
1356 #undef THREAD_LOCAL_TOP_ACCESSOR
1383 isolate_->set_context(context_.is_null() ?
NULL : *context_);
1384 isolate_->set_save_context(prev_);
1388 SaveContext*
prev() {
return prev_; }
1392 return (c_entry_fp_ == 0) || (c_entry_fp_ > frame->sp());
1406 explicit AssertNoContextChange(
Isolate* isolate)
1407 : isolate_(isolate),
1408 context_(isolate->
context(), isolate) { }
1409 ~AssertNoContextChange() {
1410 DCHECK(isolate_->context() == *context_);
1415 Handle<Context> context_;
1449 StackGuard* stack_guard = isolate_->stack_guard();
1468 int intercept_mask = StackGuard::ALL_INTERRUPTS)
1469 : stack_guard_(isolate->stack_guard()),
1470 intercept_mask_(intercept_mask),
1471 intercepted_flags_(0) {
1472 stack_guard_->PushPostponeInterruptsScope(
this);
1476 stack_guard_->PopPostponeInterruptsScope();
1489 friend class StackGuard;
1498 if (!ShouldRedirect()) {
1503 if (FLAG_redirect_code_traces_to ==
NULL) {
1509 StrNCpy(filename_, FLAG_redirect_code_traces_to, filename_.length());
1517 explicit Scope(CodeTracer* tracer) : tracer_(tracer) { tracer->OpenFile(); }
1520 FILE*
file()
const {
return tracer_->file(); }
1527 if (!ShouldRedirect()) {
1531 if (file_ ==
NULL) {
1539 if (!ShouldRedirect()) {
1543 if (--scope_depth_ == 0) {
1549 FILE*
file()
const {
return file_; }
1553 return FLAG_redirect_code_traces;
Isolate represents an isolated instance of the V8 engine.
void(* UseCounterCallback)(Isolate *isolate, UseCounterFeature feature)
UseCounterFeature
Features reported via the SetUseCounterCallback callback.
StackTraceOptions
Flags that determine what information is placed captured for each StackFrame when grabbing the curren...
An external exception handler.
static void * JSStackComparableAddress(v8::TryCatch *handler)
There are cases when the raw address of C++ TryCatch object cannot be used for comparisons with addre...
Multiple threads in V8 are allowed, but only one thread at a time is allowed to use any given V8 isol...
static FILE * FOpen(const char *path, const char *mode)
static int GetCurrentProcessId()
static double TimeCurrentMillis()
static void * GetThreadLocal(LocalStorageKey key)
static void * GetExistingThreadLocal(LocalStorageKey key)
Object * pending_exception_
PromiseOnStack * promise_on_stack_
bool external_caught_exception_
ExternalCallbackScope * external_callback_scope_
int pending_message_end_pos_
bool IsBelowFrame(JavaScriptFrame *frame)
static void Unlock(Isolate *isolate)
static bool TryLock(Isolate *isolate)
bool has_pending_message_
ExecutionAccess(Isolate *isolate)
bool JsHasOverflowed() const
Object * pending_message_obj_
bool HasOverflowed() const
PostponeInterruptsScope(Isolate *isolate, int intercept_mask=StackGuard::ALL_INTERRUPTS)
PostponeInterruptsScope * prev_
AssertNoContextChange(Isolate *isolate)
int pending_message_start_pos_
bool Intercept(StackGuard::InterruptFlag flag)
Object * scheduled_exception_
Object * pending_message_script_
void InitializeInternal()
v8::FailedAccessCheckCallback failed_access_check_callback_
StackLimitCheck(Isolate *isolate)
Handle< Context > context_
SaveContext(Isolate *isolate)
StackGuard * stack_guard_
StateTag current_vm_state_
static void Lock(Isolate *isolate)
LookupResult * top_lookup_result_
Handle< Context > context()
SaveContext * save_context_
~PostponeInterruptsScope()
v8::TryCatch * try_catch_handler_
JSObject * global_proxy()
Scope(CodeTracer *tracer)
Source to read snapshot and builtins files from.
CodeTracer(int isolate_id)
EmbeddedVector< char, 128 > filename_
static bool ShouldRedirect()
static const uint32_t kNumIsolateDataSlots
PerIsolateThreadData * previous_thread_data
DISALLOW_COPY_AND_ASSIGN(EntryStackItem)
Isolate * previous_isolate
EntryStackItem(PerIsolateThreadData *previous_thread_data, Isolate *previous_isolate, EntryStackItem *previous_item)
EntryStackItem * previous_item
ExceptionScope(Isolate *isolate)
Handle< Object > pending_exception_
DISALLOW_COPY_AND_ASSIGN(PerIsolateThreadData)
ThreadId thread_id() const
PerIsolateThreadData * next_
Isolate * isolate() const
PerIsolateThreadData(Isolate *isolate, ThreadId thread_id)
PerIsolateThreadData * prev_
ThreadState * thread_state_
bool Matches(Isolate *isolate, ThreadId thread_id) const
PerIsolateThreadData * Lookup(Isolate *isolate, ThreadId thread_id)
void Remove(PerIsolateThreadData *data)
void Insert(PerIsolateThreadData *data)
PerIsolateThreadData * list_
void RemoveAllThreads(Isolate *isolate)
void RestorePendingMessageFromTryCatch(v8::TryCatch *handler)
PerIsolateThreadData * FindPerThreadDataForThread(ThreadId thread_id)
double time_millis_at_init_
UnicodeCache * unicode_cache_
int stack_trace_for_uncaught_exceptions_frame_limit_
double time_millis_since_init()
StaticResource< ConsStringIteratorOp > * objects_string_iterator()
static void InitializeOncePerProcess()
int next_optimization_id_
bool initialized_from_snapshot_
MaterializedObjectStore * materialized_object_store()
void UnlinkDeferredHandles(DeferredHandles *deferred_handles)
ContextSlotCache * context_slot_cache_
Handle< GlobalObject > global_object()
CpuProfiler * cpu_profiler_
BasicBlockProfiler * GetOrCreateBasicBlockProfiler()
NO_INLINE(void PushStackTraceAndDie(unsigned int magic, Object *object, Map *map, unsigned int magic2))
bool serializer_enabled() const
bool concurrent_osr_enabled() const
void ReportFailedAccessCheck(Handle< JSObject > receiver, v8::AccessType type)
base::RandomNumberGenerator * random_number_generator_
bool ShouldReportException(bool *can_be_caught_externally, bool catchable_by_javascript)
void clear_scheduled_exception()
EntryStackItem * entry_stack_
Object * ThrowIllegalOperation()
bool has_installed_extensions_
Address * js_entry_sp_address()
static base::Thread::LocalStorageKey thread_id_key()
Handle< Object > CaptureSimpleStackTrace(Handle< JSObject > error_object, Handle< Object > caller)
INLINE(static Isolate *UnsafeCurrent())
RuntimeState * runtime_state()
ConsStringIteratorOp * objects_string_compare_iterator_b()
bool has_installed_extensions()
RegExpStack * regexp_stack_
static Address c_entry_fp(ThreadLocalTop *thread)
bool has_scheduled_exception()
void MarkCompactPrologue(bool is_compacting, ThreadLocalTop *archived_thread_data)
Object * scheduled_exception()
DeferredHandles * deferred_handles_head_
void PrintCurrentStackTrace(FILE *out)
Object * TerminateExecution()
void CountUsage(v8::Isolate::UseCounterFeature feature)
static const char *const kStackOverflowMessage
HandleScopeImplementer * handle_scope_implementer()
bool is_catchable_by_javascript(Object *exception)
HandleScopeImplementer * handle_scope_implementer_
void EnqueueMicrotask(Handle< Object > microtask)
bool DebuggerHasBreakPoints()
Object ** scheduled_exception_address()
HeapProfiler * heap_profiler_
void SetFailedAccessCheckCallback(v8::FailedAccessCheckCallback callback)
bool PropagatePendingExceptionToExternalTryCatch()
StackGuard * stack_guard()
void clear_pending_message()
HandleScopeData handle_scope_data_
static const int kUC16AlphabetSize
CallInterfaceDescriptorData * call_descriptor_data(int index)
FunctionEntryHook function_entry_hook_
Object ** pending_exception_address()
unibrow::Mapping< unibrow::CanonicalizationRange > * jsregexp_canonrange()
Handle< Context > GetCallingNativeContext()
RuntimeProfiler * runtime_profiler()
static const int kBMMaxShift
OptimizingCompilerThread * optimizing_compiler_thread_
Object * FindCodeObject(Address a)
bool MayIndexedAccess(Handle< JSObject > receiver, uint32_t index, v8::AccessType type)
void CaptureAndSetSimpleStackTrace(Handle< JSObject > error_object, Handle< Object > caller)
void * GetData(uint32_t slot)
static base::Thread::LocalStorageKey per_isolate_thread_data_key_
FunctionEntryHook function_entry_hook()
bool * external_caught_exception_address()
unibrow::Mapping< unibrow::CanonicalizationRange > jsregexp_canonrange_
static base::Thread::LocalStorageKey isolate_key()
void UnregisterTryCatchHandler(v8::TryCatch *that)
Handle< Context > native_context()
Object * pending_exception()
void RemoveCallCompletedCallback(CallCompletedCallback callback)
void InitializeThreadLocal()
void * stress_deopt_count_address()
static void GlobalTearDown()
void PrintStack(StringStream *accumulator)
void set_date_cache(DateCache *date_cache)
DeoptimizerData * deoptimizer_data()
static ThreadDataTable * thread_data_table_
CompilationCache * compilation_cache_
void CancelTerminateExecution()
InnerPointerToCodeCache * inner_pointer_to_code_cache_
DISALLOW_COPY_AND_ASSIGN(Isolate)
Object * ReThrow(Object *exception)
BasicBlockProfiler * basic_block_profiler_
PerIsolateThreadData * FindPerThreadDataForThisThread()
void CancelScheduledExceptionFromTryCatch(v8::TryCatch *handler)
void * embedder_data_[Internals::kNumIsolateDataSlots]
static base::Thread::LocalStorageKey thread_id_key_
ConsStringIteratorOp * write_iterator_
void ScheduleThrow(Object *exception)
int stack_trace_nesting_level_
Handle< String > StackTraceString()
bool initialized_from_snapshot()
ConsStringIteratorOp objects_string_compare_iterator_a_
HeapProfiler * heap_profiler() const
MemoryAllocator * memory_allocator()
KeyedLookupCache * keyed_lookup_cache()
SweeperThread ** sweeper_thread_
friend class IsolateInitializer
void PushToPartialSnapshotCache(Object *obj)
void SetUseCounterCallback(v8::Isolate::UseCounterCallback callback)
static base::Atomic32 isolate_counter_
void SetCaptureStackTraceForUncaughtExceptions(bool capture, int frame_limit, StackTrace::StackTraceOptions options)
static int ArchiveSpacePerThread()
HStatistics * GetTStatistics()
ThreadManager * thread_manager_
void IterateThread(ThreadVisitor *v, char *t)
void set_context(Context *context)
CodeAgingHelper * code_aging_helper_
UnicodeCache * unicode_cache()
static PerIsolateThreadData * CurrentPerIsolateThreadData()
void * formal_count_address()
Address isolate_addresses_[kIsolateAddressCount+1]
char * RestoreThread(char *from)
void FreeThreadResources()
void Iterate(ObjectVisitor *v)
void InitializeLoggingAndCounters()
DescriptorLookupCache * descriptor_lookup_cache()
HandleScopeData * handle_scope_data()
char * ArchiveThread(char *to)
Object * Throw(Object *exception, MessageLocation *location=NULL)
Handle< JSBuiltinsObject > js_builtins_object()
BasicBlockProfiler * basic_block_profiler()
static base::Thread::LocalStorageKey isolate_key_
GlobalHandles * global_handles_
StringTracker * string_tracker_
Handle< Context > global_context()
RegExpStack * regexp_stack()
v8::TryCatch * try_catch_handler()
PerIsolateThreadData * FindOrAllocatePerThreadDataForThisThread()
void FireCallCompletedCallback()
InnerPointerToCodeCache * inner_pointer_to_code_cache()
CodeAgingHelper * code_aging_helper()
static void SetIsolateThreadLocals(Isolate *isolate, PerIsolateThreadData *data)
ContextSlotCache * context_slot_cache()
void IterateDeferredHandles(ObjectVisitor *visitor)
void ReportPendingMessages()
Address get_address_from_id(AddressId id)
MessageLocation GetMessageLocation()
OptimizingCompilerThread * optimizing_compiler_thread()
ThreadLocalTop * thread_local_top()
unibrow::Mapping< unibrow::Ecma262UnCanonicalize > jsregexp_uncanonicalize_
INLINE(static Isolate *UncheckedCurrent())
void CaptureAndSetDetailedStackTrace(Handle< JSObject > error_object)
unibrow::Mapping< unibrow::Ecma262Canonicalize > interp_canonicalize_mapping_
ThreadManager * thread_manager()
bool HasExternalTryCatch()
HStatistics * GetHStatistics()
CodeTracer * GetCodeTracer()
unibrow::Mapping< unibrow::Ecma262Canonicalize > regexp_macro_assembler_canonicalize_
void SetData(uint32_t slot, void *data)
base::RandomNumberGenerator * random_number_generator()
StackTrace::StackTraceOptions stack_trace_for_uncaught_exceptions_options_
base::Atomic32 debugger_initialized_
void MarkCompactEpilogue(bool is_compacting, ThreadLocalTop *archived_thread_data)
void AddCallCompletedCallback(CallCompletedCallback callback)
StringStream * incomplete_message_
ConsStringIteratorOp * objects_string_compare_iterator_a()
unibrow::Mapping< unibrow::Ecma262Canonicalize > * interp_canonicalize_mapping()
void PushPromise(Handle< JSObject > promise)
Handle< JSObject > GetSymbolRegistry()
bool use_crankshaft() const
unibrow::Mapping< unibrow::Ecma262UnCanonicalize > * jsregexp_uncanonicalize()
Handle< JSArray > CaptureCurrentStackTrace(int frame_limit, StackTrace::StackTraceOptions options)
DescriptorLookupCache * descriptor_lookup_cache_
Address try_catch_handler_address()
Handle< Object > GetPromiseOnStackOnThrow()
static Isolate * NewForTesting()
unibrow::Mapping< unibrow::Ecma262Canonicalize > * regexp_macro_assembler_canonicalize()
static Address handler(ThreadLocalTop *thread)
void set_pending_exception(Object *exception_obj)
unsigned int stress_deopt_count_
KeyedLookupCache * keyed_lookup_cache_
friend struct InitializeGlobalState
void set_function_entry_hook(FunctionEntryHook function_entry_hook)
INLINE(static Isolate *Current())
Address pending_message_obj_address()
DeoptimizerData * deoptimizer_data_
MUST_USE_RESULT MaybeHandle< T > Throw(Handle< Object > exception, MessageLocation *location=NULL)
MemoryAllocator * memory_allocator_
Object * PromoteScheduledException()
StringTracker * string_tracker()
Context ** context_address()
JSObject * global_proxy()
bool Init(Deserializer *des)
bool concurrent_recompilation_enabled()
List< CallCompletedCallback > call_completed_callbacks_
void clear_pending_exception()
ThreadLocalTop thread_local_top_
void LinkDeferredHandles(DeferredHandles *deferred_handles)
CompilationCache * compilation_cache()
MaterializedObjectStore * materialized_object_store_
void NotifyExtensionInstalled()
base::RecursiveMutex break_access_
StaticResource< ConsStringIteratorOp > objects_string_iterator_
Address * handler_address()
friend class TestCodeRangeScope
StatsTable * stats_table_
bool MayNamedAccess(Handle< JSObject > receiver, Handle< Object > key, v8::AccessType type)
void DoThrow(Object *exception, MessageLocation *location)
Address pending_message_script_address()
void ComputeLocation(MessageLocation *target)
RuntimeProfiler * runtime_profiler_
friend class ExecutionAccess
static base::Thread::LocalStorageKey per_isolate_thread_data_key()
ConsStringIteratorOp * write_iterator()
CpuProfiler * cpu_profiler() const
CallInterfaceDescriptorData * call_descriptor_data_
static const int kJSRegexpStaticOffsetsVectorSize
int num_sweeper_threads() const
bool IsErrorObject(Handle< Object > obj)
Address * c_entry_fp_address()
friend struct GlobalState
ConsStringIteratorOp objects_string_compare_iterator_b_
bool IsFastArrayConstructorPrototypeChainIntact()
bool capture_stack_trace_for_uncaught_exceptions_
StatsTable * stats_table()
friend class TestMemoryAllocatorScope
base::RecursiveMutex * break_access()
bool OptionalRescheduleException(bool is_bottom_call)
void RegisterTryCatchHandler(v8::TryCatch *that)
void InvokeApiInterruptCallback()
EternalHandles * eternal_handles()
Bootstrapper * bootstrapper_
static base::LazyMutex thread_data_table_mutex_
SweeperThread ** sweeper_threads()
GlobalHandles * global_handles()
v8::Isolate::UseCounterCallback use_counter_callback_
Map * get_initial_js_array_map(ElementsKind kind)
Address has_pending_message_address()
EternalHandles * eternal_handles_
RuntimeState runtime_state_
Bootstrapper * bootstrapper()
bool has_pending_exception()
PromiseOnStack(StackHandler *handler, Handle< JSObject > promise, PromiseOnStack *prev)
Handle< JSObject > promise_
Handle< JSObject > promise()
static bool IsValid(intptr_t value)
static ThreadId Invalid()
INLINE(bool IsValid() const)
static int AllocateThreadId()
static const int kInvalidId
static ThreadId Current()
static int GetCurrentThreadId()
static ThreadId FromInteger(int id)
static base::Atomic32 highest_thread_id_
INLINE(bool Equals(const ThreadId &other) const)
#define NATIVE_CONTEXT_FIELDS(V)
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf map
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in only print modified registers Trace simulator debug messages Implied by trace sim abort randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot A filename with extra code to be included in the A file to write the raw snapshot bytes to(mksnapshot only)") DEFINE_STRING(raw_context_file
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL
#define GLOBAL_ARRAY_BACKING_STORE(type, name, length)
#define NATIVE_CONTEXT_FIELD_ACCESSOR(index, type, name)
#define ISOLATE_INIT_ARRAY_LIST(V)
#define GLOBAL_ARRAY_ACCESSOR(type, name, length)
#define GLOBAL_ACCESSOR(type, name, initialvalue)
#define THREAD_LOCAL_TOP_ACCESSOR(type, name)
#define FIELD_ACCESSOR(type, name)
#define ISOLATE_INIT_LIST(V)
#define GLOBAL_BACKING_STORE(type, name, initialvalue)
#define DECLARE_ENUM(CamelName, hacker_name)
#define FOR_EACH_ISOLATE_ADDRESS_NAME(C)
#define DCHECK(condition)
bool Equals(Node *a, Node *b)
void StrNCpy(Vector< char > dest, const char *src, size_t n)
int SNPrintF(Vector< char > str, const char *format,...)
DISABLE_ASAN uintptr_t GetCurrentStackPosition()
int WriteChars(const char *filename, const char *str, int size, bool verbose)
ZoneList< Handle< Object > > ZoneObjectList
kFeedbackVectorOffset flag
void * ExternalReferenceRedirectorPointer()
List< HeapObject * > DebugObjectCache
Debugger support for the V8 JavaScript engine.
void(* FailedAccessCheckCallback)(Local< Object > target, AccessType type, Local< Value > data)
void(* CallCompletedCallback)()
void(* FunctionEntryHook)(uintptr_t function, uintptr_t return_addr_location)
FunctionEntryHook is the type of the profile entry hook called at entry to any generated function whe...
AccessType
Access type specification.