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

Unified Diff: src/d8.cc

Issue 12716010: Added a version of the v8::HandleScope constructor with an Isolate and use that consistently. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Feedback. Rebased Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/d8.h ('k') | src/d8-debug.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/d8.cc
diff --git a/src/d8.cc b/src/d8.cc
index 5010acb418496e2dc381777dc0416c434a83b571..eaebd900effb7d2145c958fc33fb89324b5a1c14 100644
--- a/src/d8.cc
+++ b/src/d8.cc
@@ -93,7 +93,7 @@ const char kArrayMarkerPropName[] = "d8::_is_typed_array_";
class Symbols {
public:
explicit Symbols(Isolate* isolate) : isolate_(isolate) {
- HandleScope scope;
+ HandleScope scope(isolate);
#define INIT_SYMBOL(name, value) \
name##_ = Persistent<String>::New(isolate, String::NewSymbol(value));
FOR_EACH_SYMBOL(INIT_SYMBOL)
@@ -181,7 +181,8 @@ const char* Shell::ToCString(const v8::String::Utf8Value& value) {
// Executes a string within the current v8 context.
-bool Shell::ExecuteString(Handle<String> source,
+bool Shell::ExecuteString(Isolate* isolate,
+ Handle<String> source,
Handle<Value> name,
bool print_result,
bool report_exceptions) {
@@ -190,7 +191,7 @@ bool Shell::ExecuteString(Handle<String> source,
#else
bool FLAG_debugger = false;
#endif // !V8_SHARED && ENABLE_DEBUGGER_SUPPORT
- HandleScope handle_scope;
+ HandleScope handle_scope(isolate);
TryCatch try_catch;
options.script_executed = true;
if (FLAG_debugger) {
@@ -201,7 +202,7 @@ bool Shell::ExecuteString(Handle<String> source,
if (script.IsEmpty()) {
// Print errors that happened during compilation.
if (report_exceptions && !FLAG_debugger)
- ReportException(&try_catch);
+ ReportException(isolate, &try_catch);
return false;
} else {
Handle<Value> result = script->Run();
@@ -209,7 +210,7 @@ bool Shell::ExecuteString(Handle<String> source,
ASSERT(try_catch.HasCaught());
// Print errors that happened during execution.
if (report_exceptions && !FLAG_debugger)
- ReportException(&try_catch);
+ ReportException(isolate, &try_catch);
return false;
} else {
ASSERT(!try_catch.HasCaught());
@@ -237,7 +238,7 @@ Handle<Value> Shell::Print(const Arguments& args) {
Handle<Value> Shell::Write(const Arguments& args) {
for (int i = 0; i < args.Length(); i++) {
- HandleScope handle_scope;
+ HandleScope handle_scope(args.GetIsolate());
if (i != 0) {
printf(" ");
}
@@ -315,7 +316,7 @@ Handle<String> Shell::ReadFromStdin(Isolate* isolate) {
Handle<Value> Shell::Load(const Arguments& args) {
for (int i = 0; i < args.Length(); i++) {
- HandleScope handle_scope;
+ HandleScope handle_scope(args.GetIsolate());
String::Utf8Value file(args[i]);
if (*file == NULL) {
return Throw("Error loading file");
@@ -324,7 +325,11 @@ Handle<Value> Shell::Load(const Arguments& args) {
if (source.IsEmpty()) {
return Throw("Error loading file");
}
- if (!ExecuteString(source, String::New(*file), false, true)) {
+ if (!ExecuteString(args.GetIsolate(),
+ source,
+ String::New(*file),
+ false,
+ true)) {
return Throw("Error executing file");
}
}
@@ -827,7 +832,7 @@ Handle<Value> Shell::ArraySet(const Arguments& args) {
void Shell::ExternalArrayWeakCallback(v8::Isolate* isolate,
Persistent<Value> object,
void* data) {
- HandleScope scope;
+ HandleScope scope(isolate);
int32_t length =
object->ToObject()->Get(Symbols::byteLength(isolate))->Uint32Value();
isolate->AdjustAmountOfExternalAllocatedMemory(-length);
@@ -903,8 +908,8 @@ Handle<Value> Shell::Version(const Arguments& args) {
}
-void Shell::ReportException(v8::TryCatch* try_catch) {
- HandleScope handle_scope;
+void Shell::ReportException(Isolate* isolate, v8::TryCatch* try_catch) {
+ HandleScope handle_scope(isolate);
#if !defined(V8_SHARED) && defined(ENABLE_DEBUGGER_SUPPORT)
bool enter_context = !Context::InContext();
if (enter_context) utility_context_->Enter();
@@ -950,8 +955,10 @@ void Shell::ReportException(v8::TryCatch* try_catch) {
#ifndef V8_SHARED
-Handle<Array> Shell::GetCompletions(Handle<String> text, Handle<String> full) {
- HandleScope handle_scope;
+Handle<Array> Shell::GetCompletions(Isolate* isolate,
+ Handle<String> text,
+ Handle<String> full) {
+ HandleScope handle_scope(isolate);
Context::Scope context_scope(utility_context_);
Handle<Object> global = utility_context_->Global();
Handle<Value> fun = global->Get(String::New("GetCompletions"));
@@ -1094,7 +1101,7 @@ void Shell::AddHistogramSample(void* histogram, int sample) {
void Shell::InstallUtilityScript(Isolate* isolate) {
Locker lock(isolate);
- HandleScope scope;
+ HandleScope scope(isolate);
// If we use the utility context, we have to set the security tokens so that
// utility, evaluation and debug context can all access each other.
utility_context_->SetSecurityToken(Undefined(isolate));
@@ -1272,7 +1279,7 @@ void Shell::InitializeDebugger(Isolate* isolate) {
if (options.test_shell) return;
#ifndef V8_SHARED
Locker lock(isolate);
- HandleScope scope;
+ HandleScope scope(isolate);
Handle<ObjectTemplate> global_template = CreateGlobalTemplate(isolate);
utility_context_ = Context::New(NULL, global_template);
@@ -1493,16 +1500,16 @@ Handle<String> Shell::ReadFile(Isolate* isolate, const char* name) {
void Shell::RunShell(Isolate* isolate) {
Locker locker(isolate);
Context::Scope context_scope(evaluation_context_);
- HandleScope outer_scope;
+ HandleScope outer_scope(isolate);
Handle<String> name = String::New("(d8)");
LineEditor* console = LineEditor::Get();
printf("V8 version %s [console: %s]\n", V8::GetVersion(), console->name());
console->Open(isolate);
while (true) {
- HandleScope inner_scope;
+ HandleScope inner_scope(isolate);
Handle<String> input = console->Prompt(Shell::kPrompt);
if (input.IsEmpty()) break;
- ExecuteString(input, name, true, true);
+ ExecuteString(isolate, input, name, true, true);
}
printf("\n");
}
@@ -1541,13 +1548,13 @@ void ShellThread::Run() {
// Prepare the context for this thread.
Locker locker(isolate_);
- HandleScope outer_scope;
+ HandleScope outer_scope(isolate_);
Persistent<Context> thread_context =
Shell::CreateEvaluationContext(isolate_);
Context::Scope context_scope(thread_context);
while ((ptr != NULL) && (*ptr != '\0')) {
- HandleScope inner_scope;
+ HandleScope inner_scope(isolate_);
char* filename = ptr;
ptr = ReadWord(ptr);
@@ -1562,7 +1569,7 @@ void ShellThread::Run() {
Shell::Exit(1);
}
- Shell::ExecuteString(str, String::New(filename), false, false);
+ Shell::ExecuteString(isolate_, str, String::New(filename), false, false);
}
thread_context.Dispose(thread_context->GetIsolate());
@@ -1589,10 +1596,10 @@ void SourceGroup::Execute(Isolate* isolate) {
const char* arg = argv_[i];
if (strcmp(arg, "-e") == 0 && i + 1 < end_offset_) {
// Execute argument given to -e option directly.
- HandleScope handle_scope;
+ HandleScope handle_scope(isolate);
Handle<String> file_name = String::New("unnamed");
Handle<String> source = String::New(argv_[i + 1]);
- if (!Shell::ExecuteString(source, file_name, false, true)) {
+ if (!Shell::ExecuteString(isolate, source, file_name, false, true)) {
Shell::Exit(1);
}
++i;
@@ -1600,14 +1607,14 @@ void SourceGroup::Execute(Isolate* isolate) {
// Ignore other options. They have been parsed already.
} else {
// Use all other arguments as names of files to load and run.
- HandleScope handle_scope;
+ HandleScope handle_scope(isolate);
Handle<String> file_name = String::New(arg);
Handle<String> source = ReadFile(isolate, arg);
if (source.IsEmpty()) {
printf("Error reading '%s'\n", arg);
Shell::Exit(1);
}
- if (!Shell::ExecuteString(source, file_name, false, true)) {
+ if (!Shell::ExecuteString(isolate, source, file_name, false, true)) {
Shell::Exit(1);
}
}
@@ -1642,7 +1649,7 @@ void SourceGroup::ExecuteInThread() {
{
Isolate::Scope iscope(isolate);
Locker lock(isolate);
- HandleScope scope;
+ HandleScope scope(isolate);
Symbols symbols(isolate);
Persistent<Context> context = Shell::CreateEvaluationContext(isolate);
{
@@ -1840,7 +1847,7 @@ int Shell::RunMain(Isolate* isolate, int argc, char* argv[]) {
#endif // V8_SHARED
{ // NOLINT
Locker lock(isolate);
- HandleScope scope;
+ HandleScope scope(isolate);
Persistent<Context> context = CreateEvaluationContext(isolate);
if (options.last_run) {
// Keep using the same context in the interactive shell.
@@ -1936,7 +1943,7 @@ int Shell::Main(int argc, char* argv[]) {
// Run remote debugger if requested, but never on --test
if (i::FLAG_remote_debugger && !options.test_shell) {
InstallUtilityScript(isolate);
- RunRemoteDebugger(i::FLAG_debugger_port);
+ RunRemoteDebugger(isolate, i::FLAG_debugger_port);
return 0;
}
#endif // !V8_SHARED && ENABLE_DEBUGGER_SUPPORT
« no previous file with comments | « src/d8.h ('k') | src/d8-debug.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698