31 #include "../include/v8-debug.h"
55 class CompilationCache;
56 class ContextSlotCache;
57 class ContextSwitcher;
61 class DeoptimizerData;
64 class ExternalReferenceTable;
66 class FunctionInfoListener;
67 class HandleScopeImplementer;
69 class InlineRuntimeFunctionsTable;
70 class NoAllocationStringAllocator;
71 class InnerPointerToCodeCache;
72 class PreallocatedMemoryThread;
76 class StringInputBuffer;
90 #ifdef ENABLE_DEBUGGER_SUPPORT
96 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
97 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
111 #define RETURN_IF_SCHEDULED_EXCEPTION(isolate) \
113 Isolate* __isolate__ = (isolate); \
114 if (__isolate__->has_scheduled_exception()) { \
115 return __isolate__->PromoteScheduledException(); \
119 #define RETURN_IF_EMPTY_HANDLE_VALUE(isolate, call, value) \
121 if ((call).is_null()) { \
122 ASSERT((isolate)->has_pending_exception()); \
127 #define CHECK_NOT_EMPTY_HANDLE(isolate, call) \
129 ASSERT(!(isolate)->has_pending_exception()); \
130 CHECK(!(call).is_null()); \
131 CHECK(!(isolate)->has_pending_exception()); \
134 #define RETURN_IF_EMPTY_HANDLE(isolate, call) \
135 RETURN_IF_EMPTY_HANDLE_VALUE(isolate, call, Failure::Exception())
137 #define FOR_EACH_ISOLATE_ADDRESS_NAME(C) \
138 C(Handler, handler) \
139 C(CEntryFP, c_entry_fp) \
140 C(Context, context) \
141 C(PendingException, pending_exception) \
142 C(ExternalCaughtException, external_caught_exception) \
143 C(JSEntrySP, js_entry_sp)
160 return id_ == other.id_;
165 return id_ != kInvalidId;
177 static const int kInvalidId = -1;
179 explicit ThreadId(
int id) : id_(id) {}
181 static int AllocateThreadId();
183 static int GetCurrentThreadId();
220 return try_catch_handler_address_;
225 try_catch_handler_address_ = address;
229 ASSERT(!has_pending_message_);
230 ASSERT(!external_caught_exception_);
258 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS)
259 Simulator* simulator_;
261 #endif // USE_SIMULATOR
280 void InitializeInternal();
282 Address try_catch_handler_address_;
286 #ifdef ENABLE_DEBUGGER_SUPPORT
288 #define ISOLATE_DEBUGGER_INIT_LIST(V) \
289 V(v8::Debug::EventCallback, debug_event_callback, NULL) \
290 V(DebuggerAgent*, debugger_agent_instance, NULL)
293 #define ISOLATE_DEBUGGER_INIT_LIST(V)
299 #define ISOLATE_INIT_DEBUG_ARRAY_LIST(V) \
300 V(CommentStatistic, paged_space_comments_statistics, \
301 CommentStatistic::kMaxComments + 1)
304 #define ISOLATE_INIT_DEBUG_ARRAY_LIST(V)
308 #define ISOLATE_INIT_ARRAY_LIST(V) \
310 V(Object*, serialize_partial_snapshot_cache, kPartialSnapshotCacheCapacity) \
311 V(int, jsregexp_static_offsets_vector, kJSRegexpStaticOffsetsVectorSize) \
312 V(int, bad_char_shift_table, kUC16AlphabetSize) \
313 V(int, good_suffix_shift_table, (kBMMaxShift + 1)) \
314 V(int, suffix_table, (kBMMaxShift + 1)) \
315 V(uint32_t, private_random_seed, 2) \
316 ISOLATE_INIT_DEBUG_ARRAY_LIST(V)
320 #define ISOLATE_INIT_LIST(V) \
322 V(int, serialize_partial_snapshot_cache_length, 0) \
325 V(byte*, assembler_spare_buffer, NULL) \
326 V(FatalErrorCallback, exception_behavior, NULL) \
327 V(AllowCodeGenerationFromStringsCallback, allow_code_gen_callback, NULL) \
328 V(v8::Debug::MessageHandler, message_handler, NULL) \
331 V(int, next_serial_number, 0) \
332 V(ExternalReferenceRedirectorPointer*, external_reference_redirector, NULL) \
333 V(bool, always_allow_natives_syntax, false) \
335 V(FunctionInfoListener*, active_function_info_listener, NULL) \
337 V(Relocatable*, relocatable_top, NULL) \
339 V(CodeGenerator*, current_code_generator, NULL) \
340 V(bool, jump_target_compiling_deferred_code, false) \
341 V(DebugObjectCache*, string_stream_debug_object_cache, NULL) \
342 V(Object*, string_stream_current_security_token, NULL) \
344 V(int*, irregexp_interpreter_backtrack_stack_cache, NULL) \
346 V(ExternalReferenceTable*, external_reference_table, NULL) \
348 V(int, ast_node_id, 0) \
349 V(unsigned, ast_node_count, 0) \
351 V(int, safe_stack_iterator_counter, 0) \
352 V(uint64_t, enabled_cpu_features, 0) \
353 V(CpuProfiler*, cpu_profiler, NULL) \
354 V(HeapProfiler*, heap_profiler, NULL) \
355 ISOLATE_DEBUGGER_INIT_LIST(V)
360 class ThreadDataTable;
361 class EntryStackItem;
372 thread_id_(thread_id),
375 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
376 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
388 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
389 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
390 Simulator* simulator()
const {
return simulator_; }
391 void set_simulator(
Simulator* simulator) {
392 simulator_ = simulator;
397 return isolate_ == isolate && thread_id_.Equals(thread_id);
403 uintptr_t stack_limit_;
406 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \
407 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS)
423 #define DECLARE_ENUM(CamelName, hacker_name) k##CamelName##Address,
479 #ifdef ENABLE_DEBUGGER_SUPPORT
482 static Debugger* GetDefaultIsolateDebugger();
498 return thread_id_key_;
520 ASSERT(context ==
NULL || context->IsContext());
521 thread_local_top_.context_ =
context;
527 thread_local_top_.save_context_ = save;
537 return thread_local_top_.pending_exception_;
540 return thread_local_top_.external_caught_exception_;
543 thread_local_top_.external_caught_exception_ = value;
546 thread_local_top_.pending_exception_ = exception;
549 thread_local_top_.pending_exception_ = heap_.the_hole_value();
552 return &thread_local_top_.pending_exception_;
555 return !thread_local_top_.pending_exception_->IsTheHole();
558 thread_local_top_.has_pending_message_ =
false;
559 thread_local_top_.pending_message_obj_ = heap_.the_hole_value();
560 thread_local_top_.pending_message_script_ =
NULL;
563 return thread_local_top_.TryCatchHandler();
566 return thread_local_top_.try_catch_handler_address();
569 return &thread_local_top_.external_caught_exception_;
572 return thread_local_top_.catcher_;
575 thread_local_top_.catcher_ =
catcher;
579 return &thread_local_top_.scheduled_exception_;
583 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_);
587 return reinterpret_cast<Address>(&thread_local_top_.has_pending_message_);
591 return reinterpret_cast<Address>(
592 &thread_local_top_.pending_message_script_);
597 return thread_local_top_.scheduled_exception_;
600 return thread_local_top_.scheduled_exception_ != heap_.the_hole_value();
603 thread_local_top_.scheduled_exception_ = heap_.the_hole_value();
610 (exception !=
heap()->termination_exception());
615 return thread->c_entry_fp_;
620 return &thread_local_top_.c_entry_fp_;
626 return thread->js_entry_sp_;
629 return &thread_local_top_.js_entry_sp_;
689 return thread_local_top_.ignore_out_of_memory_;
692 thread_local_top_.ignore_out_of_memory_ = value;
736 bool catchable_by_javascript);
750 void Iterate(ObjectVisitor* v);
751 void Iterate(ObjectVisitor* v, ThreadLocalTop* t);
752 char*
Iterate(ObjectVisitor* v,
char* t);
776 #define GLOBAL_ACCESSOR(type, name, initialvalue) \
777 inline type name() const { \
778 ASSERT(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
781 inline void set_##name(type value) { \
782 ASSERT(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
786 #undef GLOBAL_ACCESSOR
788 #define GLOBAL_ARRAY_ACCESSOR(type, name, length) \
789 inline type* name() { \
790 ASSERT(OFFSET_OF(Isolate, name##_) == name##_debug_offset_); \
791 return &(name##_)[0]; \
794 #undef GLOBAL_ARRAY_ACCESSOR
796 #define GLOBAL_CONTEXT_FIELD_ACCESSOR(index, type, name) \
797 Handle<type> name() { \
798 return Handle<type>(context()->global_context()->name()); \
801 #undef GLOBAL_CONTEXT_FIELD_ACCESSOR
827 return transcendental_cache_;
831 return memory_allocator_;
835 return keyed_lookup_cache_;
839 return context_slot_cache_;
843 return descriptor_lookup_cache_;
847 return &handle_scope_data_;
850 ASSERT(handle_scope_implementer_);
851 return handle_scope_implementer_;
856 return unicode_cache_;
860 return inner_pointer_to_code_cache_;
872 context_switcher_ = switcher;
878 return &jsregexp_uncanonicalize_;
882 return &jsregexp_canonrange_;
886 return &objects_string_compare_buffer_a_;
890 return &objects_string_compare_buffer_b_;
894 return &objects_string_input_buffer_;
900 fp_stubs_generated_ = value;
906 return &compiler_safe_string_input_buffer_;
912 has_installed_extensions_ =
true;
919 return ®exp_macro_assembler_canonicalize_;
926 return &interp_canonicalize_mapping_;
933 #ifdef ENABLE_DEBUGGER_SUPPORT
934 Debugger* debugger() {
935 if (!
NoBarrier_Load(&debugger_initialized_)) InitializeDebugger();
939 if (!
NoBarrier_Load(&debugger_initialized_)) InitializeDebugger();
948 HistogramInfo* heap_histograms() {
return heap_histograms_; }
950 JSObject::SpillInformation* js_spill_information() {
951 return &js_spill_information_;
954 int* code_kind_statistics() {
return code_kind_statistics_; }
957 #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) || \
958 defined(V8_TARGET_ARCH_MIPS) && !defined(__mips__)
959 bool simulator_initialized() {
return simulator_initialized_; }
960 void set_simulator_initialized(
bool initialized) {
961 simulator_initialized_ = initialized;
964 HashMap* simulator_i_cache() {
return simulator_i_cache_; }
965 void set_simulator_i_cache(
HashMap* hash_map) {
966 simulator_i_cache_ = hash_map;
969 Redirection* simulator_redirection() {
970 return simulator_redirection_;
972 void set_simulator_redirection(Redirection* redirection) {
973 simulator_redirection_ = redirection;
985 return thread_local_top_.external_callback_;
988 thread_local_top_.external_callback_ = callback;
992 return thread_local_top_.current_vm_state_;
998 ASSERT(thread_local_top_.isolate_ ==
this);
999 StateTag current_state = thread_local_top_.current_vm_state_;
1000 if (current_state != JS && state == JS) {
1003 }
else if (current_state == JS && state != JS) {
1011 ASSERT((current_state == JS) == (state == JS));
1014 thread_local_top_.current_vm_state_ = state;
1017 void SetData(
void* data) { embedder_data_ = data; }
1021 return thread_local_top_.top_lookup_result_;
1024 thread_local_top_.top_lookup_result_ = top;
1028 return context_exit_happened_;
1043 if (date_cache != date_cache_) {
1064 void* embedder_data_;
1069 class ThreadDataTable {
1075 void Insert(PerIsolateThreadData* data);
1077 void Remove(PerIsolateThreadData* data);
1078 void RemoveAllThreads(
Isolate* isolate);
1081 PerIsolateThreadData* list_;
1090 class EntryStackItem {
1092 EntryStackItem(PerIsolateThreadData* previous_thread_data,
1094 EntryStackItem* previous_item)
1096 previous_thread_data(previous_thread_data),
1097 previous_isolate(previous_isolate),
1098 previous_item(previous_item) { }
1101 PerIsolateThreadData* previous_thread_data;
1102 Isolate* previous_isolate;
1103 EntryStackItem* previous_item;
1111 static Mutex* process_wide_mutex_;
1116 static Isolate* default_isolate_;
1117 static ThreadDataTable* thread_data_table_;
1121 static void SetIsolateThreadLocals(Isolate* isolate,
1122 PerIsolateThreadData* data);
1130 PerIsolateThreadData* FindOrAllocatePerThreadDataForThisThread();
1134 static Isolate* GetDefaultIsolateForLocking();
1147 void PreallocatedMemoryThreadStart();
1148 void PreallocatedMemoryThreadStop();
1149 void InitializeThreadLocal();
1152 void MarkCompactPrologue(
bool is_compacting,
1153 ThreadLocalTop* archived_thread_data);
1154 void MarkCompactEpilogue(
bool is_compacting,
1155 ThreadLocalTop* archived_thread_data);
1159 void PropagatePendingExceptionToExternalTryCatch();
1161 void InitializeDebugger();
1165 bool IsErrorObject(Handle<Object> obj);
1167 EntryStackItem* entry_stack_;
1168 int stack_trace_nesting_level_;
1169 StringStream* incomplete_message_;
1171 PreallocatedMemoryThread* preallocated_memory_thread_;
1173 NoAllocationStringAllocator* preallocated_message_space_;
1174 Bootstrapper* bootstrapper_;
1175 RuntimeProfiler* runtime_profiler_;
1176 CompilationCache* compilation_cache_;
1177 Counters* counters_;
1178 CodeRange* code_range_;
1179 Mutex* break_access_;
1181 Mutex* debugger_access_;
1184 StatsTable* stats_table_;
1185 StubCache* stub_cache_;
1186 DeoptimizerData* deoptimizer_data_;
1187 ThreadLocalTop thread_local_top_;
1188 bool capture_stack_trace_for_uncaught_exceptions_;
1189 int stack_trace_for_uncaught_exceptions_frame_limit_;
1191 TranscendentalCache* transcendental_cache_;
1192 MemoryAllocator* memory_allocator_;
1193 KeyedLookupCache* keyed_lookup_cache_;
1194 ContextSlotCache* context_slot_cache_;
1195 DescriptorLookupCache* descriptor_lookup_cache_;
1197 HandleScopeImplementer* handle_scope_implementer_;
1198 UnicodeCache* unicode_cache_;
1200 PreallocatedStorage in_use_list_;
1201 PreallocatedStorage free_list_;
1202 bool preallocated_storage_preallocated_;
1203 InnerPointerToCodeCache* inner_pointer_to_code_cache_;
1204 StringInputBuffer* write_input_buffer_;
1205 GlobalHandles* global_handles_;
1206 ContextSwitcher* context_switcher_;
1208 RuntimeState runtime_state_;
1209 bool fp_stubs_generated_;
1210 StaticResource<SafeStringInputBuffer> compiler_safe_string_input_buffer_;
1212 bool has_installed_extensions_;
1213 StringTracker* string_tracker_;
1216 StringInputBuffer objects_string_compare_buffer_a_;
1217 StringInputBuffer objects_string_compare_buffer_b_;
1218 StaticResource<StringInputBuffer> objects_string_input_buffer_;
1220 regexp_macro_assembler_canonicalize_;
1221 RegExpStack* regexp_stack_;
1222 DateCache* date_cache_;
1227 bool context_exit_happened_;
1230 double time_millis_at_init_;
1232 #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) || \
1233 defined(V8_TARGET_ARCH_MIPS) && !defined(__mips__)
1234 bool simulator_initialized_;
1236 Redirection* simulator_redirection_;
1241 HistogramInfo heap_histograms_[
LAST_TYPE + 1];
1242 JSObject::SpillInformation js_spill_information_;
1246 #ifdef ENABLE_DEBUGGER_SUPPORT
1247 Debugger* debugger_;
1251 #define GLOBAL_BACKING_STORE(type, name, initialvalue) \
1254 #undef GLOBAL_BACKING_STORE
1256 #define GLOBAL_ARRAY_BACKING_STORE(type, name, length) \
1257 type name##_[length];
1259 #undef GLOBAL_ARRAY_BACKING_STORE
1265 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \
1266 static const intptr_t name##_debug_offset_;
1269 #undef ISOLATE_FIELD_OFFSET
1292 inline explicit SaveContext(
Isolate* isolate);
1295 if (context_.is_null()) {
1296 Isolate* isolate = Isolate::Current();
1300 Isolate* isolate = context_->GetIsolate();
1307 SaveContext*
prev() {
return prev_; }
1311 return (c_entry_fp_ == 0) || (c_entry_fp_ > frame->sp());
1316 #if __GNUC_VERSION__ >= 40100 && __GNUC_VERSION__ < 40300
1327 AssertNoContextChange() :
1332 ~AssertNoContextChange() {
1333 ASSERT(Isolate::Current()->context() == *context_);
1338 Handle<Context> context_;
1357 return isolate->break_access_->
TryLock();
1371 StackGuard* stack_guard = isolate_->stack_guard();
1376 return (reinterpret_cast<uintptr_t>(
this) < stack_guard->
climit()) &&
1391 : stack_guard_(isolate->stack_guard()) {
1392 stack_guard_->thread_local_.postpone_interrupts_nesting_++;
1393 stack_guard_->DisableInterrupts();
1397 if (--stack_guard_->thread_local_.postpone_interrupts_nesting_ == 0) {
1398 stack_guard_->EnableInterrupts();
1408 #define HEAP (v8::internal::Isolate::Current()->heap())
1409 #define FACTORY (v8::internal::Isolate::Current()->factory())
1410 #define ISOLATE (v8::internal::Isolate::Current())
1411 #define LOGGER (v8::internal::Isolate::Current()->logger())
1428 #endif // V8_ISOLATE_H_
void PrintStackTrace(FILE *out, char *thread_data)
static void Unlock(Isolate *isolate)
ContextSlotCache * context_slot_cache()
void TraceException(bool flag)
friend struct GlobalState
StackLimitCheck(Isolate *isolate)
RuntimeState * runtime_state()
Failure * StackOverflow()
static void * GetThreadLocal(LocalStorageKey key)
TranscendentalCache * transcendental_cache() const
void set_thread_id(ThreadId id)
void set_date_cache(DateCache *date_cache)
StaticResource< SafeStringInputBuffer > * compiler_safe_string_input_buffer()
int pending_message_end_pos_
MaybeObject * pending_exception()
CompilationCache * compilation_cache()
static Thread::LocalStorageKey per_isolate_thread_data_key()
#define DECLARE_ENUM(CamelName, hacker_name)
static void IsolateEnteredJS(Isolate *isolate)
void ScheduleThrow(Object *exception)
#define GLOBAL_ARRAY_ACCESSOR(type, name, length)
unibrow::Mapping< unibrow::Ecma262UnCanonicalize > * jsregexp_uncanonicalize()
HandleScopeImplementer * handle_scope_implementer()
Address * js_entry_sp_address()
StateTag current_vm_state()
StringInputBuffer * objects_string_compare_buffer_a()
void ReportFailedAccessCheck(JSObject *receiver, v8::AccessType type)
StatsTable * stats_table()
ExceptionScope(Isolate *isolate)
static Address js_entry_sp(ThreadLocalTop *thread)
static const int kJSRegexpStaticOffsetsVectorSize
bool MayNamedAccess(JSObject *receiver, Object *key, v8::AccessType type)
MaybeObject ** pending_exception_address()
Address get_address_from_id(AddressId id)
static Failure * OutOfMemoryException()
#define GLOBAL_BACKING_STORE(type, name, initialvalue)
#define GLOBAL_ARRAY_BACKING_STORE(type, name, length)
MaybeObject * scheduled_exception_
void DoThrow(Object *exception, MessageLocation *location)
bool Init(Deserializer *des)
Handle< Context > context()
bool IsExternallyCaught()
Object * pending_message_obj_
Address try_catch_handler_address()
void mark_out_of_memory()
v8::HandleScope::Data HandleScopeData
Bootstrapper * bootstrapper()
INLINE(static Isolate *Current())
Failure * ReThrow(MaybeObject *exception)
PerIsolateThreadData * FindPerThreadDataForThisThread()
static Address handler(ThreadLocalTop *thread)
Context * global_context()
RegExpStack * regexp_stack()
#define ASSERT(condition)
static PerIsolateThreadData * CurrentPerIsolateThreadData()
void SetFailedAccessCheckCallback(v8::FailedAccessCheckCallback callback)
static StackGuard * GetDefaultIsolateStackGuard()
KeyedLookupCache * keyed_lookup_cache()
void clear_pending_exception()
void * formal_count_address()
ThreadManager * thread_manager()
void clear_scheduled_exception()
static Thread::LocalStorageKey isolate_key()
int pending_message_start_pos_
bool Matches(Isolate *isolate, ThreadId thread_id) const
INLINE(bool Equals(const ThreadId &other) const)
void PreallocatedStorageInit(size_t size)
void * ExternalReferenceRedirectorPointer()
List< HeapObject *, PreallocatedStorageAllocationPolicy > DebugObjectCache
Context ** context_address()
bool external_caught_exception()
bool IsDefaultIsolate() const
PerIsolateThreadData(Isolate *isolate, ThreadId thread_id)
void(* FailedAccessCheckCallback)(Local< Object > target, AccessType type, Local< Value > data)
StringInputBuffer * objects_string_compare_buffer_b()
void clear_pending_message()
void CaptureAndSetCurrentStackTraceFor(Handle< JSObject > error_object)
StackGuard * stack_guard()
void set_context_exit_happened(bool context_exit_happened)
Handle< Context > global_context()
void set_external_callback(Address callback)
bool OptionalRescheduleException(bool is_bottom_call)
UnicodeCache * unicode_cache()
Address try_catch_handler_address()
void FreeThreadResources()
static void EnsureDefaultIsolate()
#define GLOBAL_CONTEXT_FIELD_ACCESSOR(index, type, name)
Address * c_entry_fp_address()
void ReportPendingMessages()
#define ISOLATE_INIT_LIST(V)
INLINE(bool IsValid() const)
static Address c_entry_fp(ThreadLocalTop *thread)
friend class ThreadManager
void set_catcher(v8::TryCatch *catcher)
~PostponeInterruptsScope()
Script * pending_message_script_
v8::TryCatch * try_catch_handler()
StringTracker * string_tracker()
RuntimeProfiler * runtime_profiler()
static ThreadId Current()
Address external_callback_
bool context_exit_happened()
void set_context(Context *context)
friend class IsolateInitializer
void ComputeLocation(MessageLocation *target)
JSObject * global_proxy()
static void EnterDefaultIsolate()
unibrow::Mapping< unibrow::Ecma262Canonicalize > * regexp_macro_assembler_canonicalize()
MemoryAllocator * memory_allocator()
void NotifyExtensionInstalled()
MaybeObject * scheduled_exception()
Address has_pending_message_address()
void PrintCurrentStackTrace(FILE *out)
void Iterate(ObjectVisitor *v)
Handle< JSArray > CaptureCurrentStackTrace(int frame_limit, StackTrace::StackTraceOptions options)
GlobalHandles * global_handles()
static void * GetExistingThreadLocal(LocalStorageKey key)
SaveContext * save_context_
void SetCurrentVMState(StateTag state)
static void Lock(Isolate *isolate)
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
friend class ThreadDataTable
bool has_pending_message_
v8::ImplementationUtilities::HandleScopeData * handle_scope_data()
static double TimeCurrentMillis()
bool has_pending_exception()
PostponeInterruptsScope(Isolate *isolate)
Address external_callback()
static const int kUC16AlphabetSize
void * PreallocatedStorageNew(size_t size)
void SetCaptureStackTraceForUncaughtExceptions(bool capture, int frame_limit, StackTrace::StackTraceOptions options)
Handle< JSBuiltinsObject > js_builtins_object()
Failure * Throw(Object *exception, MessageLocation *location=NULL)
DeoptimizerData * deoptimizer_data()
DescriptorLookupCache * descriptor_lookup_cache()
void set_thread_state(ThreadState *value)
void SetTopLookupResult(LookupResult *top)
bool has_installed_extensions()
bool external_caught_exception_
Atomic32 NoBarrier_Load(volatile const Atomic32 *ptr)
bool HasOverflowed() const
Failure * PromoteScheduledException()
InnerPointerToCodeCache * inner_pointer_to_code_cache()
v8::FailedAccessCheckCallback failed_access_check_callback_
static Thread::LocalStorageKey thread_id_key()
#define FOR_EACH_ISOLATE_ADDRESS_NAME(C)
void IterateThread(ThreadVisitor *v)
static bool TryLock(Isolate *isolate)
ThreadState * thread_state() const
static const int kPartialSnapshotCacheCapacity
StaticResource< StringInputBuffer > * objects_string_input_buffer()
static void IsolateExitedJS(Isolate *isolate)
Handle< String > StackTraceString()
static ThreadId FromInteger(int id)
friend class EntryStackItem
#define GLOBAL_ACCESSOR(type, name, initialvalue)
void set_pending_exception(MaybeObject *exception)
LookupResult * top_lookup_result_
bool DebuggerHasBreakPoints()
void set_stack_limit(uintptr_t value)
Address pending_message_obj_address()
kPropertyAccessorsOffset kNamedPropertyHandlerOffset kInstanceTemplateOffset kAccessCheckInfoOffset kEvalFrominstructionsOffsetOffset kThisPropertyAssignmentsOffset flag
TemplateHashMapImpl< FreeStoreAllocationPolicy > HashMap
void set_try_catch_handler_address(Address address)
bool * external_caught_exception_address()
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 enable use of ARMv7 instructions if enable use of MIPS FPU instructions if NULL
ZoneList< Handle< Object > > ZoneObjectList
bool fp_stubs_generated()
static const int kBMMaxShift
static int ArchiveSpacePerThread()
bool MayIndexedAccess(JSObject *receiver, uint32_t index, v8::AccessType type)
double time_millis_since_init()
void set_ignore_out_of_memory(bool value)
void set_external_caught_exception(bool value)
bool ignore_out_of_memory_
void set_save_context(SaveContext *save)
Isolate * isolate() const
Mutex * debugger_access()
MaybeObject ** scheduled_exception_address()
void InitializeLoggingAndCounters()
ContextSwitcher * context_switcher()
void UnregisterTryCatchHandler(v8::TryCatch *that)
Failure * TerminateExecution()
char * ArchiveThread(char *to)
unibrow::Mapping< unibrow::CanonicalizationRange > * jsregexp_canonrange()
Failure * ThrowIllegalOperation()
LookupResult * top_lookup_result()
static ThreadId Invalid()
Handle< Context > GetCallingGlobalContext()
friend class ExecutionAccess
Address pending_message_script_address()
void RegisterTryCatchHandler(v8::TryCatch *that)
bool is_catchable_by_javascript(MaybeObject *exception)
char * RestoreThread(char *from)
MaybeObject * pending_exception_
bool has_scheduled_exception()
void set_context_switcher(ContextSwitcher *switcher)
INLINE(static Isolate *UncheckedCurrent())
StringInputBuffer * write_input_buffer()
SaveContext * save_context()
unibrow::Mapping< unibrow::Ecma262Canonicalize > * interp_canonicalize_mapping()
bool IsBelowFrame(JavaScriptFrame *frame)
bool ShouldReportException(bool *can_be_caught_externally, bool catchable_by_javascript)
void set_fp_stubs_generated(bool value)
ThreadLocalTop * thread_local_top()
ExecutionAccess(Isolate *isolate)
bool ignore_out_of_memory()
uintptr_t stack_limit() const
static const char *const kStackOverflowMessage
StateTag current_vm_state_
static bool IsSomeIsolateInJS()
Handle< GlobalObject > global()
Address * handler_address()
#define ISOLATE_INIT_ARRAY_LIST(V)
ThreadId thread_id() const
friend struct InitializeGlobalState
void PreallocatedStorageDelete(void *p)
#define GLOBAL_CONTEXT_FIELDS(V)