Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(345)

Side by Side Diff: src/isolate.h

Issue 137213009: Clean up accessors in the Isolate. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: small fix Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/property.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 static int GetCurrentThreadId(); 200 static int GetCurrentThreadId();
201 201
202 int id_; 202 int id_;
203 203
204 static Atomic32 highest_thread_id_; 204 static Atomic32 highest_thread_id_;
205 205
206 friend class Isolate; 206 friend class Isolate;
207 }; 207 };
208 208
209 209
210 #define FIELD_ACCESSOR(type, name) \
211 inline void set_##name(type v) { name##_ = v; } \
212 inline type name() const { return name##_; }
213
214
210 class ThreadLocalTop BASE_EMBEDDED { 215 class ThreadLocalTop BASE_EMBEDDED {
211 public: 216 public:
212 // Does early low-level initialization that does not depend on the 217 // Does early low-level initialization that does not depend on the
213 // isolate being present. 218 // isolate being present.
214 ThreadLocalTop(); 219 ThreadLocalTop();
215 220
216 // Initialize the thread data. 221 // Initialize the thread data.
217 void Initialize(); 222 void Initialize();
218 223
219 // Get the top C++ try catch handler or NULL if none are registered. 224 // Get the top C++ try catch handler or NULL if none are registered.
220 // 225 //
221 // This method is not guarenteed to return an address that can be 226 // This method is not guarenteed to return an address that can be
222 // used for comparison with addresses into the JS stack. If such an 227 // used for comparison with addresses into the JS stack. If such an
223 // address is needed, use try_catch_handler_address. 228 // address is needed, use try_catch_handler_address.
224 v8::TryCatch* TryCatchHandler(); 229 v8::TryCatch* TryCatchHandler();
225 230
226 // Get the address of the top C++ try catch handler or NULL if 231 // Get the address of the top C++ try catch handler or NULL if
227 // none are registered. 232 // none are registered.
228 // 233 //
229 // This method always returns an address that can be compared to 234 // This method always returns an address that can be compared to
230 // pointers into the JavaScript stack. When running on actual 235 // pointers into the JavaScript stack. When running on actual
231 // hardware, try_catch_handler_address and TryCatchHandler return 236 // hardware, try_catch_handler_address and TryCatchHandler return
232 // the same pointer. When running on a simulator with a separate JS 237 // the same pointer. When running on a simulator with a separate JS
233 // stack, try_catch_handler_address returns a JS stack address that 238 // stack, try_catch_handler_address returns a JS stack address that
234 // corresponds to the place on the JS stack where the C++ handler 239 // corresponds to the place on the JS stack where the C++ handler
235 // would have been if the stack were not separate. 240 // would have been if the stack were not separate.
236 inline Address try_catch_handler_address() { 241 FIELD_ACCESSOR(Address, try_catch_handler_address)
237 return try_catch_handler_address_;
238 }
239
240 // Set the address of the top C++ try catch handler.
241 inline void set_try_catch_handler_address(Address address) {
242 try_catch_handler_address_ = address;
243 }
244 242
245 void Free() { 243 void Free() {
246 ASSERT(!has_pending_message_); 244 ASSERT(!has_pending_message_);
247 ASSERT(!external_caught_exception_); 245 ASSERT(!external_caught_exception_);
248 ASSERT(try_catch_handler_address_ == NULL); 246 ASSERT(try_catch_handler_address_ == NULL);
249 } 247 }
250 248
251 Isolate* isolate_; 249 Isolate* isolate_;
252 // The context where the current execution method is created and for variable 250 // The context where the current execution method is created and for variable
253 // lookups. 251 // lookups.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 V(ExternalReferenceTable*, external_reference_table, NULL) \ 357 V(ExternalReferenceTable*, external_reference_table, NULL) \
360 /* AstNode state. */ \ 358 /* AstNode state. */ \
361 V(int, ast_node_id, 0) \ 359 V(int, ast_node_id, 0) \
362 V(unsigned, ast_node_count, 0) \ 360 V(unsigned, ast_node_count, 0) \
363 V(bool, microtask_pending, false) \ 361 V(bool, microtask_pending, false) \
364 V(HStatistics*, hstatistics, NULL) \ 362 V(HStatistics*, hstatistics, NULL) \
365 V(HTracer*, htracer, NULL) \ 363 V(HTracer*, htracer, NULL) \
366 V(CodeTracer*, code_tracer, NULL) \ 364 V(CodeTracer*, code_tracer, NULL) \
367 ISOLATE_DEBUGGER_INIT_LIST(V) 365 ISOLATE_DEBUGGER_INIT_LIST(V)
368 366
367 #define THREAD_LOCAL_TOP_ACCESSOR(type, name) \
368 inline void set_##name(type v) { thread_local_top_.name##_ = v; } \
369 inline type name() const { return thread_local_top_.name##_; }
370
371
369 class Isolate { 372 class Isolate {
370 // These forward declarations are required to make the friend declarations in 373 // These forward declarations are required to make the friend declarations in
371 // PerIsolateThreadData work on some older versions of gcc. 374 // PerIsolateThreadData work on some older versions of gcc.
372 class ThreadDataTable; 375 class ThreadDataTable;
373 class EntryStackItem; 376 class EntryStackItem;
374 public: 377 public:
375 ~Isolate(); 378 ~Isolate();
376 379
377 // A thread has a PerIsolateThreadData instance for each isolate that it has 380 // A thread has a PerIsolateThreadData instance for each isolate that it has
378 // entered. That instance is allocated when the isolate is initially entered 381 // entered. That instance is allocated when the isolate is initially entered
379 // and reused on subsequent entries. 382 // and reused on subsequent entries.
380 class PerIsolateThreadData { 383 class PerIsolateThreadData {
381 public: 384 public:
382 PerIsolateThreadData(Isolate* isolate, ThreadId thread_id) 385 PerIsolateThreadData(Isolate* isolate, ThreadId thread_id)
383 : isolate_(isolate), 386 : isolate_(isolate),
384 thread_id_(thread_id), 387 thread_id_(thread_id),
385 stack_limit_(0), 388 stack_limit_(0),
386 thread_state_(NULL), 389 thread_state_(NULL),
387 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \ 390 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \
388 !defined(__mips__) && V8_TARGET_ARCH_MIPS 391 !defined(__mips__) && V8_TARGET_ARCH_MIPS
389 simulator_(NULL), 392 simulator_(NULL),
390 #endif 393 #endif
391 next_(NULL), 394 next_(NULL),
392 prev_(NULL) { } 395 prev_(NULL) { }
393 Isolate* isolate() const { return isolate_; } 396 Isolate* isolate() const { return isolate_; }
394 ThreadId thread_id() const { return thread_id_; } 397 ThreadId thread_id() const { return thread_id_; }
395 void set_stack_limit(uintptr_t value) { stack_limit_ = value; } 398
396 uintptr_t stack_limit() const { return stack_limit_; } 399 FIELD_ACCESSOR(uintptr_t, stack_limit)
397 ThreadState* thread_state() const { return thread_state_; } 400 FIELD_ACCESSOR(ThreadState*, thread_state)
398 void set_thread_state(ThreadState* value) { thread_state_ = value; }
399 401
400 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \ 402 #if !defined(__arm__) && V8_TARGET_ARCH_ARM || \
401 !defined(__mips__) && V8_TARGET_ARCH_MIPS 403 !defined(__mips__) && V8_TARGET_ARCH_MIPS
402 Simulator* simulator() const { return simulator_; } 404 FIELD_ACCESSOR(Simulator*, simulator)
403 void set_simulator(Simulator* simulator) {
404 simulator_ = simulator;
405 }
406 #endif 405 #endif
407 406
408 bool Matches(Isolate* isolate, ThreadId thread_id) const { 407 bool Matches(Isolate* isolate, ThreadId thread_id) const {
409 return isolate_ == isolate && thread_id_.Equals(thread_id); 408 return isolate_ == isolate && thread_id_.Equals(thread_id);
410 } 409 }
411 410
412 private: 411 private:
413 Isolate* isolate_; 412 Isolate* isolate_;
414 ThreadId thread_id_; 413 ThreadId thread_id_;
415 uintptr_t stack_limit_; 414 uintptr_t stack_limit_;
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 Address get_address_from_id(AddressId id); 533 Address get_address_from_id(AddressId id);
535 534
536 // Access to top context (where the current function object was created). 535 // Access to top context (where the current function object was created).
537 Context* context() { return thread_local_top_.context_; } 536 Context* context() { return thread_local_top_.context_; }
538 void set_context(Context* context) { 537 void set_context(Context* context) {
539 ASSERT(context == NULL || context->IsContext()); 538 ASSERT(context == NULL || context->IsContext());
540 thread_local_top_.context_ = context; 539 thread_local_top_.context_ = context;
541 } 540 }
542 Context** context_address() { return &thread_local_top_.context_; } 541 Context** context_address() { return &thread_local_top_.context_; }
543 542
544 SaveContext* save_context() { return thread_local_top_.save_context_; } 543 THREAD_LOCAL_TOP_ACCESSOR(SaveContext*, save_context)
545 void set_save_context(SaveContext* save) {
546 thread_local_top_.save_context_ = save;
547 }
548 544
549 // Access to current thread id. 545 // Access to current thread id.
550 ThreadId thread_id() { return thread_local_top_.thread_id_; } 546 THREAD_LOCAL_TOP_ACCESSOR(ThreadId, thread_id)
551 void set_thread_id(ThreadId id) { thread_local_top_.thread_id_ = id; }
552 547
553 // Interface to pending exception. 548 // Interface to pending exception.
554 MaybeObject* pending_exception() { 549 MaybeObject* pending_exception() {
555 ASSERT(has_pending_exception()); 550 ASSERT(has_pending_exception());
556 return thread_local_top_.pending_exception_; 551 return thread_local_top_.pending_exception_;
557 } 552 }
558 bool external_caught_exception() { 553
559 return thread_local_top_.external_caught_exception_;
560 }
561 void set_external_caught_exception(bool value) {
562 thread_local_top_.external_caught_exception_ = value;
563 }
564 void set_pending_exception(MaybeObject* exception) { 554 void set_pending_exception(MaybeObject* exception) {
565 thread_local_top_.pending_exception_ = exception; 555 thread_local_top_.pending_exception_ = exception;
566 } 556 }
557
567 void clear_pending_exception() { 558 void clear_pending_exception() {
568 thread_local_top_.pending_exception_ = heap_.the_hole_value(); 559 thread_local_top_.pending_exception_ = heap_.the_hole_value();
569 } 560 }
561
570 MaybeObject** pending_exception_address() { 562 MaybeObject** pending_exception_address() {
571 return &thread_local_top_.pending_exception_; 563 return &thread_local_top_.pending_exception_;
572 } 564 }
565
573 bool has_pending_exception() { 566 bool has_pending_exception() {
574 return !thread_local_top_.pending_exception_->IsTheHole(); 567 return !thread_local_top_.pending_exception_->IsTheHole();
575 } 568 }
569
570 THREAD_LOCAL_TOP_ACCESSOR(bool, external_caught_exception)
571
576 void clear_pending_message() { 572 void clear_pending_message() {
577 thread_local_top_.has_pending_message_ = false; 573 thread_local_top_.has_pending_message_ = false;
578 thread_local_top_.pending_message_obj_ = heap_.the_hole_value(); 574 thread_local_top_.pending_message_obj_ = heap_.the_hole_value();
579 thread_local_top_.pending_message_script_ = heap_.the_hole_value(); 575 thread_local_top_.pending_message_script_ = heap_.the_hole_value();
580 } 576 }
581 v8::TryCatch* try_catch_handler() { 577 v8::TryCatch* try_catch_handler() {
582 return thread_local_top_.TryCatchHandler(); 578 return thread_local_top_.TryCatchHandler();
583 } 579 }
584 Address try_catch_handler_address() { 580 Address try_catch_handler_address() {
585 return thread_local_top_.try_catch_handler_address(); 581 return thread_local_top_.try_catch_handler_address();
586 } 582 }
587 bool* external_caught_exception_address() { 583 bool* external_caught_exception_address() {
588 return &thread_local_top_.external_caught_exception_; 584 return &thread_local_top_.external_caught_exception_;
589 } 585 }
590 v8::TryCatch* catcher() { 586
591 return thread_local_top_.catcher_; 587 THREAD_LOCAL_TOP_ACCESSOR(v8::TryCatch*, catcher)
592 }
593 void set_catcher(v8::TryCatch* catcher) {
594 thread_local_top_.catcher_ = catcher;
595 }
596 588
597 MaybeObject** scheduled_exception_address() { 589 MaybeObject** scheduled_exception_address() {
598 return &thread_local_top_.scheduled_exception_; 590 return &thread_local_top_.scheduled_exception_;
599 } 591 }
600 592
601 Address pending_message_obj_address() { 593 Address pending_message_obj_address() {
602 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_); 594 return reinterpret_cast<Address>(&thread_local_top_.pending_message_obj_);
603 } 595 }
604 596
605 Address has_pending_message_address() { 597 Address has_pending_message_address() {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 }; 693 };
702 694
703 void SetCaptureStackTraceForUncaughtExceptions( 695 void SetCaptureStackTraceForUncaughtExceptions(
704 bool capture, 696 bool capture,
705 int frame_limit, 697 int frame_limit,
706 StackTrace::StackTraceOptions options); 698 StackTrace::StackTraceOptions options);
707 699
708 // Tells whether the current context has experienced an out of memory 700 // Tells whether the current context has experienced an out of memory
709 // exception. 701 // exception.
710 bool is_out_of_memory(); 702 bool is_out_of_memory();
711 bool ignore_out_of_memory() { 703
712 return thread_local_top_.ignore_out_of_memory_; 704 THREAD_LOCAL_TOP_ACCESSOR(bool, ignore_out_of_memory)
713 }
714 void set_ignore_out_of_memory(bool value) {
715 thread_local_top_.ignore_out_of_memory_ = value;
716 }
717 705
718 void PrintCurrentStackTrace(FILE* out); 706 void PrintCurrentStackTrace(FILE* out);
719 void PrintStack(StringStream* accumulator); 707 void PrintStack(StringStream* accumulator);
720 void PrintStack(FILE* out); 708 void PrintStack(FILE* out);
721 Handle<String> StackTraceString(); 709 Handle<String> StackTraceString();
722 NO_INLINE(void PushStackTraceAndDie(unsigned int magic, 710 NO_INLINE(void PushStackTraceAndDie(unsigned int magic,
723 Object* object, 711 Object* object,
724 Map* map, 712 Map* map,
725 unsigned int magic2)); 713 unsigned int magic2));
726 Handle<JSArray> CaptureCurrentStackTrace( 714 Handle<JSArray> CaptureCurrentStackTrace(
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 ConsStringIteratorOp* objects_string_compare_iterator_b() { 919 ConsStringIteratorOp* objects_string_compare_iterator_b() {
932 return &objects_string_compare_iterator_b_; 920 return &objects_string_compare_iterator_b_;
933 } 921 }
934 922
935 StaticResource<ConsStringIteratorOp>* objects_string_iterator() { 923 StaticResource<ConsStringIteratorOp>* objects_string_iterator() {
936 return &objects_string_iterator_; 924 return &objects_string_iterator_;
937 } 925 }
938 926
939 RuntimeState* runtime_state() { return &runtime_state_; } 927 RuntimeState* runtime_state() { return &runtime_state_; }
940 928
941 void set_fp_stubs_generated(bool value) { 929 FIELD_ACCESSOR(bool, fp_stubs_generated);
942 fp_stubs_generated_ = value;
943 }
944
945 bool fp_stubs_generated() { return fp_stubs_generated_; }
946 930
947 Builtins* builtins() { return &builtins_; } 931 Builtins* builtins() { return &builtins_; }
948 932
949 void NotifyExtensionInstalled() { 933 void NotifyExtensionInstalled() {
950 has_installed_extensions_ = true; 934 has_installed_extensions_ = true;
951 } 935 }
952 936
953 bool has_installed_extensions() { return has_installed_extensions_; } 937 bool has_installed_extensions() { return has_installed_extensions_; }
954 938
955 unibrow::Mapping<unibrow::Ecma262Canonicalize>* 939 unibrow::Mapping<unibrow::Ecma262Canonicalize>*
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 972
989 JSObject::SpillInformation* js_spill_information() { 973 JSObject::SpillInformation* js_spill_information() {
990 return &js_spill_information_; 974 return &js_spill_information_;
991 } 975 }
992 976
993 int* code_kind_statistics() { return code_kind_statistics_; } 977 int* code_kind_statistics() { return code_kind_statistics_; }
994 #endif 978 #endif
995 979
996 #if V8_TARGET_ARCH_ARM && !defined(__arm__) || \ 980 #if V8_TARGET_ARCH_ARM && !defined(__arm__) || \
997 V8_TARGET_ARCH_MIPS && !defined(__mips__) 981 V8_TARGET_ARCH_MIPS && !defined(__mips__)
998 bool simulator_initialized() { return simulator_initialized_; } 982 FIELD_ACCESSOR(bool, simulator_initialized)
999 void set_simulator_initialized(bool initialized) { 983 FIELD_ACCESSOR(HashMap*, simulator_i_cache)
1000 simulator_initialized_ = initialized; 984 FIELD_ACCESSOR(Redirection*, simulator_redirection)
1001 }
1002
1003 HashMap* simulator_i_cache() { return simulator_i_cache_; }
1004 void set_simulator_i_cache(HashMap* hash_map) {
1005 simulator_i_cache_ = hash_map;
1006 }
1007
1008 Redirection* simulator_redirection() {
1009 return simulator_redirection_;
1010 }
1011 void set_simulator_redirection(Redirection* redirection) {
1012 simulator_redirection_ = redirection;
1013 }
1014 #endif 985 #endif
1015 986
1016 Factory* factory() { return reinterpret_cast<Factory*>(this); } 987 Factory* factory() { return reinterpret_cast<Factory*>(this); }
1017 988
1018 static const int kJSRegexpStaticOffsetsVectorSize = 128; 989 static const int kJSRegexpStaticOffsetsVectorSize = 128;
1019 990
1020 ExternalCallbackScope* external_callback_scope() { 991 THREAD_LOCAL_TOP_ACCESSOR(ExternalCallbackScope*, external_callback_scope)
1021 return thread_local_top_.external_callback_scope_;
1022 }
1023 void set_external_callback_scope(ExternalCallbackScope* scope) {
1024 thread_local_top_.external_callback_scope_ = scope;
1025 }
1026 992
1027 StateTag current_vm_state() { 993 THREAD_LOCAL_TOP_ACCESSOR(StateTag, current_vm_state)
1028 return thread_local_top_.current_vm_state_;
1029 }
1030
1031 void set_current_vm_state(StateTag state) {
1032 thread_local_top_.current_vm_state_ = state;
1033 }
1034 994
1035 void SetData(uint32_t slot, void* data) { 995 void SetData(uint32_t slot, void* data) {
1036 ASSERT(slot < Internals::kNumIsolateDataSlots); 996 ASSERT(slot < Internals::kNumIsolateDataSlots);
1037 embedder_data_[slot] = data; 997 embedder_data_[slot] = data;
1038 } 998 }
1039 void* GetData(uint32_t slot) { 999 void* GetData(uint32_t slot) {
1040 ASSERT(slot < Internals::kNumIsolateDataSlots); 1000 ASSERT(slot < Internals::kNumIsolateDataSlots);
1041 return embedder_data_[slot]; 1001 return embedder_data_[slot];
1042 } 1002 }
1043 1003
1044 LookupResult* top_lookup_result() { 1004 THREAD_LOCAL_TOP_ACCESSOR(LookupResult*, top_lookup_result)
1045 return thread_local_top_.top_lookup_result_;
1046 }
1047 void SetTopLookupResult(LookupResult* top) {
1048 thread_local_top_.top_lookup_result_ = top;
1049 }
1050 1005
1051 bool IsDead() { return has_fatal_error_; } 1006 bool IsDead() { return has_fatal_error_; }
1052 void SignalFatalError() { has_fatal_error_ = true; } 1007 void SignalFatalError() { has_fatal_error_ = true; }
1053 1008
1054 bool use_crankshaft() const { return use_crankshaft_; } 1009 bool use_crankshaft() const { return use_crankshaft_; }
1055 1010
1056 bool initialized_from_snapshot() { return initialized_from_snapshot_; } 1011 bool initialized_from_snapshot() { return initialized_from_snapshot_; }
1057 1012
1058 double time_millis_since_init() { 1013 double time_millis_since_init() {
1059 return OS::TimeCurrentMillis() - time_millis_at_init_; 1014 return OS::TimeCurrentMillis() - time_millis_at_init_;
(...skipping 29 matching lines...) Expand all
1089 CallInterfaceDescriptor* call_descriptor(CallDescriptorKey index); 1044 CallInterfaceDescriptor* call_descriptor(CallDescriptorKey index);
1090 1045
1091 void IterateDeferredHandles(ObjectVisitor* visitor); 1046 void IterateDeferredHandles(ObjectVisitor* visitor);
1092 void LinkDeferredHandles(DeferredHandles* deferred_handles); 1047 void LinkDeferredHandles(DeferredHandles* deferred_handles);
1093 void UnlinkDeferredHandles(DeferredHandles* deferred_handles); 1048 void UnlinkDeferredHandles(DeferredHandles* deferred_handles);
1094 1049
1095 #ifdef DEBUG 1050 #ifdef DEBUG
1096 bool IsDeferredHandle(Object** location); 1051 bool IsDeferredHandle(Object** location);
1097 #endif // DEBUG 1052 #endif // DEBUG
1098 1053
1099 int max_available_threads() const { 1054 FIELD_ACCESSOR(int, max_available_threads);
1100 return max_available_threads_;
1101 }
1102
1103 void set_max_available_threads(int value) {
1104 max_available_threads_ = value;
1105 }
1106 1055
1107 bool concurrent_recompilation_enabled() { 1056 bool concurrent_recompilation_enabled() {
1108 // Thread is only available with flag enabled. 1057 // Thread is only available with flag enabled.
1109 ASSERT(optimizing_compiler_thread_ == NULL || 1058 ASSERT(optimizing_compiler_thread_ == NULL ||
1110 FLAG_concurrent_recompilation); 1059 FLAG_concurrent_recompilation);
1111 return optimizing_compiler_thread_ != NULL; 1060 return optimizing_compiler_thread_ != NULL;
1112 } 1061 }
1113 1062
1114 bool concurrent_osr_enabled() const { 1063 bool concurrent_osr_enabled() const {
1115 // Thread is only available with flag enabled. 1064 // Thread is only available with flag enabled.
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 friend class TestMemoryAllocatorScope; 1345 friend class TestMemoryAllocatorScope;
1397 friend class TestCodeRangeScope; 1346 friend class TestCodeRangeScope;
1398 friend class v8::Isolate; 1347 friend class v8::Isolate;
1399 friend class v8::Locker; 1348 friend class v8::Locker;
1400 friend class v8::Unlocker; 1349 friend class v8::Unlocker;
1401 1350
1402 DISALLOW_COPY_AND_ASSIGN(Isolate); 1351 DISALLOW_COPY_AND_ASSIGN(Isolate);
1403 }; 1352 };
1404 1353
1405 1354
1355 #undef FIELD_ACCESSOR
1356 #undef THREAD_LOCAL_TOP_ACCESSOR
1357
1358
1406 // If the GCC version is 4.1.x or 4.2.x an additional field is added to the 1359 // If the GCC version is 4.1.x or 4.2.x an additional field is added to the
1407 // class as a work around for a bug in the generated code found with these 1360 // class as a work around for a bug in the generated code found with these
1408 // versions of GCC. See V8 issue 122 for details. 1361 // versions of GCC. See V8 issue 122 for details.
1409 class SaveContext BASE_EMBEDDED { 1362 class SaveContext BASE_EMBEDDED {
1410 public: 1363 public:
1411 inline explicit SaveContext(Isolate* isolate); 1364 inline explicit SaveContext(Isolate* isolate);
1412 1365
1413 ~SaveContext() { 1366 ~SaveContext() {
1414 isolate_->set_context(context_.is_null() ? NULL : *context_); 1367 isolate_->set_context(context_.is_null() ? NULL : *context_);
1415 isolate_->set_save_context(prev_); 1368 isolate_->set_save_context(prev_);
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1584 } 1537 }
1585 1538
1586 EmbeddedVector<char, 128> filename_; 1539 EmbeddedVector<char, 128> filename_;
1587 FILE* file_; 1540 FILE* file_;
1588 int scope_depth_; 1541 int scope_depth_;
1589 }; 1542 };
1590 1543
1591 } } // namespace v8::internal 1544 } } // namespace v8::internal
1592 1545
1593 #endif // V8_ISOLATE_H_ 1546 #endif // V8_ISOLATE_H_
OLDNEW
« no previous file with comments | « no previous file | src/property.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698