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

Side by Side Diff: src/d8.cc

Issue 12431: Update d8 so that it can be used to run the mjsunit tests.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 years 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 | « no previous file | test/mjsunit/debug-script.js » ('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 2008 the V8 project authors. All rights reserved. 1 // Copyright 2008 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 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 i::Factory::NewStringFromUtf8(i::CStrVector(js_args[j])); 245 i::Factory::NewStringFromUtf8(i::CStrVector(js_args[j]));
246 arguments_array->set(j, *arg); 246 arguments_array->set(j, *arg);
247 } 247 }
248 i::Handle<i::JSArray> arguments_jsarray = 248 i::Handle<i::JSArray> arguments_jsarray =
249 i::Factory::NewJSArrayWithElements(arguments_array); 249 i::Factory::NewJSArrayWithElements(arguments_array);
250 global_template->Set(String::New("arguments"), 250 global_template->Set(String::New("arguments"),
251 Utils::ToLocal(arguments_jsarray)); 251 Utils::ToLocal(arguments_jsarray));
252 252
253 // Install the debugger object in the utility scope 253 // Install the debugger object in the utility scope
254 i::Debug::Load(); 254 i::Debug::Load();
255 i::Debug::debug_context()->set_security_token(i::Heap::undefined_value());
256 i::JSObject* debug = i::Debug::debug_context()->global(); 255 i::JSObject* debug = i::Debug::debug_context()->global();
257 utility_context_->Global()->Set(String::New("$debug"), 256 utility_context_->Global()->Set(String::New("$debug"),
258 Utils::ToLocal(&debug)); 257 Utils::ToLocal(&debug));
259 258
260 // Run the d8 shell utility script in the utility context 259 // Run the d8 shell utility script in the utility context
261 int source_index = i::NativesCollection<i::D8>::GetIndex("d8"); 260 int source_index = i::NativesCollection<i::D8>::GetIndex("d8");
262 i::Vector<const char> shell_source 261 i::Vector<const char> shell_source
263 = i::NativesCollection<i::D8>::GetScriptSource(source_index); 262 = i::NativesCollection<i::D8>::GetScriptSource(source_index);
264 i::Vector<const char> shell_source_name 263 i::Vector<const char> shell_source_name
265 = i::NativesCollection<i::D8>::GetScriptName(source_index); 264 = i::NativesCollection<i::D8>::GetScriptName(source_index);
266 Handle<String> source = String::New(shell_source.start(), 265 Handle<String> source = String::New(shell_source.start(),
267 shell_source.length()); 266 shell_source.length());
268 Handle<String> name = String::New(shell_source_name.start(), 267 Handle<String> name = String::New(shell_source_name.start(),
269 shell_source_name.length()); 268 shell_source_name.length());
270 Script::Compile(source, name)->Run(); 269 Script::Compile(source, name)->Run();
271 270
272 // Create the evaluation context 271 // Create the evaluation context
273 evaluation_context_ = Context::New(NULL, global_template); 272 evaluation_context_ = Context::New(NULL, global_template);
274 evaluation_context_->SetSecurityToken(Undefined()); 273 evaluation_context_->SetSecurityToken(Undefined());
274
275 // Set the security context of the debug context to allow access.
276 i::Debug::debug_context()->set_security_token(i::Heap::undefined_value());
275 } 277 }
276 278
277 279
278 void Shell::OnExit() { 280 void Shell::OnExit() {
279 if (i::FLAG_dump_counters) { 281 if (i::FLAG_dump_counters) {
280 ::printf("+----------------------------------------+----------+\n"); 282 ::printf("+----------------------------------------+----------+\n");
281 ::printf("| Name | Value |\n"); 283 ::printf("| Name | Value |\n");
282 ::printf("+----------------------------------------+----------+\n"); 284 ::printf("+----------------------------------------+----------+\n");
283 for (CounterMap::iterator i = counter_map_.begin(); 285 for (CounterMap::iterator i = counter_map_.begin();
284 i != counter_map_.end(); 286 i != counter_map_.end();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 int Shell::Main(int argc, char* argv[]) { 336 int Shell::Main(int argc, char* argv[]) {
335 i::FlagList::SetFlagsFromCommandLine(&argc, argv, true); 337 i::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
336 if (i::FLAG_help) { 338 if (i::FLAG_help) {
337 return 1; 339 return 1;
338 } 340 }
339 Initialize(); 341 Initialize();
340 bool run_shell = (argc == 1); 342 bool run_shell = (argc == 1);
341 Context::Scope context_scope(evaluation_context_); 343 Context::Scope context_scope(evaluation_context_);
342 for (int i = 1; i < argc; i++) { 344 for (int i = 1; i < argc; i++) {
343 char* str = argv[i]; 345 char* str = argv[i];
344 HandleScope handle_scope; 346 if (strcmp(str, "-f") == 0) {
345 Handle<String> file_name = v8::String::New(str); 347 // Ignore any -f flags for compatibility with other stand-alone
346 Handle<String> source = ReadFile(str); 348 // JavaScript engines.
347 if (source.IsEmpty()) { 349 continue;
348 printf("Error reading '%s'\n", str); 350 } else if (strncmp(str, "--", 2) == 0) {
349 return 1; 351 printf("Warning: unknown flag %s.\nTry --help for options\n", str);
352 } else if (strcmp(str, "-e") == 0 && i + 1 < argc) {
353 // Execute argument given to -e option directly.
354 v8::HandleScope handle_scope;
355 v8::Handle<v8::String> file_name = v8::String::New("unnamed");
356 v8::Handle<v8::String> source = v8::String::New(argv[i + 1]);
357 if (!ExecuteString(source, file_name, false, true))
358 return 1;
359 i++;
360 } else {
361 // Use all other arguments as names of files to load and run.
362 HandleScope handle_scope;
363 Handle<String> file_name = v8::String::New(str);
364 Handle<String> source = ReadFile(str);
365 if (source.IsEmpty()) {
366 printf("Error reading '%s'\n", str);
367 return 1;
368 }
369 if (!ExecuteString(source, file_name, false, true))
370 return 1;
350 } 371 }
351 if (!ExecuteString(source, file_name, false, true))
352 return 1;
353 } 372 }
354 if (run_shell) 373 if (run_shell)
355 RunShell(); 374 RunShell();
356 OnExit(); 375 OnExit();
357 return 0; 376 return 0;
358 } 377 }
359 378
360 379
361 } // namespace v8 380 } // namespace v8
362 381
363 382
364 int main(int argc, char* argv[]) { 383 int main(int argc, char* argv[]) {
365 return v8::Shell::Main(argc, argv); 384 return v8::Shell::Main(argc, argv);
366 } 385 }
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/debug-script.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698