| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 // assembler.h, where it is defined, here. | 86 // assembler.h, where it is defined, here. |
| 87 typedef void* ExternalReferenceRedirectorPointer(); | 87 typedef void* ExternalReferenceRedirectorPointer(); |
| 88 | 88 |
| 89 | 89 |
| 90 #ifdef ENABLE_DEBUGGER_SUPPORT | 90 #ifdef ENABLE_DEBUGGER_SUPPORT |
| 91 class Debug; | 91 class Debug; |
| 92 class Debugger; | 92 class Debugger; |
| 93 class DebuggerAgent; | 93 class DebuggerAgent; |
| 94 #endif | 94 #endif |
| 95 | 95 |
| 96 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) | 96 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \ |
| 97 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS) |
| 97 class Redirection; | 98 class Redirection; |
| 98 class Simulator; | 99 class Simulator; |
| 99 #endif | 100 #endif |
| 100 | 101 |
| 102 |
| 101 // Static indirection table for handles to constants. If a frame | 103 // Static indirection table for handles to constants. If a frame |
| 102 // element represents a constant, the data contains an index into | 104 // element represents a constant, the data contains an index into |
| 103 // this table of handles to the actual constants. | 105 // this table of handles to the actual constants. |
| 104 // Static indirection table for handles to constants. If a Result | 106 // Static indirection table for handles to constants. If a Result |
| 105 // represents a constant, the data contains an index into this table | 107 // represents a constant, the data contains an index into this table |
| 106 // of handles to the actual constants. | 108 // of handles to the actual constants. |
| 107 typedef ZoneList<Handle<Object> > ZoneObjectList; | 109 typedef ZoneList<Handle<Object> > ZoneObjectList; |
| 108 | 110 |
| 109 #define RETURN_IF_SCHEDULED_EXCEPTION(isolate) \ | 111 #define RETURN_IF_SCHEDULED_EXCEPTION(isolate) \ |
| 110 if (isolate->has_scheduled_exception()) \ | 112 if (isolate->has_scheduled_exception()) \ |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 MaybeObject* scheduled_exception_; | 190 MaybeObject* scheduled_exception_; |
| 189 bool external_caught_exception_; | 191 bool external_caught_exception_; |
| 190 SaveContext* save_context_; | 192 SaveContext* save_context_; |
| 191 v8::TryCatch* catcher_; | 193 v8::TryCatch* catcher_; |
| 192 | 194 |
| 193 // Stack. | 195 // Stack. |
| 194 Address c_entry_fp_; // the frame pointer of the top c entry frame | 196 Address c_entry_fp_; // the frame pointer of the top c entry frame |
| 195 Address handler_; // try-blocks are chained through the stack | 197 Address handler_; // try-blocks are chained through the stack |
| 196 | 198 |
| 197 #ifdef USE_SIMULATOR | 199 #ifdef USE_SIMULATOR |
| 198 #ifdef V8_TARGET_ARCH_ARM | 200 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) |
| 199 Simulator* simulator_; | 201 Simulator* simulator_; |
| 200 #elif V8_TARGET_ARCH_MIPS | |
| 201 assembler::mips::Simulator* simulator_; | |
| 202 #endif | 202 #endif |
| 203 #endif // USE_SIMULATOR | 203 #endif // USE_SIMULATOR |
| 204 | 204 |
| 205 #ifdef ENABLE_LOGGING_AND_PROFILING | 205 #ifdef ENABLE_LOGGING_AND_PROFILING |
| 206 Address js_entry_sp_; // the stack pointer of the bottom js entry frame | 206 Address js_entry_sp_; // the stack pointer of the bottom js entry frame |
| 207 Address external_callback_; // the external callback we're currently in | 207 Address external_callback_; // the external callback we're currently in |
| 208 #endif | 208 #endif |
| 209 | 209 |
| 210 #ifdef ENABLE_VMSTATE_TRACKING | 210 #ifdef ENABLE_VMSTATE_TRACKING |
| 211 StateTag current_vm_state_; | 211 StateTag current_vm_state_; |
| 212 #endif | 212 #endif |
| 213 | 213 |
| 214 // Generated code scratch locations. | 214 // Generated code scratch locations. |
| 215 int32_t formal_count_; | 215 int32_t formal_count_; |
| 216 | 216 |
| 217 // Call back function to report unsafe JS accesses. | 217 // Call back function to report unsafe JS accesses. |
| 218 v8::FailedAccessCheckCallback failed_access_check_callback_; | 218 v8::FailedAccessCheckCallback failed_access_check_callback_; |
| 219 | 219 |
| 220 private: | 220 private: |
| 221 Address try_catch_handler_address_; | 221 Address try_catch_handler_address_; |
| 222 }; | 222 }; |
| 223 | 223 |
| 224 #if defined(V8_TARGET_ARCH_ARM) | 224 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) |
| 225 | 225 |
| 226 #define ISOLATE_PLATFORM_INIT_LIST(V) \ | 226 #define ISOLATE_PLATFORM_INIT_LIST(V) \ |
| 227 /* VirtualFrame::SpilledScope state */ \ | 227 /* VirtualFrame::SpilledScope state */ \ |
| 228 V(bool, is_virtual_frame_in_spilled_scope, false) \ | 228 V(bool, is_virtual_frame_in_spilled_scope, false) \ |
| 229 /* CodeGenerator::EmitNamedStore state */ \ | 229 /* CodeGenerator::EmitNamedStore state */ \ |
| 230 V(int, inlined_write_barrier_size, -1) | 230 V(int, inlined_write_barrier_size, -1) |
| 231 | 231 |
| 232 #if !defined(__arm__) | 232 #if !defined(__arm__) && !defined(__mips__) |
| 233 class HashMap; | 233 class HashMap; |
| 234 #endif | 234 #endif |
| 235 | 235 |
| 236 #else | 236 #else |
| 237 | 237 |
| 238 #define ISOLATE_PLATFORM_INIT_LIST(V) | 238 #define ISOLATE_PLATFORM_INIT_LIST(V) |
| 239 | 239 |
| 240 #endif | 240 #endif |
| 241 | 241 |
| 242 #ifdef ENABLE_DEBUGGER_SUPPORT | 242 #ifdef ENABLE_DEBUGGER_SUPPORT |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 typedef List<HeapObject*, PreallocatedStorage> DebugObjectCache; | 285 typedef List<HeapObject*, PreallocatedStorage> DebugObjectCache; |
| 286 | 286 |
| 287 #define ISOLATE_INIT_LIST(V) \ | 287 #define ISOLATE_INIT_LIST(V) \ |
| 288 /* AssertNoZoneAllocation state. */ \ | 288 /* AssertNoZoneAllocation state. */ \ |
| 289 V(bool, zone_allow_allocation, true) \ | 289 V(bool, zone_allow_allocation, true) \ |
| 290 /* SerializerDeserializer state. */ \ | 290 /* SerializerDeserializer state. */ \ |
| 291 V(int, serialize_partial_snapshot_cache_length, 0) \ | 291 V(int, serialize_partial_snapshot_cache_length, 0) \ |
| 292 /* Assembler state. */ \ | 292 /* Assembler state. */ \ |
| 293 /* A previously allocated buffer of kMinimalBufferSize bytes, or NULL. */ \ | 293 /* A previously allocated buffer of kMinimalBufferSize bytes, or NULL. */ \ |
| 294 V(byte*, assembler_spare_buffer, NULL) \ | 294 V(byte*, assembler_spare_buffer, NULL) \ |
| 295 /*This static counter ensures that NativeAllocationCheckers can be nested.*/ \ | |
| 296 V(int, allocation_disallowed, 0) \ | |
| 297 V(FatalErrorCallback, exception_behavior, NULL) \ | 295 V(FatalErrorCallback, exception_behavior, NULL) \ |
| 298 V(v8::Debug::MessageHandler, message_handler, NULL) \ | 296 V(v8::Debug::MessageHandler, message_handler, NULL) \ |
| 299 /* To distinguish the function templates, so that we can find them in the */ \ | 297 /* To distinguish the function templates, so that we can find them in the */ \ |
| 300 /* function cache of the global context. */ \ | 298 /* function cache of the global context. */ \ |
| 301 V(int, next_serial_number, 0) \ | 299 V(int, next_serial_number, 0) \ |
| 302 V(ExternalReferenceRedirectorPointer*, external_reference_redirector, NULL) \ | 300 V(ExternalReferenceRedirectorPointer*, external_reference_redirector, NULL) \ |
| 303 V(bool, always_allow_natives_syntax, false) \ | 301 V(bool, always_allow_natives_syntax, false) \ |
| 304 /* Part of the state of liveedit. */ \ | 302 /* Part of the state of liveedit. */ \ |
| 305 V(FunctionInfoListener*, active_function_info_listener, NULL) \ | 303 V(FunctionInfoListener*, active_function_info_listener, NULL) \ |
| 306 /* State for Relocatable. */ \ | 304 /* State for Relocatable. */ \ |
| (...skipping 27 matching lines...) Expand all Loading... |
| 334 // A thread has a PerIsolateThreadData instance for each isolate that it has | 332 // A thread has a PerIsolateThreadData instance for each isolate that it has |
| 335 // entered. That instance is allocated when the isolate is initially entered | 333 // entered. That instance is allocated when the isolate is initially entered |
| 336 // and reused on subsequent entries. | 334 // and reused on subsequent entries. |
| 337 class PerIsolateThreadData { | 335 class PerIsolateThreadData { |
| 338 public: | 336 public: |
| 339 PerIsolateThreadData(Isolate* isolate, ThreadId thread_id) | 337 PerIsolateThreadData(Isolate* isolate, ThreadId thread_id) |
| 340 : isolate_(isolate), | 338 : isolate_(isolate), |
| 341 thread_id_(thread_id), | 339 thread_id_(thread_id), |
| 342 stack_limit_(0), | 340 stack_limit_(0), |
| 343 thread_state_(NULL), | 341 thread_state_(NULL), |
| 344 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) | 342 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \ |
| 343 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS) |
| 345 simulator_(NULL), | 344 simulator_(NULL), |
| 346 #endif | 345 #endif |
| 347 next_(NULL), | 346 next_(NULL), |
| 348 prev_(NULL) { } | 347 prev_(NULL) { } |
| 349 Isolate* isolate() const { return isolate_; } | 348 Isolate* isolate() const { return isolate_; } |
| 350 ThreadId thread_id() const { return thread_id_; } | 349 ThreadId thread_id() const { return thread_id_; } |
| 351 void set_stack_limit(uintptr_t value) { stack_limit_ = value; } | 350 void set_stack_limit(uintptr_t value) { stack_limit_ = value; } |
| 352 uintptr_t stack_limit() const { return stack_limit_; } | 351 uintptr_t stack_limit() const { return stack_limit_; } |
| 353 ThreadState* thread_state() const { return thread_state_; } | 352 ThreadState* thread_state() const { return thread_state_; } |
| 354 void set_thread_state(ThreadState* value) { thread_state_ = value; } | 353 void set_thread_state(ThreadState* value) { thread_state_ = value; } |
| 355 | 354 |
| 356 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) | 355 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \ |
| 356 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS) |
| 357 Simulator* simulator() const { return simulator_; } | 357 Simulator* simulator() const { return simulator_; } |
| 358 void set_simulator(Simulator* simulator) { | 358 void set_simulator(Simulator* simulator) { |
| 359 simulator_ = simulator; | 359 simulator_ = simulator; |
| 360 } | 360 } |
| 361 #endif | 361 #endif |
| 362 | 362 |
| 363 bool Matches(Isolate* isolate, ThreadId thread_id) const { | 363 bool Matches(Isolate* isolate, ThreadId thread_id) const { |
| 364 return isolate_ == isolate && thread_id_ == thread_id; | 364 return isolate_ == isolate && thread_id_ == thread_id; |
| 365 } | 365 } |
| 366 | 366 |
| 367 private: | 367 private: |
| 368 Isolate* isolate_; | 368 Isolate* isolate_; |
| 369 ThreadId thread_id_; | 369 ThreadId thread_id_; |
| 370 uintptr_t stack_limit_; | 370 uintptr_t stack_limit_; |
| 371 ThreadState* thread_state_; | 371 ThreadState* thread_state_; |
| 372 | 372 |
| 373 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) | 373 #if !defined(__arm__) && defined(V8_TARGET_ARCH_ARM) || \ |
| 374 !defined(__mips__) && defined(V8_TARGET_ARCH_MIPS) |
| 374 Simulator* simulator_; | 375 Simulator* simulator_; |
| 375 #endif | 376 #endif |
| 376 | 377 |
| 377 PerIsolateThreadData* next_; | 378 PerIsolateThreadData* next_; |
| 378 PerIsolateThreadData* prev_; | 379 PerIsolateThreadData* prev_; |
| 379 | 380 |
| 380 friend class Isolate; | 381 friend class Isolate; |
| 381 friend class ThreadDataTable; | 382 friend class ThreadDataTable; |
| 382 friend class EntryStackItem; | 383 friend class EntryStackItem; |
| 383 | 384 |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 #ifdef DEBUG | 848 #ifdef DEBUG |
| 848 HistogramInfo* heap_histograms() { return heap_histograms_; } | 849 HistogramInfo* heap_histograms() { return heap_histograms_; } |
| 849 | 850 |
| 850 JSObject::SpillInformation* js_spill_information() { | 851 JSObject::SpillInformation* js_spill_information() { |
| 851 return &js_spill_information_; | 852 return &js_spill_information_; |
| 852 } | 853 } |
| 853 | 854 |
| 854 int* code_kind_statistics() { return code_kind_statistics_; } | 855 int* code_kind_statistics() { return code_kind_statistics_; } |
| 855 #endif | 856 #endif |
| 856 | 857 |
| 857 #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) | 858 #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) || \ |
| 859 defined(V8_TARGET_ARCH_MIPS) && !defined(__mips__) |
| 858 bool simulator_initialized() { return simulator_initialized_; } | 860 bool simulator_initialized() { return simulator_initialized_; } |
| 859 void set_simulator_initialized(bool initialized) { | 861 void set_simulator_initialized(bool initialized) { |
| 860 simulator_initialized_ = initialized; | 862 simulator_initialized_ = initialized; |
| 861 } | 863 } |
| 862 | 864 |
| 863 HashMap* simulator_i_cache() { return simulator_i_cache_; } | 865 HashMap* simulator_i_cache() { return simulator_i_cache_; } |
| 864 void set_simulator_i_cache(HashMap* hash_map) { | 866 void set_simulator_i_cache(HashMap* hash_map) { |
| 865 simulator_i_cache_ = hash_map; | 867 simulator_i_cache_ = hash_map; |
| 866 } | 868 } |
| 867 | 869 |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1069 StringInputBuffer objects_string_compare_buffer_a_; | 1071 StringInputBuffer objects_string_compare_buffer_a_; |
| 1070 StringInputBuffer objects_string_compare_buffer_b_; | 1072 StringInputBuffer objects_string_compare_buffer_b_; |
| 1071 StaticResource<StringInputBuffer> objects_string_input_buffer_; | 1073 StaticResource<StringInputBuffer> objects_string_input_buffer_; |
| 1072 unibrow::Mapping<unibrow::Ecma262Canonicalize> | 1074 unibrow::Mapping<unibrow::Ecma262Canonicalize> |
| 1073 regexp_macro_assembler_canonicalize_; | 1075 regexp_macro_assembler_canonicalize_; |
| 1074 RegExpStack* regexp_stack_; | 1076 RegExpStack* regexp_stack_; |
| 1075 unibrow::Mapping<unibrow::Ecma262Canonicalize> interp_canonicalize_mapping_; | 1077 unibrow::Mapping<unibrow::Ecma262Canonicalize> interp_canonicalize_mapping_; |
| 1076 ZoneObjectList frame_element_constant_list_; | 1078 ZoneObjectList frame_element_constant_list_; |
| 1077 ZoneObjectList result_constant_list_; | 1079 ZoneObjectList result_constant_list_; |
| 1078 | 1080 |
| 1079 #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) | 1081 #if defined(V8_TARGET_ARCH_ARM) && !defined(__arm__) || \ |
| 1082 defined(V8_TARGET_ARCH_MIPS) && !defined(__mips__) |
| 1080 bool simulator_initialized_; | 1083 bool simulator_initialized_; |
| 1081 HashMap* simulator_i_cache_; | 1084 HashMap* simulator_i_cache_; |
| 1082 Redirection* simulator_redirection_; | 1085 Redirection* simulator_redirection_; |
| 1083 #endif | 1086 #endif |
| 1084 | 1087 |
| 1085 #ifdef DEBUG | 1088 #ifdef DEBUG |
| 1086 // A static array of histogram info for each type. | 1089 // A static array of histogram info for each type. |
| 1087 HistogramInfo heap_histograms_[LAST_TYPE + 1]; | 1090 HistogramInfo heap_histograms_[LAST_TYPE + 1]; |
| 1088 JSObject::SpillInformation js_spill_information_; | 1091 JSObject::SpillInformation js_spill_information_; |
| 1089 int code_kind_statistics_[Code::NUMBER_OF_KINDS]; | 1092 int code_kind_statistics_[Code::NUMBER_OF_KINDS]; |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1296 | 1299 |
| 1297 } } // namespace v8::internal | 1300 } } // namespace v8::internal |
| 1298 | 1301 |
| 1299 // TODO(isolates): Get rid of these -inl.h includes and place them only where | 1302 // TODO(isolates): Get rid of these -inl.h includes and place them only where |
| 1300 // they're needed. | 1303 // they're needed. |
| 1301 #include "allocation-inl.h" | 1304 #include "allocation-inl.h" |
| 1302 #include "zone-inl.h" | 1305 #include "zone-inl.h" |
| 1303 #include "frames-inl.h" | 1306 #include "frames-inl.h" |
| 1304 | 1307 |
| 1305 #endif // V8_ISOLATE_H_ | 1308 #endif // V8_ISOLATE_H_ |
| OLD | NEW |