| Index: src/mksnapshot.cc | 
| =================================================================== | 
| --- src/mksnapshot.cc	(revision 3302) | 
| +++ src/mksnapshot.cc	(working copy) | 
| @@ -87,28 +87,13 @@ | 
| // We statically allocate a set of local counters to be used if we | 
| // don't want to store the stats in a memory-mapped file | 
| static CounterCollection local_counters; | 
| -static CounterCollection* counters = &local_counters; | 
|  | 
|  | 
| typedef std::map<std::string, int*> CounterMap; | 
| typedef std::map<std::string, int*>::iterator CounterMapIterator; | 
| static CounterMap counter_table_; | 
|  | 
| -// Callback receiver when v8 has a counter to track. | 
| -static int* counter_callback(const char* name) { | 
| -  std::string counter = name; | 
| -  // See if this counter name is already known. | 
| -  if (counter_table_.find(counter) != counter_table_.end()) | 
| -    return counter_table_[counter]; | 
|  | 
| -  Counter* ctr = counters->GetNextCounter(); | 
| -  if (ctr == NULL) return NULL; | 
| -  int* ptr = ctr->Bind(name); | 
| -  counter_table_[counter] = ptr; | 
| -  return ptr; | 
| -} | 
| - | 
| - | 
| class CppByteSink : public i::SnapshotByteSink { | 
| public: | 
| explicit CppByteSink(const char* snapshot_file) : bytes_written_(0) { | 
| @@ -151,57 +136,6 @@ | 
| }; | 
|  | 
|  | 
| -// Write C++ code that defines Snapshot::snapshot_ to contain the snapshot | 
| -// to the file given by filename. Only the first size chars are written. | 
| -static int WriteInternalSnapshotToFile(const char* filename, | 
| -                                       const v8::internal::byte* bytes, | 
| -                                       int size) { | 
| -  FILE* f = i::OS::FOpen(filename, "wb"); | 
| -  if (f == NULL) { | 
| -    i::OS::PrintError("Cannot open file %s for writing.\n", filename); | 
| -    return 0; | 
| -  } | 
| -  fprintf(f, "// Autogenerated snapshot file. Do not edit.\n\n"); | 
| -  fprintf(f, "#include \"v8.h\"\n"); | 
| -  fprintf(f, "#include \"platform.h\"\n\n"); | 
| -  fprintf(f, "#include \"snapshot.h\"\n\n"); | 
| -  fprintf(f, "namespace v8 {\nnamespace internal {\n\n"); | 
| -  fprintf(f, "const byte Snapshot::data_[] = {"); | 
| -  int written = 0; | 
| -  written += fprintf(f, "0x%x", bytes[0]); | 
| -  for (int i = 1; i < size; ++i) { | 
| -    written += fprintf(f, ",0x%x", bytes[i]); | 
| -    // The following is needed to keep the line length low on Visual C++: | 
| -    if (i % 512 == 0) fprintf(f, "\n"); | 
| -  } | 
| -  fprintf(f, "};\n\n"); | 
| -  fprintf(f, "int Snapshot::size_ = %d;\n\n", size); | 
| -  fprintf(f, "} }  // namespace v8::internal\n"); | 
| -  fclose(f); | 
| -  return written; | 
| -} | 
| - | 
| - | 
| -int main2(int argc, char** argv) { | 
| -  i::Serializer::Enable(); | 
| -  Persistent<Context> context = v8::Context::New(); | 
| -  // Make sure all builtin scripts are cached. | 
| -  { HandleScope scope; | 
| -    for (int i = 0; i < i::Natives::GetBuiltinsCount(); i++) { | 
| -      i::Bootstrapper::NativesSourceLookup(i); | 
| -    } | 
| -  } | 
| -  context.Dispose(); | 
| -  CppByteSink sink(argv[1]); | 
| -  i::Serializer2 ser(&sink); | 
| -  // This results in a somewhat smaller snapshot, probably because it gets rid | 
| -  // of some things that are cached between garbage collections. | 
| -  i::Heap::CollectAllGarbage(true); | 
| -  ser.Serialize(); | 
| -  return 0; | 
| -} | 
| - | 
| - | 
| int main(int argc, char** argv) { | 
| #ifdef ENABLE_LOGGING_AND_PROFILING | 
| // By default, log code create information in the snapshot. | 
| @@ -215,38 +149,20 @@ | 
| i::FlagList::PrintHelp(); | 
| return !i::FLAG_help; | 
| } | 
| - | 
| -  if (i::FLAG_new_snapshot) { | 
| -    return main2(argc, argv); | 
| -  } | 
| - | 
| -  v8::V8::SetCounterFunction(counter_callback); | 
| -  v8::HandleScope scope; | 
| - | 
| -  const int kExtensionCount = 1; | 
| -  const char* extension_list[kExtensionCount] = { "v8/gc" }; | 
| -  v8::ExtensionConfiguration extensions(kExtensionCount, extension_list); | 
| - | 
| i::Serializer::Enable(); | 
| -  v8::Context::New(&extensions); | 
| - | 
| +  Persistent<Context> context = v8::Context::New(); | 
| // Make sure all builtin scripts are cached. | 
| { HandleScope scope; | 
| for (int i = 0; i < i::Natives::GetBuiltinsCount(); i++) { | 
| i::Bootstrapper::NativesSourceLookup(i); | 
| } | 
| } | 
| -  // Get rid of unreferenced scripts with a global GC. | 
| -  i::Heap::CollectAllGarbage(false); | 
| -  i::Serializer ser; | 
| +  context.Dispose(); | 
| +  CppByteSink sink(argv[1]); | 
| +  i::Serializer ser(&sink); | 
| +  // This results in a somewhat smaller snapshot, probably because it gets rid | 
| +  // of some things that are cached between garbage collections. | 
| +  i::Heap::CollectAllGarbage(true); | 
| ser.Serialize(); | 
| -  v8::internal::byte* bytes; | 
| -  int len; | 
| -  ser.Finalize(&bytes, &len); | 
| - | 
| -  WriteInternalSnapshotToFile(argv[1], bytes, len); | 
| - | 
| -  i::DeleteArray(bytes); | 
| - | 
| return 0; | 
| } | 
|  |