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

Side by Side Diff: src/api.cc

Issue 2866008: [Isolates] Move contents of Top into Isolate.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/isolates/
Patch Set: ensure we're synced Created 10 years, 6 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/accessors.cc ('k') | src/arm/codegen-arm.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 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 22 matching lines...) Expand all
33 #include "compiler.h" 33 #include "compiler.h"
34 #include "debug.h" 34 #include "debug.h"
35 #include "execution.h" 35 #include "execution.h"
36 #include "global-handles.h" 36 #include "global-handles.h"
37 #include "heap-profiler.h" 37 #include "heap-profiler.h"
38 #include "messages.h" 38 #include "messages.h"
39 #include "platform.h" 39 #include "platform.h"
40 #include "profile-generator-inl.h" 40 #include "profile-generator-inl.h"
41 #include "serialize.h" 41 #include "serialize.h"
42 #include "snapshot.h" 42 #include "snapshot.h"
43 #include "top.h"
44 #include "utils.h" 43 #include "utils.h"
45 #include "v8threads.h" 44 #include "v8threads.h"
46 #include "version.h" 45 #include "version.h"
47 46
48 #include "../include/v8-profiler.h" 47 #include "../include/v8-profiler.h"
49 48
50 #define LOG_API(expr) LOG(ApiEntryCall(expr)) 49 #define LOG_API(expr) LOG(ApiEntryCall(expr))
51 50
52 #ifdef ENABLE_VMSTATE_TRACKING 51 #ifdef ENABLE_VMSTATE_TRACKING
53 #define ENTER_V8 i::VMState __state__(i::OTHER) 52 #define ENTER_V8 i::VMState __state__(i::OTHER)
54 #define LEAVE_V8 i::VMState __state__(i::EXTERNAL) 53 #define LEAVE_V8 i::VMState __state__(i::EXTERNAL)
55 #else 54 #else
56 #define ENTER_V8 ((void) 0) 55 #define ENTER_V8 ((void) 0)
57 #define LEAVE_V8 ((void) 0) 56 #define LEAVE_V8 ((void) 0)
58 #endif 57 #endif
59 58
60 namespace v8 { 59 namespace v8 {
61 60
62 #define ON_BAILOUT(location, code) \ 61 #define ON_BAILOUT(location, code) \
63 if (IsDeadCheck(location) || v8::V8::IsExecutionTerminating()) { \ 62 if (IsDeadCheck(location) || v8::V8::IsExecutionTerminating()) { \
64 code; \ 63 code; \
65 UNREACHABLE(); \ 64 UNREACHABLE(); \
66 } 65 }
67 66
68 67
69 #define EXCEPTION_PREAMBLE() \ 68 #define EXCEPTION_PREAMBLE() \
70 i::Isolate* isolate = i::Isolate::Current(); \ 69 i::Isolate* isolate = i::Isolate::Current(); \
71 isolate->handle_scope_implementer()->IncrementCallDepth(); \ 70 isolate->handle_scope_implementer()->IncrementCallDepth(); \
72 ASSERT(!i::Top::external_caught_exception()); \ 71 ASSERT(!isolate->external_caught_exception()); \
73 bool has_pending_exception = false 72 bool has_pending_exception = false
74 73
75 74
76 #define EXCEPTION_BAILOUT_CHECK(value) \ 75 #define EXCEPTION_BAILOUT_CHECK(value) \
77 do { \ 76 do { \
78 i::HandleScopeImplementer* handle_scope_implementer = \ 77 i::HandleScopeImplementer* handle_scope_implementer = \
79 isolate->handle_scope_implementer(); \ 78 isolate->handle_scope_implementer(); \
80 handle_scope_implementer->DecrementCallDepth(); \ 79 handle_scope_implementer->DecrementCallDepth(); \
81 if (has_pending_exception) { \ 80 if (has_pending_exception) { \
82 if (handle_scope_implementer->CallDepthIsZero() && \ 81 if (handle_scope_implementer->CallDepthIsZero() && \
83 i::Top::is_out_of_memory()) { \ 82 i::Isolate::Current()->is_out_of_memory()) { \
84 if (!handle_scope_implementer->ignore_out_of_memory()) \ 83 if (!handle_scope_implementer->ignore_out_of_memory()) \
85 i::V8::FatalProcessOutOfMemory(NULL); \ 84 i::V8::FatalProcessOutOfMemory(NULL); \
86 } \ 85 } \
87 bool call_depth_is_zero = handle_scope_implementer->CallDepthIsZero(); \ 86 bool call_depth_is_zero = handle_scope_implementer->CallDepthIsZero(); \
88 i::Top::OptionalRescheduleException(call_depth_is_zero); \ 87 i::Isolate::Current()->OptionalRescheduleException(call_depth_is_zero); \
89 return value; \ 88 return value; \
90 } \ 89 } \
91 } while (false) 90 } while (false)
92 91
93 92
94 #define API_ENTRY_CHECK(msg) \ 93 #define API_ENTRY_CHECK(msg) \
95 do { \ 94 do { \
96 if (v8::Locker::IsActive()) { \ 95 if (v8::Locker::IsActive()) { \
97 ApiCheck(i::ThreadManager::IsLockedByCurrentThread(), \ 96 ApiCheck(i::ThreadManager::IsLockedByCurrentThread(), \
98 msg, \ 97 msg, \
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 i::FlagList::SetFlagsFromCommandLine(argc, argv, remove_flags); 305 i::FlagList::SetFlagsFromCommandLine(argc, argv, remove_flags);
307 } 306 }
308 307
309 308
310 v8::Handle<Value> ThrowException(v8::Handle<v8::Value> value) { 309 v8::Handle<Value> ThrowException(v8::Handle<v8::Value> value) {
311 if (IsDeadCheck("v8::ThrowException()")) return v8::Handle<Value>(); 310 if (IsDeadCheck("v8::ThrowException()")) return v8::Handle<Value>();
312 ENTER_V8; 311 ENTER_V8;
313 // If we're passed an empty handle, we throw an undefined exception 312 // If we're passed an empty handle, we throw an undefined exception
314 // to deal more gracefully with out of memory situations. 313 // to deal more gracefully with out of memory situations.
315 if (value.IsEmpty()) { 314 if (value.IsEmpty()) {
316 i::Top::ScheduleThrow(HEAP->undefined_value()); 315 i::Isolate::Current()->ScheduleThrow(HEAP->undefined_value());
317 } else { 316 } else {
318 i::Top::ScheduleThrow(*Utils::OpenHandle(*value)); 317 i::Isolate::Current()->ScheduleThrow(*Utils::OpenHandle(*value));
319 } 318 }
320 return v8::Undefined(); 319 return v8::Undefined();
321 } 320 }
322 321
323 322
324 RegisteredExtension* RegisteredExtension::first_extension_ = NULL; 323 RegisteredExtension* RegisteredExtension::first_extension_ = NULL;
325 324
326 325
327 RegisteredExtension::RegisteredExtension(Extension* extension) 326 RegisteredExtension::RegisteredExtension(Extension* extension)
328 : extension_(extension), state_(UNVISITED) { } 327 : extension_(extension), state_(UNVISITED) { }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 468
470 469
471 void Context::Enter() { 470 void Context::Enter() {
472 if (IsDeadCheck("v8::Context::Enter()")) return; 471 if (IsDeadCheck("v8::Context::Enter()")) return;
473 ENTER_V8; 472 ENTER_V8;
474 i::Handle<i::Context> env = Utils::OpenHandle(this); 473 i::Handle<i::Context> env = Utils::OpenHandle(this);
475 // TODO(isolates): Context should have a pointer to isolate. 474 // TODO(isolates): Context should have a pointer to isolate.
476 i::Isolate* isolate = i::Isolate::Current(); 475 i::Isolate* isolate = i::Isolate::Current();
477 isolate->handle_scope_implementer()->EnterContext(env); 476 isolate->handle_scope_implementer()->EnterContext(env);
478 477
479 isolate->handle_scope_implementer()->SaveContext(i::Top::context()); 478 isolate->handle_scope_implementer()->SaveContext(isolate->context());
480 i::Top::set_context(*env); 479 isolate->set_context(*env);
481 } 480 }
482 481
483 482
484 void Context::Exit() { 483 void Context::Exit() {
485 if (!i::V8::IsRunning()) return; 484 if (!i::V8::IsRunning()) return;
486 // TODO(isolates): Context should have a pointer to isolate. 485 // TODO(isolates): Context should have a pointer to isolate.
487 i::Isolate* isolate = i::Isolate::Current(); 486 i::Isolate* isolate = i::Isolate::Current();
488 487
489 if (!ApiCheck(isolate->handle_scope_implementer()->LeaveLastContext(), 488 if (!ApiCheck(isolate->handle_scope_implementer()->LeaveLastContext(),
490 "v8::Context::Exit()", 489 "v8::Context::Exit()",
491 "Cannot exit non-entered context")) { 490 "Cannot exit non-entered context")) {
492 return; 491 return;
493 } 492 }
494 493
495 // Content of 'last_context' could be NULL. 494 // Content of 'last_context' could be NULL.
496 i::Context* last_context = 495 i::Context* last_context =
497 isolate->handle_scope_implementer()->RestoreContext(); 496 isolate->handle_scope_implementer()->RestoreContext();
498 i::Top::set_context(last_context); 497 isolate->set_context(last_context);
499 } 498 }
500 499
501 500
502 void Context::SetData(v8::Handle<String> data) { 501 void Context::SetData(v8::Handle<String> data) {
503 if (IsDeadCheck("v8::Context::SetData()")) return; 502 if (IsDeadCheck("v8::Context::SetData()")) return;
504 ENTER_V8; 503 ENTER_V8;
505 { 504 {
506 HandleScope scope; 505 HandleScope scope;
507 i::Handle<i::Context> env = Utils::OpenHandle(this); 506 i::Handle<i::Context> env = Utils::OpenHandle(this);
508 i::Handle<i::Object> raw_data = Utils::OpenHandle(*data); 507 i::Handle<i::Object> raw_data = Utils::OpenHandle(*data);
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 ON_BAILOUT("v8::Script::Compile()", return Local<Script>()); 1207 ON_BAILOUT("v8::Script::Compile()", return Local<Script>());
1209 LOG_API("Script::Compile"); 1208 LOG_API("Script::Compile");
1210 ENTER_V8; 1209 ENTER_V8;
1211 Local<Script> generic = New(source, origin, pre_data, script_data); 1210 Local<Script> generic = New(source, origin, pre_data, script_data);
1212 if (generic.IsEmpty()) 1211 if (generic.IsEmpty())
1213 return generic; 1212 return generic;
1214 i::Handle<i::Object> obj = Utils::OpenHandle(*generic); 1213 i::Handle<i::Object> obj = Utils::OpenHandle(*generic);
1215 i::Handle<i::SharedFunctionInfo> function = 1214 i::Handle<i::SharedFunctionInfo> function =
1216 i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj)); 1215 i::Handle<i::SharedFunctionInfo>(i::SharedFunctionInfo::cast(*obj));
1217 i::Handle<i::JSFunction> result = 1216 i::Handle<i::JSFunction> result =
1218 i::Factory::NewFunctionFromSharedFunctionInfo(function, 1217 i::Factory::NewFunctionFromSharedFunctionInfo(
1219 i::Top::global_context()); 1218 function,
1219 i::Isolate::Current()->global_context());
1220 return Local<Script>(ToApi<Script>(result)); 1220 return Local<Script>(ToApi<Script>(result));
1221 } 1221 }
1222 1222
1223 1223
1224 Local<Script> Script::Compile(v8::Handle<String> source, 1224 Local<Script> Script::Compile(v8::Handle<String> source,
1225 v8::Handle<Value> file_name, 1225 v8::Handle<Value> file_name,
1226 v8::Handle<String> script_data) { 1226 v8::Handle<String> script_data) {
1227 ScriptOrigin origin(file_name); 1227 ScriptOrigin origin(file_name);
1228 return Compile(source, &origin, 0, script_data); 1228 return Compile(source, &origin, 0, script_data);
1229 } 1229 }
1230 1230
1231 1231
1232 Local<Value> Script::Run() { 1232 Local<Value> Script::Run() {
1233 ON_BAILOUT("v8::Script::Run()", return Local<Value>()); 1233 ON_BAILOUT("v8::Script::Run()", return Local<Value>());
1234 LOG_API("Script::Run"); 1234 LOG_API("Script::Run");
1235 ENTER_V8; 1235 ENTER_V8;
1236 i::Object* raw_result = NULL; 1236 i::Object* raw_result = NULL;
1237 { 1237 {
1238 HandleScope scope; 1238 HandleScope scope;
1239 i::Handle<i::Object> obj = Utils::OpenHandle(this); 1239 i::Handle<i::Object> obj = Utils::OpenHandle(this);
1240 i::Handle<i::JSFunction> fun; 1240 i::Handle<i::JSFunction> fun;
1241 if (obj->IsSharedFunctionInfo()) { 1241 if (obj->IsSharedFunctionInfo()) {
1242 i::Handle<i::SharedFunctionInfo> 1242 i::Handle<i::SharedFunctionInfo>
1243 function_info(i::SharedFunctionInfo::cast(*obj)); 1243 function_info(i::SharedFunctionInfo::cast(*obj));
1244 fun = i::Factory::NewFunctionFromSharedFunctionInfo( 1244 fun = i::Factory::NewFunctionFromSharedFunctionInfo(
1245 function_info, i::Top::global_context()); 1245 function_info, i::Isolate::Current()->global_context());
1246 } else { 1246 } else {
1247 fun = i::Handle<i::JSFunction>(i::JSFunction::cast(*obj)); 1247 fun = i::Handle<i::JSFunction>(i::JSFunction::cast(*obj));
1248 } 1248 }
1249 EXCEPTION_PREAMBLE(); 1249 EXCEPTION_PREAMBLE();
1250 i::Handle<i::Object> receiver(i::Top::context()->global_proxy()); 1250 i::Handle<i::Object> receiver(
1251 i::Isolate::Current()->context()->global_proxy());
1251 i::Handle<i::Object> result = 1252 i::Handle<i::Object> result =
1252 i::Execution::Call(fun, receiver, 0, NULL, &has_pending_exception); 1253 i::Execution::Call(fun, receiver, 0, NULL, &has_pending_exception);
1253 EXCEPTION_BAILOUT_CHECK(Local<Value>()); 1254 EXCEPTION_BAILOUT_CHECK(Local<Value>());
1254 raw_result = *result; 1255 raw_result = *result;
1255 } 1256 }
1256 i::Handle<i::Object> result(raw_result); 1257 i::Handle<i::Object> result(raw_result);
1257 return Utils::ToLocal(result); 1258 return Utils::ToLocal(result);
1258 } 1259 }
1259 1260
1260 1261
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1298 i::Handle<i::Script> script(i::Script::cast(function_info->script())); 1299 i::Handle<i::Script> script(i::Script::cast(function_info->script()));
1299 script->set_data(*raw_data); 1300 script->set_data(*raw_data);
1300 } 1301 }
1301 } 1302 }
1302 1303
1303 1304
1304 // --- E x c e p t i o n s --- 1305 // --- E x c e p t i o n s ---
1305 1306
1306 1307
1307 v8::TryCatch::TryCatch() 1308 v8::TryCatch::TryCatch()
1308 : next_(i::Top::try_catch_handler_address()), 1309 : next_(i::Isolate::Current()->try_catch_handler_address()),
1309 exception_(HEAP->the_hole_value()), 1310 exception_(HEAP->the_hole_value()),
1310 message_(i::Smi::FromInt(0)), 1311 message_(i::Smi::FromInt(0)),
1311 is_verbose_(false), 1312 is_verbose_(false),
1312 can_continue_(true), 1313 can_continue_(true),
1313 capture_message_(true), 1314 capture_message_(true),
1314 rethrow_(false) { 1315 rethrow_(false) {
1315 i::Top::RegisterTryCatchHandler(this); 1316 i::Isolate::Current()->RegisterTryCatchHandler(this);
1316 } 1317 }
1317 1318
1318 1319
1319 v8::TryCatch::~TryCatch() { 1320 v8::TryCatch::~TryCatch() {
1320 if (rethrow_) { 1321 if (rethrow_) {
1321 v8::HandleScope scope; 1322 v8::HandleScope scope;
1322 v8::Local<v8::Value> exc = v8::Local<v8::Value>::New(Exception()); 1323 v8::Local<v8::Value> exc = v8::Local<v8::Value>::New(Exception());
1323 i::Top::UnregisterTryCatchHandler(this); 1324 i::Isolate::Current()->UnregisterTryCatchHandler(this);
1324 v8::ThrowException(exc); 1325 v8::ThrowException(exc);
1325 } else { 1326 } else {
1326 i::Top::UnregisterTryCatchHandler(this); 1327 i::Isolate::Current()->UnregisterTryCatchHandler(this);
1327 } 1328 }
1328 } 1329 }
1329 1330
1330 1331
1331 bool v8::TryCatch::HasCaught() const { 1332 bool v8::TryCatch::HasCaught() const {
1332 return !reinterpret_cast<i::Object*>(exception_)->IsTheHole(); 1333 return !reinterpret_cast<i::Object*>(exception_)->IsTheHole();
1333 } 1334 }
1334 1335
1335 1336
1336 bool v8::TryCatch::CanContinue() const { 1337 bool v8::TryCatch::CanContinue() const {
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 return scope.Close(Utils::ToLocal(data)); 1444 return scope.Close(Utils::ToLocal(data));
1444 } 1445 }
1445 1446
1446 1447
1447 static i::Handle<i::Object> CallV8HeapFunction(const char* name, 1448 static i::Handle<i::Object> CallV8HeapFunction(const char* name,
1448 i::Handle<i::Object> recv, 1449 i::Handle<i::Object> recv,
1449 int argc, 1450 int argc,
1450 i::Object** argv[], 1451 i::Object** argv[],
1451 bool* has_pending_exception) { 1452 bool* has_pending_exception) {
1452 i::Handle<i::String> fmt_str = i::Factory::LookupAsciiSymbol(name); 1453 i::Handle<i::String> fmt_str = i::Factory::LookupAsciiSymbol(name);
1453 i::Object* object_fun = i::Top::builtins()->GetProperty(*fmt_str); 1454 i::Object* object_fun =
1455 i::Isolate::Current()->builtins()->GetProperty(*fmt_str);
1454 i::Handle<i::JSFunction> fun = 1456 i::Handle<i::JSFunction> fun =
1455 i::Handle<i::JSFunction>(i::JSFunction::cast(object_fun)); 1457 i::Handle<i::JSFunction>(i::JSFunction::cast(object_fun));
1456 i::Handle<i::Object> value = 1458 i::Handle<i::Object> value =
1457 i::Execution::Call(fun, recv, argc, argv, has_pending_exception); 1459 i::Execution::Call(fun, recv, argc, argv, has_pending_exception);
1458 return value; 1460 return value;
1459 } 1461 }
1460 1462
1461 1463
1462 static i::Handle<i::Object> CallV8HeapFunction(const char* name, 1464 static i::Handle<i::Object> CallV8HeapFunction(const char* name,
1463 i::Handle<i::Object> data, 1465 i::Handle<i::Object> data,
1464 bool* has_pending_exception) { 1466 bool* has_pending_exception) {
1465 i::Object** argv[1] = { data.location() }; 1467 i::Object** argv[1] = { data.location() };
1466 return CallV8HeapFunction(name, 1468 return CallV8HeapFunction(name,
1467 i::Top::builtins(), 1469 i::Isolate::Current()->builtins(),
1468 1, 1470 1,
1469 argv, 1471 argv,
1470 has_pending_exception); 1472 has_pending_exception);
1471 } 1473 }
1472 1474
1473 1475
1474 int Message::GetLineNumber() const { 1476 int Message::GetLineNumber() const {
1475 ON_BAILOUT("v8::Message::GetLineNumber()", return kNoLineNumberInfo); 1477 ON_BAILOUT("v8::Message::GetLineNumber()", return kNoLineNumberInfo);
1476 ENTER_V8; 1478 ENTER_V8;
1477 HandleScope scope; 1479 HandleScope scope;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 return scope.Close(Utils::ToLocal(i::Handle<i::String>::cast(result))); 1550 return scope.Close(Utils::ToLocal(i::Handle<i::String>::cast(result)));
1549 } else { 1551 } else {
1550 return Local<String>(); 1552 return Local<String>();
1551 } 1553 }
1552 } 1554 }
1553 1555
1554 1556
1555 void Message::PrintCurrentStackTrace(FILE* out) { 1557 void Message::PrintCurrentStackTrace(FILE* out) {
1556 if (IsDeadCheck("v8::Message::PrintCurrentStackTrace()")) return; 1558 if (IsDeadCheck("v8::Message::PrintCurrentStackTrace()")) return;
1557 ENTER_V8; 1559 ENTER_V8;
1558 i::Top::PrintCurrentStackTrace(out); 1560 i::Isolate::Current()->PrintCurrentStackTrace(out);
1559 } 1561 }
1560 1562
1561 1563
1562 // --- S t a c k T r a c e --- 1564 // --- S t a c k T r a c e ---
1563 1565
1564 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const { 1566 Local<StackFrame> StackTrace::GetFrame(uint32_t index) const {
1565 if (IsDeadCheck("v8::StackTrace::GetFrame()")) return Local<StackFrame>(); 1567 if (IsDeadCheck("v8::StackTrace::GetFrame()")) return Local<StackFrame>();
1566 ENTER_V8; 1568 ENTER_V8;
1567 HandleScope scope; 1569 HandleScope scope;
1568 i::Handle<i::JSArray> self = Utils::OpenHandle(this); 1570 i::Handle<i::JSArray> self = Utils::OpenHandle(this);
(...skipping 13 matching lines...) Expand all
1582 if (IsDeadCheck("v8::StackTrace::AsArray()")) Local<Array>(); 1584 if (IsDeadCheck("v8::StackTrace::AsArray()")) Local<Array>();
1583 ENTER_V8; 1585 ENTER_V8;
1584 return Utils::ToLocal(Utils::OpenHandle(this)); 1586 return Utils::ToLocal(Utils::OpenHandle(this));
1585 } 1587 }
1586 1588
1587 1589
1588 Local<StackTrace> StackTrace::CurrentStackTrace(int frame_limit, 1590 Local<StackTrace> StackTrace::CurrentStackTrace(int frame_limit,
1589 StackTraceOptions options) { 1591 StackTraceOptions options) {
1590 if (IsDeadCheck("v8::StackTrace::CurrentStackTrace()")) Local<StackTrace>(); 1592 if (IsDeadCheck("v8::StackTrace::CurrentStackTrace()")) Local<StackTrace>();
1591 ENTER_V8; 1593 ENTER_V8;
1592 return i::Top::CaptureCurrentStackTrace(frame_limit, options); 1594 return i::Isolate::Current()->CaptureCurrentStackTrace(frame_limit, options);
1593 } 1595 }
1594 1596
1595 1597
1596 // --- S t a c k F r a m e --- 1598 // --- S t a c k F r a m e ---
1597 1599
1598 int StackFrame::GetLineNumber() const { 1600 int StackFrame::GetLineNumber() const {
1599 if (IsDeadCheck("v8::StackFrame::GetLineNumber()")) { 1601 if (IsDeadCheck("v8::StackFrame::GetLineNumber()")) {
1600 return Message::kNoLineNumberInfo; 1602 return Message::kNoLineNumberInfo;
1601 } 1603 }
1602 ENTER_V8; 1604 ENTER_V8;
(...skipping 1696 matching lines...) Expand 10 before | Expand all | Expand 10 after
3299 } 3301 }
3300 3302
3301 3303
3302 bool Context::HasOutOfMemoryException() { 3304 bool Context::HasOutOfMemoryException() {
3303 i::Handle<i::Context> env = Utils::OpenHandle(this); 3305 i::Handle<i::Context> env = Utils::OpenHandle(this);
3304 return env->has_out_of_memory(); 3306 return env->has_out_of_memory();
3305 } 3307 }
3306 3308
3307 3309
3308 bool Context::InContext() { 3310 bool Context::InContext() {
3309 return i::Top::context() != NULL; 3311 return i::Isolate::Current()->context() != NULL;
3310 } 3312 }
3311 3313
3312 3314
3313 v8::Local<v8::Context> Context::GetEntered() { 3315 v8::Local<v8::Context> Context::GetEntered() {
3314 if (IsDeadCheck("v8::Context::GetEntered()")) return Local<Context>(); 3316 if (IsDeadCheck("v8::Context::GetEntered()")) return Local<Context>();
3315 i::Handle<i::Object> last = 3317 i::Handle<i::Object> last =
3316 i::Isolate::Current()->handle_scope_implementer()->LastEnteredContext(); 3318 i::Isolate::Current()->handle_scope_implementer()->LastEnteredContext();
3317 if (last.is_null()) return Local<Context>(); 3319 if (last.is_null()) return Local<Context>();
3318 i::Handle<i::Context> context = i::Handle<i::Context>::cast(last); 3320 i::Handle<i::Context> context = i::Handle<i::Context>::cast(last);
3319 return Utils::ToLocal(context); 3321 return Utils::ToLocal(context);
3320 } 3322 }
3321 3323
3322 3324
3323 v8::Local<v8::Context> Context::GetCurrent() { 3325 v8::Local<v8::Context> Context::GetCurrent() {
3324 if (IsDeadCheck("v8::Context::GetCurrent()")) return Local<Context>(); 3326 if (IsDeadCheck("v8::Context::GetCurrent()")) return Local<Context>();
3325 i::Handle<i::Object> current = i::Top::global_context(); 3327 i::Handle<i::Object> current = i::Isolate::Current()->global_context();
3326 if (current.is_null()) return Local<Context>(); 3328 if (current.is_null()) return Local<Context>();
3327 i::Handle<i::Context> context = i::Handle<i::Context>::cast(current); 3329 i::Handle<i::Context> context = i::Handle<i::Context>::cast(current);
3328 return Utils::ToLocal(context); 3330 return Utils::ToLocal(context);
3329 } 3331 }
3330 3332
3331 3333
3332 v8::Local<v8::Context> Context::GetCalling() { 3334 v8::Local<v8::Context> Context::GetCalling() {
3333 if (IsDeadCheck("v8::Context::GetCalling()")) return Local<Context>(); 3335 if (IsDeadCheck("v8::Context::GetCalling()")) return Local<Context>();
3334 i::Handle<i::Object> calling = i::Top::GetCallingGlobalContext(); 3336 i::Handle<i::Object> calling =
3337 i::Isolate::Current()->GetCallingGlobalContext();
3335 if (calling.is_null()) return Local<Context>(); 3338 if (calling.is_null()) return Local<Context>();
3336 i::Handle<i::Context> context = i::Handle<i::Context>::cast(calling); 3339 i::Handle<i::Context> context = i::Handle<i::Context>::cast(calling);
3337 return Utils::ToLocal(context); 3340 return Utils::ToLocal(context);
3338 } 3341 }
3339 3342
3340 3343
3341 v8::Local<v8::Object> Context::Global() { 3344 v8::Local<v8::Object> Context::Global() {
3342 if (IsDeadCheck("v8::Context::Global()")) return Local<v8::Object>(); 3345 if (IsDeadCheck("v8::Context::Global()")) return Local<v8::Object>();
3343 i::Object** ctx = reinterpret_cast<i::Object**>(this); 3346 i::Object** ctx = reinterpret_cast<i::Object**>(this);
3344 i::Handle<i::Context> context = 3347 i::Handle<i::Context> context =
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
3623 i::StringShape shape(*obj); 3626 i::StringShape shape(*obj);
3624 return !shape.IsExternal(); 3627 return !shape.IsExternal();
3625 } 3628 }
3626 3629
3627 3630
3628 Local<v8::Object> v8::Object::New() { 3631 Local<v8::Object> v8::Object::New() {
3629 EnsureInitialized("v8::Object::New()"); 3632 EnsureInitialized("v8::Object::New()");
3630 LOG_API("Object::New"); 3633 LOG_API("Object::New");
3631 ENTER_V8; 3634 ENTER_V8;
3632 i::Handle<i::JSObject> obj = 3635 i::Handle<i::JSObject> obj =
3633 i::Factory::NewJSObject(i::Top::object_function()); 3636 i::Factory::NewJSObject(i::Isolate::Current()->object_function());
3634 return Utils::ToLocal(obj); 3637 return Utils::ToLocal(obj);
3635 } 3638 }
3636 3639
3637 3640
3638 Local<v8::Value> v8::Date::New(double time) { 3641 Local<v8::Value> v8::Date::New(double time) {
3639 EnsureInitialized("v8::Date::New()"); 3642 EnsureInitialized("v8::Date::New()");
3640 LOG_API("Date::New"); 3643 LOG_API("Date::New");
3641 if (isnan(time)) { 3644 if (isnan(time)) {
3642 // Introduce only canonical NaN value into the VM, to avoid signaling NaNs. 3645 // Introduce only canonical NaN value into the VM, to avoid signaling NaNs.
3643 time = i::OS::nan_value(); 3646 time = i::OS::nan_value();
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
3804 3807
3805 void V8::EnableSlidingStateWindow() { 3808 void V8::EnableSlidingStateWindow() {
3806 if (IsDeadCheck("v8::V8::EnableSlidingStateWindow()")) return; 3809 if (IsDeadCheck("v8::V8::EnableSlidingStateWindow()")) return;
3807 i::Logger::EnableSlidingStateWindow(); 3810 i::Logger::EnableSlidingStateWindow();
3808 } 3811 }
3809 3812
3810 3813
3811 void V8::SetFailedAccessCheckCallbackFunction( 3814 void V8::SetFailedAccessCheckCallbackFunction(
3812 FailedAccessCheckCallback callback) { 3815 FailedAccessCheckCallback callback) {
3813 if (IsDeadCheck("v8::V8::SetFailedAccessCheckCallbackFunction()")) return; 3816 if (IsDeadCheck("v8::V8::SetFailedAccessCheckCallbackFunction()")) return;
3814 i::Top::SetFailedAccessCheckCallback(callback); 3817 i::Isolate::Current()->SetFailedAccessCheckCallback(callback);
3815 } 3818 }
3816 3819
3817 3820
3818 void V8::AddObjectGroup(Persistent<Value>* objects, size_t length) { 3821 void V8::AddObjectGroup(Persistent<Value>* objects, size_t length) {
3819 if (IsDeadCheck("v8::V8::AddObjectGroup()")) return; 3822 if (IsDeadCheck("v8::V8::AddObjectGroup()")) return;
3820 STATIC_ASSERT(sizeof(Persistent<Value>) == sizeof(i::Object**)); 3823 STATIC_ASSERT(sizeof(Persistent<Value>) == sizeof(i::Object**));
3821 i::GlobalHandles::AddGroup(reinterpret_cast<i::Object***>(objects), length); 3824 i::GlobalHandles::AddGroup(reinterpret_cast<i::Object***>(objects), length);
3822 } 3825 }
3823 3826
3824 3827
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
3930 ASSERT(max_size >= kMinimumSizeForLogLinesBuffer); 3933 ASSERT(max_size >= kMinimumSizeForLogLinesBuffer);
3931 return i::Logger::GetLogLines(from_pos, dest_buf, max_size); 3934 return i::Logger::GetLogLines(from_pos, dest_buf, max_size);
3932 #endif 3935 #endif
3933 return 0; 3936 return 0;
3934 } 3937 }
3935 3938
3936 3939
3937 int V8::GetCurrentThreadId() { 3940 int V8::GetCurrentThreadId() {
3938 API_ENTRY_CHECK("V8::GetCurrentThreadId()"); 3941 API_ENTRY_CHECK("V8::GetCurrentThreadId()");
3939 EnsureInitialized("V8::GetCurrentThreadId()"); 3942 EnsureInitialized("V8::GetCurrentThreadId()");
3940 return i::Top::thread_id(); 3943 return i::Isolate::Current()->thread_id();
3941 } 3944 }
3942 3945
3943 3946
3944 void V8::TerminateExecution(int thread_id) { 3947 void V8::TerminateExecution(int thread_id) {
3945 if (!i::V8::IsRunning()) return; 3948 if (!i::V8::IsRunning()) return;
3946 API_ENTRY_CHECK("V8::GetCurrentThreadId()"); 3949 API_ENTRY_CHECK("V8::GetCurrentThreadId()");
3947 i::Isolate* isolate = i::Isolate::Current(); 3950 i::Isolate* isolate = i::Isolate::Current();
3948 // If the thread_id identifies the current thread just terminate 3951 // If the thread_id identifies the current thread just terminate
3949 // execution right away. Otherwise, ask the thread manager to 3952 // execution right away. Otherwise, ask the thread manager to
3950 // terminate the thread with the given id if any. 3953 // terminate the thread with the given id if any.
3951 if (thread_id == i::Top::thread_id()) { 3954 if (thread_id == isolate->thread_id()) {
3952 isolate->stack_guard()->TerminateExecution(); 3955 isolate->stack_guard()->TerminateExecution();
3953 } else { 3956 } else {
3954 i::ThreadManager::TerminateExecution(thread_id); 3957 i::ThreadManager::TerminateExecution(thread_id);
3955 } 3958 }
3956 } 3959 }
3957 3960
3958 3961
3959 void V8::TerminateExecution() { 3962 void V8::TerminateExecution() {
3960 if (!i::V8::IsRunning()) return; 3963 if (!i::V8::IsRunning()) return;
3961 i::Isolate::Current()->stack_guard()->TerminateExecution(); 3964 i::Isolate::Current()->stack_guard()->TerminateExecution();
3962 } 3965 }
3963 3966
3964 3967
3965 bool V8::IsExecutionTerminating() { 3968 bool V8::IsExecutionTerminating() {
3966 if (!i::V8::IsRunning()) return false; 3969 if (!i::V8::IsRunning()) return false;
3967 if (i::Top::has_scheduled_exception()) { 3970 if (i::Isolate::Current()->has_scheduled_exception()) {
3968 return i::Top::scheduled_exception() == HEAP->termination_exception(); 3971 return i::Isolate::Current()->scheduled_exception() ==
3972 HEAP->termination_exception();
3969 } 3973 }
3970 return false; 3974 return false;
3971 } 3975 }
3972 3976
3973 3977
3974 String::Utf8Value::Utf8Value(v8::Handle<v8::Value> obj) { 3978 String::Utf8Value::Utf8Value(v8::Handle<v8::Value> obj) {
3975 EnsureInitialized("v8::String::Utf8Value::Utf8Value()"); 3979 EnsureInitialized("v8::String::Utf8Value::Utf8Value()");
3976 if (obj.IsEmpty()) { 3980 if (obj.IsEmpty()) {
3977 str_ = NULL; 3981 str_ = NULL;
3978 length_ = 0; 3982 length_ = 0;
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after
4707 4711
4708 4712
4709 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { 4713 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) {
4710 HandleScopeImplementer* thread_local = 4714 HandleScopeImplementer* thread_local =
4711 reinterpret_cast<HandleScopeImplementer*>(storage); 4715 reinterpret_cast<HandleScopeImplementer*>(storage);
4712 thread_local->IterateThis(v); 4716 thread_local->IterateThis(v);
4713 return storage + ArchiveSpacePerThread(); 4717 return storage + ArchiveSpacePerThread();
4714 } 4718 }
4715 4719
4716 } } // namespace v8::internal 4720 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/accessors.cc ('k') | src/arm/codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698