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

Side by Side Diff: src/d8.cc

Issue 42559: Remove stl dependencies from d8. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/d8.h ('k') | src/date-delay.js » ('j') | src/date-delay.js » ('J')
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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 79
80 i::SmartPointer<char> DumbLineEditor::Prompt(const char* prompt) { 80 i::SmartPointer<char> DumbLineEditor::Prompt(const char* prompt) {
81 static const int kBufferSize = 256; 81 static const int kBufferSize = 256;
82 char buffer[kBufferSize]; 82 char buffer[kBufferSize];
83 printf("%s", prompt); 83 printf("%s", prompt);
84 char* str = fgets(buffer, kBufferSize, stdin); 84 char* str = fgets(buffer, kBufferSize, stdin);
85 return i::SmartPointer<char>(str ? i::StrDup(str) : str); 85 return i::SmartPointer<char>(str ? i::StrDup(str) : str);
86 } 86 }
87 87
88 88
89 Shell::CounterMap Shell::counter_map_; 89 CounterMap* Shell::counter_map_;
90 i::OS::MemoryMappedFile* Shell::counters_file_ = NULL; 90 i::OS::MemoryMappedFile* Shell::counters_file_ = NULL;
91 CounterCollection Shell::local_counters_; 91 CounterCollection Shell::local_counters_;
92 CounterCollection* Shell::counters_ = &local_counters_; 92 CounterCollection* Shell::counters_ = &local_counters_;
93 Persistent<Context> Shell::utility_context_; 93 Persistent<Context> Shell::utility_context_;
94 Persistent<Context> Shell::evaluation_context_; 94 Persistent<Context> Shell::evaluation_context_;
95 95
96 96
97 bool CounterMap::Match(void* key1, void* key2) {
98 const char* name1 = reinterpret_cast<const char*>(key1);
99 const char* name2 = reinterpret_cast<const char*>(key2);
100 return !strcmp(name1, name2);
Kevin Millikin (Chromium) 2009/03/24 13:29:30 return strcmp(name1, name2) == 0; maybe?
101 }
102
103
97 // Converts a V8 value to a C string. 104 // Converts a V8 value to a C string.
98 const char* ToCString(const v8::String::Utf8Value& value) { 105 const char* ToCString(const v8::String::Utf8Value& value) {
99 return *value ? *value : "<string conversion failed>"; 106 return *value ? *value : "<string conversion failed>";
100 } 107 }
101 108
102 109
103 // Executes a string within the current v8 context. 110 // Executes a string within the current v8 context.
104 bool Shell::ExecuteString(Handle<String> source, 111 bool Shell::ExecuteString(Handle<String> source,
105 Handle<Value> name, 112 Handle<Value> name,
106 bool print_result, 113 bool print_result,
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 NULL : counters_file_->memory(); 298 NULL : counters_file_->memory();
292 if (memory == NULL) { 299 if (memory == NULL) {
293 printf("Could not map counters file %s\n", name); 300 printf("Could not map counters file %s\n", name);
294 exit(1); 301 exit(1);
295 } 302 }
296 counters_ = static_cast<CounterCollection*>(memory); 303 counters_ = static_cast<CounterCollection*>(memory);
297 V8::SetCounterFunction(LookupCounter); 304 V8::SetCounterFunction(LookupCounter);
298 } 305 }
299 306
300 307
308 int CounterMap::Hash(const char* name) {
309 int h = 0;
310 int c;
311 while ((c = *name++) != 0) {
312 h += h << 5;
313 h += c;
314 }
315 return h;
316 }
317
318
301 int* Shell::LookupCounter(const char* name) { 319 int* Shell::LookupCounter(const char* name) {
302 CounterMap::iterator item = counter_map_.find(name); 320 Counter* counter = counter_map_->Lookup(name);
303 if (item != counter_map_.end()) { 321 if (counter != NULL) {
304 Counter* result = (*item).second; 322 return counter->ptr();
305 return result->ptr();
306 } 323 }
307 Counter* result = counters_->GetNextCounter(); 324 Counter* result = counters_->GetNextCounter();
308 if (result == NULL) return NULL; 325 if (result == NULL) return NULL;
309 counter_map_[name] = result; 326 counter_map_->Set(name, result);
310 return result->Bind(name); 327 return result->Bind(name);
311 } 328 }
312 329
313 330
314 void Shell::Initialize() { 331 void Shell::Initialize() {
332 Shell::counter_map_ = new CounterMap();
315 // Set up counters 333 // Set up counters
316 if (i::FLAG_map_counters != NULL) 334 if (i::FLAG_map_counters != NULL)
317 MapCounters(i::FLAG_map_counters); 335 MapCounters(i::FLAG_map_counters);
318 if (i::FLAG_dump_counters) 336 if (i::FLAG_dump_counters)
319 V8::SetCounterFunction(LookupCounter); 337 V8::SetCounterFunction(LookupCounter);
320 // Initialize the global objects 338 // Initialize the global objects
321 HandleScope scope; 339 HandleScope scope;
322 Handle<ObjectTemplate> global_template = ObjectTemplate::New(); 340 Handle<ObjectTemplate> global_template = ObjectTemplate::New();
323 global_template->Set(String::New("print"), FunctionTemplate::New(Print)); 341 global_template->Set(String::New("print"), FunctionTemplate::New(Print));
324 global_template->Set(String::New("load"), FunctionTemplate::New(Load)); 342 global_template->Set(String::New("load"), FunctionTemplate::New(Load));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 // Set the security token of the debug context to allow access. 393 // Set the security token of the debug context to allow access.
376 i::Debug::debug_context()->set_security_token(i::Heap::undefined_value()); 394 i::Debug::debug_context()->set_security_token(i::Heap::undefined_value());
377 } 395 }
378 396
379 397
380 void Shell::OnExit() { 398 void Shell::OnExit() {
381 if (i::FLAG_dump_counters) { 399 if (i::FLAG_dump_counters) {
382 ::printf("+----------------------------------------+-------------+\n"); 400 ::printf("+----------------------------------------+-------------+\n");
383 ::printf("| Name | Value |\n"); 401 ::printf("| Name | Value |\n");
384 ::printf("+----------------------------------------+-------------+\n"); 402 ::printf("+----------------------------------------+-------------+\n");
385 for (CounterMap::iterator i = counter_map_.begin(); 403 for (CounterMap::Iterator i(counter_map_); i.More(); i.Next()) {
386 i != counter_map_.end(); 404 Counter* counter = i.CurrentValue();
387 i++) { 405 ::printf("| %-38s | %11i |\n", i.CurrentKey(), counter->value());
388 Counter* counter = (*i).second;
389 ::printf("| %-38s | %11i |\n", (*i).first, counter->value());
390 } 406 }
391 ::printf("+----------------------------------------+-------------+\n"); 407 ::printf("+----------------------------------------+-------------+\n");
392 } 408 }
393 if (counters_file_ != NULL) 409 if (counters_file_ != NULL)
394 delete counters_file_; 410 delete counters_file_;
395 } 411 }
396 412
397 413
398 static char* ReadChars(const char *name, int* size_out) { 414 static char* ReadChars(const char *name, int* size_out) {
399 v8::Unlocker unlocker; // Release the V8 lock while reading files. 415 v8::Unlocker unlocker; // Release the V8 lock while reading files.
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 return 0; 664 return 0;
649 } 665 }
650 666
651 667
652 } // namespace v8 668 } // namespace v8
653 669
654 670
655 int main(int argc, char* argv[]) { 671 int main(int argc, char* argv[]) {
656 return v8::Shell::Main(argc, argv); 672 return v8::Shell::Main(argc, argv);
657 } 673 }
OLDNEW
« no previous file with comments | « src/d8.h ('k') | src/date-delay.js » ('j') | src/date-delay.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698