Reviewers: dcarney,
Description:
Unbreak samples and tools.
Removed a related TODO in d8.cc on the way.
BUG=v8::3318
LOG=y
[email protected]
Please review this at https://codereview.chromium.org/275463002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+28, -23 lines):
M samples/lineprocessor.cc
M samples/process.cc
M samples/shell.cc
M src/d8.cc
M tools/lexer-shell.cc
M tools/parser-shell.cc
Index: samples/lineprocessor.cc
diff --git a/samples/lineprocessor.cc b/samples/lineprocessor.cc
index
f259ea4e9436bd59c027be37de060eae547d7708..7e820b377f47cf662ef422d31fa085b7dfd27e61
100644
--- a/samples/lineprocessor.cc
+++ b/samples/lineprocessor.cc
@@ -133,7 +133,9 @@ void DispatchDebugMessages() {
int RunMain(int argc, char* argv[]) {
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
- v8::Isolate* isolate = v8::Isolate::GetCurrent();
+ v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::Scope isolate_scope(isolate);
+ v8::Locker locker(isolate);
v8::HandleScope handle_scope(isolate);
v8::Handle<v8::String> script_source;
@@ -212,8 +214,6 @@ int RunMain(int argc, char* argv[]) {
debug_message_context.Reset(isolate, context);
- v8::Locker locker(isolate);
-
if (support_callback) {
v8::Debug::SetDebugMessageDispatchHandler(DispatchDebugMessages, true);
}
Index: samples/process.cc
diff --git a/samples/process.cc b/samples/process.cc
index
37b4d3920897b1a613d8fb8a6d7e10568a11e07a..7cfbc9ee1e96c0d572d279abfd526e7f3708db28
100644
--- a/samples/process.cc
+++ b/samples/process.cc
@@ -651,7 +651,8 @@ int main(int argc, char* argv[]) {
fprintf(stderr, "No script was specified.\n");
return 1;
}
- Isolate* isolate = Isolate::GetCurrent();
+ Isolate* isolate = Isolate::New();
+ Isolate::Scope isolate_scope(isolate);
HandleScope scope(isolate);
Handle<String> source = ReadFile(isolate, file);
if (source.IsEmpty()) {
Index: samples/shell.cc
diff --git a/samples/shell.cc b/samples/shell.cc
index
f8d2c84594bde007892b8bc4b657a3b343f731b4..e9f99896e9c3ada9afdbfa263cd0c419e54ee88f
100644
--- a/samples/shell.cc
+++ b/samples/shell.cc
@@ -65,23 +65,35 @@ void ReportException(v8::Isolate* isolate,
v8::TryCatch* handler);
static bool run_shell;
+class ShellArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
+ public:
+ virtual void* Allocate(size_t length) {
+ return memset(AllocateUninitialized(length), 0, length);
+ }
+ virtual void* AllocateUninitialized(size_t length) { return
malloc(length); }
+ virtual void Free(void* data, size_t) { free(data); }
+};
+
+
int main(int argc, char* argv[]) {
v8::V8::InitializeICU();
v8::V8::SetFlagsFromCommandLine(&argc, argv, true);
- v8::Isolate* isolate = v8::Isolate::GetCurrent();
+ ShellArrayBufferAllocator array_buffer_allocator;
+ v8::V8::SetArrayBufferAllocator(&array_buffer_allocator);
+ v8::Isolate* isolate = v8::Isolate::New();
run_shell = (argc == 1);
int result;
{
+ v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Handle<v8::Context> context = CreateShellContext(isolate);
if (context.IsEmpty()) {
fprintf(stderr, "Error creating context\n");
return 1;
}
- context->Enter();
+ v8::Context::Scope context_scope(context);
result = RunMain(isolate, argc, argv);
if (run_shell) RunShell(context);
- context->Exit();
}
v8::V8::Dispose();
return result;
Index: src/d8.cc
diff --git a/src/d8.cc b/src/d8.cc
index
396d68b7fa98ecb4db7c6d09bfc80494cf00d975..b8e4492908a4db9bdd60809eb8124d11a3051cd6
100644
--- a/src/d8.cc
+++ b/src/d8.cc
@@ -1612,20 +1612,10 @@ static void DumpHeapConstants(i::Isolate* isolate) {
class ShellArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
public:
virtual void* Allocate(size_t length) {
- void* result = malloc(length);
- memset(result, 0, length);
- return result;
- }
- virtual void* AllocateUninitialized(size_t length) {
- return malloc(length);
+ return memset(AllocateUninitialized(length), 0, length);
}
+ virtual void* AllocateUninitialized(size_t length) { return
malloc(length); }
virtual void Free(void* data, size_t) { free(data); }
- // TODO(dslomov): Remove when v8:2823 is fixed.
- virtual void Free(void* data) {
-#ifndef V8_SHARED
- UNREACHABLE();
-#endif
- }
};
Index: tools/lexer-shell.cc
diff --git a/tools/lexer-shell.cc b/tools/lexer-shell.cc
index
273cdd9f4d7a49d6cffa9b5b7788ddad4f4ccd77..a85dc7dbee7f37b6c8a424b7f0af55bc4df64ecc
100644
--- a/tools/lexer-shell.cc
+++ b/tools/lexer-shell.cc
@@ -206,19 +206,20 @@ int main(int argc, char* argv[]) {
fnames.push_back(std::string(argv[i]));
}
}
- v8::Isolate* isolate = v8::Isolate::GetCurrent();
+ v8::Isolate* isolate = v8::Isolate::New();
{
+ v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Handle<v8::ObjectTemplate> global =
v8::ObjectTemplate::New(isolate);
v8::Local<v8::Context> context = v8::Context::New(isolate, NULL,
global);
ASSERT(!context.IsEmpty());
{
v8::Context::Scope scope(context);
- Isolate* isolate = Isolate::Current();
double baseline_total = 0;
for (size_t i = 0; i < fnames.size(); i++) {
TimeDelta time;
- time = ProcessFile(fnames[i].c_str(), encoding, isolate,
print_tokens,
+ time = ProcessFile(fnames[i].c_str(), encoding,
+ reinterpret_cast<Isolate*>(isolate),
print_tokens,
repeat);
baseline_total += time.InMillisecondsF();
}
Index: tools/parser-shell.cc
diff --git a/tools/parser-shell.cc b/tools/parser-shell.cc
index
2d95918a33d4b8aca1210c8d11960e20283ee00c..4acdf7c034c778b72909e913878410afa09dbf2e
100644
--- a/tools/parser-shell.cc
+++ b/tools/parser-shell.cc
@@ -128,8 +128,9 @@ int main(int argc, char* argv[]) {
fnames.push_back(std::string(argv[i]));
}
}
- v8::Isolate* isolate = v8::Isolate::GetCurrent();
+ v8::Isolate* isolate = v8::Isolate::New();
{
+ v8::Isolate::Scope isolate_scope(isolate);
v8::HandleScope handle_scope(isolate);
v8::Handle<v8::ObjectTemplate> global =
v8::ObjectTemplate::New(isolate);
v8::Local<v8::Context> context = v8::Context::New(isolate, NULL,
global);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.