| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 // Defined when linking against shared lib on Windows. | 6 // Defined when linking against shared lib on Windows. |
| 7 #if defined(USING_V8_SHARED) && !defined(V8_SHARED) | 7 #if defined(USING_V8_SHARED) && !defined(V8_SHARED) |
| 8 #define V8_SHARED | 8 #define V8_SHARED |
| 9 #endif | 9 #endif |
| 10 | 10 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 | 179 |
| 180 ScriptCompiler::CachedData* CompileForCachedData( | 180 ScriptCompiler::CachedData* CompileForCachedData( |
| 181 Local<String> source, Local<Value> name, | 181 Local<String> source, Local<Value> name, |
| 182 ScriptCompiler::CompileOptions compile_options) { | 182 ScriptCompiler::CompileOptions compile_options) { |
| 183 int source_length = source->Length(); | 183 int source_length = source->Length(); |
| 184 uint16_t* source_buffer = new uint16_t[source_length]; | 184 uint16_t* source_buffer = new uint16_t[source_length]; |
| 185 source->Write(source_buffer, 0, source_length); | 185 source->Write(source_buffer, 0, source_length); |
| 186 int name_length = 0; | 186 int name_length = 0; |
| 187 uint16_t* name_buffer = NULL; | 187 uint16_t* name_buffer = NULL; |
| 188 if (name->IsString()) { | 188 if (name->IsString()) { |
| 189 Local<String> name_string = name->ToString(); | 189 Local<String> name_string = Local<String>::Cast(name); |
| 190 name_length = name_string->Length(); | 190 name_length = name_string->Length(); |
| 191 name_buffer = new uint16_t[name_length]; | 191 name_buffer = new uint16_t[name_length]; |
| 192 name_string->Write(name_buffer, 0, name_length); | 192 name_string->Write(name_buffer, 0, name_length); |
| 193 } | 193 } |
| 194 Isolate* temp_isolate = Isolate::New(); | 194 Isolate* temp_isolate = Isolate::New(); |
| 195 ScriptCompiler::CachedData* result = NULL; | 195 ScriptCompiler::CachedData* result = NULL; |
| 196 { | 196 { |
| 197 Isolate::Scope isolate_scope(temp_isolate); | 197 Isolate::Scope isolate_scope(temp_isolate); |
| 198 HandleScope handle_scope(temp_isolate); | 198 HandleScope handle_scope(temp_isolate); |
| 199 Context::Scope context_scope(Context::New(temp_isolate)); | 199 Context::Scope context_scope(Context::New(temp_isolate)); |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 | 403 |
| 404 | 404 |
| 405 // Realm.owner(o) returns the index of the realm that created o. | 405 // Realm.owner(o) returns the index of the realm that created o. |
| 406 void Shell::RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args) { | 406 void Shell::RealmOwner(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 407 Isolate* isolate = args.GetIsolate(); | 407 Isolate* isolate = args.GetIsolate(); |
| 408 PerIsolateData* data = PerIsolateData::Get(isolate); | 408 PerIsolateData* data = PerIsolateData::Get(isolate); |
| 409 if (args.Length() < 1 || !args[0]->IsObject()) { | 409 if (args.Length() < 1 || !args[0]->IsObject()) { |
| 410 Throw(args.GetIsolate(), "Invalid argument"); | 410 Throw(args.GetIsolate(), "Invalid argument"); |
| 411 return; | 411 return; |
| 412 } | 412 } |
| 413 int index = data->RealmFind(args[0]->ToObject()->CreationContext()); | 413 int index = data->RealmFind(args[0]->ToObject(isolate)->CreationContext()); |
| 414 if (index == -1) return; | 414 if (index == -1) return; |
| 415 args.GetReturnValue().Set(index); | 415 args.GetReturnValue().Set(index); |
| 416 } | 416 } |
| 417 | 417 |
| 418 | 418 |
| 419 // Realm.global(i) returns the global object of realm i. | 419 // Realm.global(i) returns the global object of realm i. |
| 420 // (Note that properties of global objects cannot be read/written cross-realm.) | 420 // (Note that properties of global objects cannot be read/written cross-realm.) |
| 421 void Shell::RealmGlobal(const v8::FunctionCallbackInfo<v8::Value>& args) { | 421 void Shell::RealmGlobal(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 422 PerIsolateData* data = PerIsolateData::Get(args.GetIsolate()); | 422 PerIsolateData* data = PerIsolateData::Get(args.GetIsolate()); |
| 423 int index = data->RealmIndexOrThrow(args, 0); | 423 int index = data->RealmIndexOrThrow(args, 0); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 // Realm.eval(i, s) evaluates s in realm i and returns the result. | 473 // Realm.eval(i, s) evaluates s in realm i and returns the result. |
| 474 void Shell::RealmEval(const v8::FunctionCallbackInfo<v8::Value>& args) { | 474 void Shell::RealmEval(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 475 Isolate* isolate = args.GetIsolate(); | 475 Isolate* isolate = args.GetIsolate(); |
| 476 PerIsolateData* data = PerIsolateData::Get(isolate); | 476 PerIsolateData* data = PerIsolateData::Get(isolate); |
| 477 int index = data->RealmIndexOrThrow(args, 0); | 477 int index = data->RealmIndexOrThrow(args, 0); |
| 478 if (index == -1) return; | 478 if (index == -1) return; |
| 479 if (args.Length() < 2 || !args[1]->IsString()) { | 479 if (args.Length() < 2 || !args[1]->IsString()) { |
| 480 Throw(args.GetIsolate(), "Invalid argument"); | 480 Throw(args.GetIsolate(), "Invalid argument"); |
| 481 return; | 481 return; |
| 482 } | 482 } |
| 483 ScriptCompiler::Source script_source(args[1]->ToString()); | 483 ScriptCompiler::Source script_source(args[1]->ToString(isolate)); |
| 484 Handle<UnboundScript> script = ScriptCompiler::CompileUnbound( | 484 Handle<UnboundScript> script = ScriptCompiler::CompileUnbound( |
| 485 isolate, &script_source); | 485 isolate, &script_source); |
| 486 if (script.IsEmpty()) return; | 486 if (script.IsEmpty()) return; |
| 487 Local<Context> realm = Local<Context>::New(isolate, data->realms_[index]); | 487 Local<Context> realm = Local<Context>::New(isolate, data->realms_[index]); |
| 488 realm->Enter(); | 488 realm->Enter(); |
| 489 Handle<Value> result = script->BindToCurrentContext()->Run(); | 489 Handle<Value> result = script->BindToCurrentContext()->Run(); |
| 490 realm->Exit(); | 490 realm->Exit(); |
| 491 args.GetReturnValue().Set(result); | 491 args.GetReturnValue().Set(result); |
| 492 } | 492 } |
| 493 | 493 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 519 | 519 |
| 520 void Shell::Write(const v8::FunctionCallbackInfo<v8::Value>& args) { | 520 void Shell::Write(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 521 for (int i = 0; i < args.Length(); i++) { | 521 for (int i = 0; i < args.Length(); i++) { |
| 522 HandleScope handle_scope(args.GetIsolate()); | 522 HandleScope handle_scope(args.GetIsolate()); |
| 523 if (i != 0) { | 523 if (i != 0) { |
| 524 printf(" "); | 524 printf(" "); |
| 525 } | 525 } |
| 526 | 526 |
| 527 // Explicitly catch potential exceptions in toString(). | 527 // Explicitly catch potential exceptions in toString(). |
| 528 v8::TryCatch try_catch; | 528 v8::TryCatch try_catch; |
| 529 Handle<String> str_obj = args[i]->ToString(); | 529 Handle<String> str_obj = args[i]->ToString(args.GetIsolate()); |
| 530 if (try_catch.HasCaught()) { | 530 if (try_catch.HasCaught()) { |
| 531 try_catch.ReThrow(); | 531 try_catch.ReThrow(); |
| 532 return; | 532 return; |
| 533 } | 533 } |
| 534 | 534 |
| 535 v8::String::Utf8Value str(str_obj); | 535 v8::String::Utf8Value str(str_obj); |
| 536 int n = static_cast<int>(fwrite(*str, sizeof(**str), str.length(), stdout)); | 536 int n = static_cast<int>(fwrite(*str, sizeof(**str), str.length(), stdout)); |
| 537 if (n != str.length()) { | 537 if (n != str.length()) { |
| 538 printf("Error in fwrite\n"); | 538 printf("Error in fwrite\n"); |
| 539 Exit(1); | 539 Exit(1); |
| (...skipping 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1765 } | 1765 } |
| 1766 | 1766 |
| 1767 } // namespace v8 | 1767 } // namespace v8 |
| 1768 | 1768 |
| 1769 | 1769 |
| 1770 #ifndef GOOGLE3 | 1770 #ifndef GOOGLE3 |
| 1771 int main(int argc, char* argv[]) { | 1771 int main(int argc, char* argv[]) { |
| 1772 return v8::Shell::Main(argc, argv); | 1772 return v8::Shell::Main(argc, argv); |
| 1773 } | 1773 } |
| 1774 #endif | 1774 #endif |
| OLD | NEW |