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

Side by Side Diff: src/isolate.cc

Issue 12254007: Make the Isolate parameter mandatory for internal HandleScopes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 7 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 | « src/ic.cc ('k') | src/liveedit.cc » ('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 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 stack_trace_nesting_level_++; 801 stack_trace_nesting_level_++;
802 OS::PrintError( 802 OS::PrintError(
803 "\n\nAttempt to print stack while printing stack (double fault)\n"); 803 "\n\nAttempt to print stack while printing stack (double fault)\n");
804 OS::PrintError( 804 OS::PrintError(
805 "If you are lucky you may find a partial stack dump on stdout.\n\n"); 805 "If you are lucky you may find a partial stack dump on stdout.\n\n");
806 incomplete_message_->OutputToStdOut(); 806 incomplete_message_->OutputToStdOut();
807 } 807 }
808 } 808 }
809 809
810 810
811 static void PrintFrames(StringStream* accumulator, 811 static void PrintFrames(Isolate* isolate,
812 StringStream* accumulator,
812 StackFrame::PrintMode mode) { 813 StackFrame::PrintMode mode) {
813 StackFrameIterator it; 814 StackFrameIterator it(isolate);
814 for (int i = 0; !it.done(); it.Advance()) { 815 for (int i = 0; !it.done(); it.Advance()) {
815 it.frame()->Print(accumulator, mode, i++); 816 it.frame()->Print(accumulator, mode, i++);
816 } 817 }
817 } 818 }
818 819
819 820
820 void Isolate::PrintStack(StringStream* accumulator) { 821 void Isolate::PrintStack(StringStream* accumulator) {
821 if (!IsInitialized()) { 822 if (!IsInitialized()) {
822 accumulator->Add( 823 accumulator->Add(
823 "\n==== JS stack trace is not available =======================\n\n"); 824 "\n==== JS stack trace is not available =======================\n\n");
824 accumulator->Add( 825 accumulator->Add(
825 "\n==== Isolate for the thread is not initialized =============\n\n"); 826 "\n==== Isolate for the thread is not initialized =============\n\n");
826 return; 827 return;
827 } 828 }
828 // The MentionedObjectCache is not GC-proof at the moment. 829 // The MentionedObjectCache is not GC-proof at the moment.
829 AssertNoAllocation nogc; 830 AssertNoAllocation nogc;
830 ASSERT(StringStream::IsMentionedObjectCacheClear()); 831 ASSERT(StringStream::IsMentionedObjectCacheClear());
831 832
832 // Avoid printing anything if there are no frames. 833 // Avoid printing anything if there are no frames.
833 if (c_entry_fp(thread_local_top()) == 0) return; 834 if (c_entry_fp(thread_local_top()) == 0) return;
834 835
835 accumulator->Add( 836 accumulator->Add(
836 "\n==== JS stack trace =========================================\n\n"); 837 "\n==== JS stack trace =========================================\n\n");
837 PrintFrames(accumulator, StackFrame::OVERVIEW); 838 PrintFrames(this, accumulator, StackFrame::OVERVIEW);
838 839
839 accumulator->Add( 840 accumulator->Add(
840 "\n==== Details ================================================\n\n"); 841 "\n==== Details ================================================\n\n");
841 PrintFrames(accumulator, StackFrame::DETAILS); 842 PrintFrames(this, accumulator, StackFrame::DETAILS);
842 843
843 accumulator->PrintMentionedObjectCache(); 844 accumulator->PrintMentionedObjectCache();
844 accumulator->Add("=====================\n\n"); 845 accumulator->Add("=====================\n\n");
845 } 846 }
846 847
847 848
848 void Isolate::SetFailedAccessCheckCallback( 849 void Isolate::SetFailedAccessCheckCallback(
849 v8::FailedAccessCheckCallback callback) { 850 v8::FailedAccessCheckCallback callback) {
850 thread_local_top()->failed_access_check_callback_ = callback; 851 thread_local_top()->failed_access_check_callback_ = callback;
851 } 852 }
852 853
853 854
854 void Isolate::ReportFailedAccessCheck(JSObject* receiver, v8::AccessType type) { 855 void Isolate::ReportFailedAccessCheck(JSObject* receiver, v8::AccessType type) {
855 if (!thread_local_top()->failed_access_check_callback_) return; 856 if (!thread_local_top()->failed_access_check_callback_) return;
856 857
857 ASSERT(receiver->IsAccessCheckNeeded()); 858 ASSERT(receiver->IsAccessCheckNeeded());
858 ASSERT(context()); 859 ASSERT(context());
859 860
860 // Get the data object from access check info. 861 // Get the data object from access check info.
861 JSFunction* constructor = JSFunction::cast(receiver->map()->constructor()); 862 JSFunction* constructor = JSFunction::cast(receiver->map()->constructor());
862 if (!constructor->shared()->IsApiFunction()) return; 863 if (!constructor->shared()->IsApiFunction()) return;
863 Object* data_obj = 864 Object* data_obj =
864 constructor->shared()->get_api_func_data()->access_check_info(); 865 constructor->shared()->get_api_func_data()->access_check_info();
865 if (data_obj == heap_.undefined_value()) return; 866 if (data_obj == heap_.undefined_value()) return;
866 867
867 HandleScope scope; 868 HandleScope scope(this);
868 Handle<JSObject> receiver_handle(receiver); 869 Handle<JSObject> receiver_handle(receiver);
869 Handle<Object> data(AccessCheckInfo::cast(data_obj)->data()); 870 Handle<Object> data(AccessCheckInfo::cast(data_obj)->data());
870 { VMState state(this, EXTERNAL); 871 { VMState state(this, EXTERNAL);
871 thread_local_top()->failed_access_check_callback_( 872 thread_local_top()->failed_access_check_callback_(
872 v8::Utils::ToLocal(receiver_handle), 873 v8::Utils::ToLocal(receiver_handle),
873 type, 874 type,
874 v8::Utils::ToLocal(data)); 875 v8::Utils::ToLocal(data));
875 } 876 }
876 } 877 }
877 878
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 } 1001 }
1001 return result; 1002 return result;
1002 } 1003 }
1003 1004
1004 1005
1005 const char* const Isolate::kStackOverflowMessage = 1006 const char* const Isolate::kStackOverflowMessage =
1006 "Uncaught RangeError: Maximum call stack size exceeded"; 1007 "Uncaught RangeError: Maximum call stack size exceeded";
1007 1008
1008 1009
1009 Failure* Isolate::StackOverflow() { 1010 Failure* Isolate::StackOverflow() {
1010 HandleScope scope; 1011 HandleScope scope(this);
1011 // At this point we cannot create an Error object using its javascript 1012 // At this point we cannot create an Error object using its javascript
1012 // constructor. Instead, we copy the pre-constructed boilerplate and 1013 // constructor. Instead, we copy the pre-constructed boilerplate and
1013 // attach the stack trace as a hidden property. 1014 // attach the stack trace as a hidden property.
1014 Handle<String> key = factory()->stack_overflow_symbol(); 1015 Handle<String> key = factory()->stack_overflow_symbol();
1015 Handle<JSObject> boilerplate = 1016 Handle<JSObject> boilerplate =
1016 Handle<JSObject>::cast(GetProperty(js_builtins_object(), key)); 1017 Handle<JSObject>::cast(GetProperty(js_builtins_object(), key));
1017 Handle<JSObject> exception = Copy(boilerplate); 1018 Handle<JSObject> exception = Copy(boilerplate);
1018 DoThrow(*exception, NULL); 1019 DoThrow(*exception, NULL);
1019 1020
1020 // Get stack trace limit. 1021 // Get stack trace limit.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 MaybeObject* thrown = scheduled_exception(); 1084 MaybeObject* thrown = scheduled_exception();
1084 clear_scheduled_exception(); 1085 clear_scheduled_exception();
1085 // Re-throw the exception to avoid getting repeated error reporting. 1086 // Re-throw the exception to avoid getting repeated error reporting.
1086 return ReThrow(thrown); 1087 return ReThrow(thrown);
1087 } 1088 }
1088 1089
1089 1090
1090 void Isolate::PrintCurrentStackTrace(FILE* out) { 1091 void Isolate::PrintCurrentStackTrace(FILE* out) {
1091 StackTraceFrameIterator it(this); 1092 StackTraceFrameIterator it(this);
1092 while (!it.done()) { 1093 while (!it.done()) {
1093 HandleScope scope; 1094 HandleScope scope(this);
1094 // Find code position if recorded in relocation info. 1095 // Find code position if recorded in relocation info.
1095 JavaScriptFrame* frame = it.frame(); 1096 JavaScriptFrame* frame = it.frame();
1096 int pos = frame->LookupCode()->SourcePosition(frame->pc()); 1097 int pos = frame->LookupCode()->SourcePosition(frame->pc());
1097 Handle<Object> pos_obj(Smi::FromInt(pos)); 1098 Handle<Object> pos_obj(Smi::FromInt(pos));
1098 // Fetch function and receiver. 1099 // Fetch function and receiver.
1099 Handle<JSFunction> fun(JSFunction::cast(frame->function())); 1100 Handle<JSFunction> fun(JSFunction::cast(frame->function()));
1100 Handle<Object> recv(frame->receiver()); 1101 Handle<Object> recv(frame->receiver());
1101 // Advance to the next JavaScript frame and determine if the 1102 // Advance to the next JavaScript frame and determine if the
1102 // current frame is the top-level frame. 1103 // current frame is the top-level frame.
1103 it.Advance(); 1104 it.Advance();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1179 return true; 1180 return true;
1180 } 1181 }
1181 } 1182 }
1182 return false; 1183 return false;
1183 } 1184 }
1184 1185
1185 1186
1186 void Isolate::DoThrow(Object* exception, MessageLocation* location) { 1187 void Isolate::DoThrow(Object* exception, MessageLocation* location) {
1187 ASSERT(!has_pending_exception()); 1188 ASSERT(!has_pending_exception());
1188 1189
1189 HandleScope scope; 1190 HandleScope scope(this);
1190 Handle<Object> exception_handle(exception); 1191 Handle<Object> exception_handle(exception);
1191 1192
1192 // Determine reporting and whether the exception is caught externally. 1193 // Determine reporting and whether the exception is caught externally.
1193 bool catchable_by_javascript = is_catchable_by_javascript(exception); 1194 bool catchable_by_javascript = is_catchable_by_javascript(exception);
1194 bool can_be_caught_externally = false; 1195 bool can_be_caught_externally = false;
1195 bool should_report_exception = 1196 bool should_report_exception =
1196 ShouldReportException(&can_be_caught_externally, catchable_by_javascript); 1197 ShouldReportException(&can_be_caught_externally, catchable_by_javascript);
1197 bool report_exception = catchable_by_javascript && should_report_exception; 1198 bool report_exception = catchable_by_javascript && should_report_exception;
1198 bool try_catch_needs_message = 1199 bool try_catch_needs_message =
1199 can_be_caught_externally && try_catch_handler()->capture_message_; 1200 can_be_caught_externally && try_catch_handler()->capture_message_;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1343 1344
1344 1345
1345 void Isolate::ReportPendingMessages() { 1346 void Isolate::ReportPendingMessages() {
1346 ASSERT(has_pending_exception()); 1347 ASSERT(has_pending_exception());
1347 PropagatePendingExceptionToExternalTryCatch(); 1348 PropagatePendingExceptionToExternalTryCatch();
1348 1349
1349 // If the pending exception is OutOfMemoryException set out_of_memory in 1350 // If the pending exception is OutOfMemoryException set out_of_memory in
1350 // the native context. Note: We have to mark the native context here 1351 // the native context. Note: We have to mark the native context here
1351 // since the GenerateThrowOutOfMemory stub cannot make a RuntimeCall to 1352 // since the GenerateThrowOutOfMemory stub cannot make a RuntimeCall to
1352 // set it. 1353 // set it.
1353 HandleScope scope; 1354 HandleScope scope(this);
1354 if (thread_local_top_.pending_exception_->IsOutOfMemory()) { 1355 if (thread_local_top_.pending_exception_->IsOutOfMemory()) {
1355 context()->mark_out_of_memory(); 1356 context()->mark_out_of_memory();
1356 } else if (thread_local_top_.pending_exception_ == 1357 } else if (thread_local_top_.pending_exception_ ==
1357 heap()->termination_exception()) { 1358 heap()->termination_exception()) {
1358 // Do nothing: if needed, the exception has been already propagated to 1359 // Do nothing: if needed, the exception has been already propagated to
1359 // v8::TryCatch. 1360 // v8::TryCatch.
1360 } else { 1361 } else {
1361 if (thread_local_top_.has_pending_message_) { 1362 if (thread_local_top_.has_pending_message_) {
1362 thread_local_top_.has_pending_message_ = false; 1363 thread_local_top_.has_pending_message_ = false;
1363 if (!thread_local_top_.pending_message_obj_->IsTheHole()) { 1364 if (!thread_local_top_.pending_message_obj_->IsTheHole()) {
1364 HandleScope scope; 1365 HandleScope scope(this);
1365 Handle<Object> message_obj(thread_local_top_.pending_message_obj_); 1366 Handle<Object> message_obj(thread_local_top_.pending_message_obj_);
1366 if (thread_local_top_.pending_message_script_ != NULL) { 1367 if (thread_local_top_.pending_message_script_ != NULL) {
1367 Handle<Script> script(thread_local_top_.pending_message_script_); 1368 Handle<Script> script(thread_local_top_.pending_message_script_);
1368 int start_pos = thread_local_top_.pending_message_start_pos_; 1369 int start_pos = thread_local_top_.pending_message_start_pos_;
1369 int end_pos = thread_local_top_.pending_message_end_pos_; 1370 int end_pos = thread_local_top_.pending_message_end_pos_;
1370 MessageLocation location(script, start_pos, end_pos); 1371 MessageLocation location(script, start_pos, end_pos);
1371 MessageHandler::ReportMessage(this, &location, message_obj); 1372 MessageHandler::ReportMessage(this, &location, message_obj);
1372 } else { 1373 } else {
1373 MessageHandler::ReportMessage(this, NULL, message_obj); 1374 MessageHandler::ReportMessage(this, NULL, message_obj);
1374 } 1375 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1420 clear_pending_exception(); 1421 clear_pending_exception();
1421 return false; 1422 return false;
1422 } 1423 }
1423 } else if (thread_local_top()->external_caught_exception_) { 1424 } else if (thread_local_top()->external_caught_exception_) {
1424 // If the exception is externally caught, clear it if there are no 1425 // If the exception is externally caught, clear it if there are no
1425 // JavaScript frames on the way to the C++ frame that has the 1426 // JavaScript frames on the way to the C++ frame that has the
1426 // external handler. 1427 // external handler.
1427 ASSERT(thread_local_top()->try_catch_handler_address() != NULL); 1428 ASSERT(thread_local_top()->try_catch_handler_address() != NULL);
1428 Address external_handler_address = 1429 Address external_handler_address =
1429 thread_local_top()->try_catch_handler_address(); 1430 thread_local_top()->try_catch_handler_address();
1430 JavaScriptFrameIterator it; 1431 JavaScriptFrameIterator it(this);
1431 if (it.done() || (it.frame()->sp() > external_handler_address)) { 1432 if (it.done() || (it.frame()->sp() > external_handler_address)) {
1432 clear_exception = true; 1433 clear_exception = true;
1433 } 1434 }
1434 } 1435 }
1435 1436
1436 // Clear the exception if needed. 1437 // Clear the exception if needed.
1437 if (clear_exception) { 1438 if (clear_exception) {
1438 thread_local_top()->external_caught_exception_ = false; 1439 thread_local_top()->external_caught_exception_ = false;
1439 clear_pending_exception(); 1440 clear_pending_exception();
1440 return false; 1441 return false;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
1481 } 1482 }
1482 1483
1483 1484
1484 Handle<Context> Isolate::global_context() { 1485 Handle<Context> Isolate::global_context() {
1485 GlobalObject* global = thread_local_top()->context_->global_object(); 1486 GlobalObject* global = thread_local_top()->context_->global_object();
1486 return Handle<Context>(global->global_context()); 1487 return Handle<Context>(global->global_context());
1487 } 1488 }
1488 1489
1489 1490
1490 Handle<Context> Isolate::GetCallingNativeContext() { 1491 Handle<Context> Isolate::GetCallingNativeContext() {
1491 JavaScriptFrameIterator it; 1492 JavaScriptFrameIterator it(this);
1492 #ifdef ENABLE_DEBUGGER_SUPPORT 1493 #ifdef ENABLE_DEBUGGER_SUPPORT
1493 if (debug_->InDebugger()) { 1494 if (debug_->InDebugger()) {
1494 while (!it.done()) { 1495 while (!it.done()) {
1495 JavaScriptFrame* frame = it.frame(); 1496 JavaScriptFrame* frame = it.frame();
1496 Context* context = Context::cast(frame->context()); 1497 Context* context = Context::cast(frame->context());
1497 if (context->native_context() == *debug_->debug_context()) { 1498 if (context->native_context() == *debug_->debug_context()) {
1498 it.Advance(); 1499 it.Advance();
1499 } else { 1500 } else {
1500 break; 1501 break;
1501 } 1502 }
(...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after
1944 try_catch_handler()->exception_ = pending_exception(); 1945 try_catch_handler()->exception_ = pending_exception();
1945 if (!thread_local_top_.pending_message_obj_->IsTheHole()) { 1946 if (!thread_local_top_.pending_message_obj_->IsTheHole()) {
1946 try_catch_handler()->message_ = thread_local_top_.pending_message_obj_; 1947 try_catch_handler()->message_ = thread_local_top_.pending_message_obj_;
1947 } 1948 }
1948 } 1949 }
1949 } 1950 }
1950 1951
1951 1952
1952 void Isolate::InitializeLoggingAndCounters() { 1953 void Isolate::InitializeLoggingAndCounters() {
1953 if (logger_ == NULL) { 1954 if (logger_ == NULL) {
1954 logger_ = new Logger; 1955 logger_ = new Logger(this);
1955 } 1956 }
1956 if (counters_ == NULL) { 1957 if (counters_ == NULL) {
1957 counters_ = new Counters; 1958 counters_ = new Counters;
1958 } 1959 }
1959 } 1960 }
1960 1961
1961 1962
1962 void Isolate::InitializeDebugger() { 1963 void Isolate::InitializeDebugger() {
1963 #ifdef ENABLE_DEBUGGER_SUPPORT 1964 #ifdef ENABLE_DEBUGGER_SUPPORT
1964 ScopedLock lock(debugger_access_); 1965 ScopedLock lock(debugger_access_);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2000 string_tracker_->isolate_ = this; 2001 string_tracker_->isolate_ = this;
2001 compilation_cache_ = new CompilationCache(this); 2002 compilation_cache_ = new CompilationCache(this);
2002 transcendental_cache_ = new TranscendentalCache(); 2003 transcendental_cache_ = new TranscendentalCache();
2003 keyed_lookup_cache_ = new KeyedLookupCache(); 2004 keyed_lookup_cache_ = new KeyedLookupCache();
2004 context_slot_cache_ = new ContextSlotCache(); 2005 context_slot_cache_ = new ContextSlotCache();
2005 descriptor_lookup_cache_ = new DescriptorLookupCache(); 2006 descriptor_lookup_cache_ = new DescriptorLookupCache();
2006 unicode_cache_ = new UnicodeCache(); 2007 unicode_cache_ = new UnicodeCache();
2007 inner_pointer_to_code_cache_ = new InnerPointerToCodeCache(this); 2008 inner_pointer_to_code_cache_ = new InnerPointerToCodeCache(this);
2008 write_iterator_ = new ConsStringIteratorOp(); 2009 write_iterator_ = new ConsStringIteratorOp();
2009 global_handles_ = new GlobalHandles(this); 2010 global_handles_ = new GlobalHandles(this);
2010 bootstrapper_ = new Bootstrapper(); 2011 bootstrapper_ = new Bootstrapper(this);
2011 handle_scope_implementer_ = new HandleScopeImplementer(this); 2012 handle_scope_implementer_ = new HandleScopeImplementer(this);
2012 stub_cache_ = new StubCache(this, runtime_zone()); 2013 stub_cache_ = new StubCache(this, runtime_zone());
2013 regexp_stack_ = new RegExpStack(); 2014 regexp_stack_ = new RegExpStack();
2014 regexp_stack_->isolate_ = this; 2015 regexp_stack_->isolate_ = this;
2015 date_cache_ = new DateCache(); 2016 date_cache_ = new DateCache();
2016 code_stub_interface_descriptors_ = 2017 code_stub_interface_descriptors_ =
2017 new CodeStubInterfaceDescriptor[CodeStub::NUMBER_OF_IDS]; 2018 new CodeStubInterfaceDescriptor[CodeStub::NUMBER_OF_IDS];
2018 memset(code_stub_interface_descriptors_, 0, 2019 memset(code_stub_interface_descriptors_, 0,
2019 kPointerSize * CodeStub::NUMBER_OF_IDS); 2020 kPointerSize * CodeStub::NUMBER_OF_IDS);
2020 2021
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
2097 // Quiet the heap NaN if needed on target platform. 2098 // Quiet the heap NaN if needed on target platform.
2098 if (!create_heap_objects) Assembler::QuietNaN(heap_.nan_value()); 2099 if (!create_heap_objects) Assembler::QuietNaN(heap_.nan_value());
2099 2100
2100 runtime_profiler_ = new RuntimeProfiler(this); 2101 runtime_profiler_ = new RuntimeProfiler(this);
2101 runtime_profiler_->SetUp(); 2102 runtime_profiler_->SetUp();
2102 2103
2103 // If we are deserializing, log non-function code objects and compiled 2104 // If we are deserializing, log non-function code objects and compiled
2104 // functions found in the snapshot. 2105 // functions found in the snapshot.
2105 if (!create_heap_objects && 2106 if (!create_heap_objects &&
2106 (FLAG_log_code || FLAG_ll_prof || logger_->is_logging_code_events())) { 2107 (FLAG_log_code || FLAG_ll_prof || logger_->is_logging_code_events())) {
2107 HandleScope scope; 2108 HandleScope scope(this);
2108 LOG(this, LogCodeObjects()); 2109 LOG(this, LogCodeObjects());
2109 LOG(this, LogCompiledFunctions()); 2110 LOG(this, LogCompiledFunctions());
2110 } 2111 }
2111 2112
2112 CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, state_)), 2113 CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, state_)),
2113 Internals::kIsolateStateOffset); 2114 Internals::kIsolateStateOffset);
2114 CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, embedder_data_)), 2115 CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, embedder_data_)),
2115 Internals::kIsolateEmbedderDataOffset); 2116 Internals::kIsolateEmbedderDataOffset);
2116 CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, heap_.roots_)), 2117 CHECK_EQ(static_cast<int>(OFFSET_OF(Isolate, heap_.roots_)),
2117 Internals::kIsolateRootsOffset); 2118 Internals::kIsolateRootsOffset);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
2280 2281
2281 #ifdef DEBUG 2282 #ifdef DEBUG
2282 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \ 2283 #define ISOLATE_FIELD_OFFSET(type, name, ignored) \
2283 const intptr_t Isolate::name##_debug_offset_ = OFFSET_OF(Isolate, name##_); 2284 const intptr_t Isolate::name##_debug_offset_ = OFFSET_OF(Isolate, name##_);
2284 ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET) 2285 ISOLATE_INIT_LIST(ISOLATE_FIELD_OFFSET)
2285 ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET) 2286 ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET)
2286 #undef ISOLATE_FIELD_OFFSET 2287 #undef ISOLATE_FIELD_OFFSET
2287 #endif 2288 #endif
2288 2289
2289 } } // namespace v8::internal 2290 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ic.cc ('k') | src/liveedit.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698