Chromium Code Reviews| Index: src/natives-external.cc |
| diff --git a/src/natives-external.cc b/src/natives-external.cc |
| index fc6614949c6daf68d175504949c648b462f8953d..75f0ac806e5de95cde02f11ec0c8c0d8128f3f8f 100644 |
| --- a/src/natives-external.cc |
| +++ b/src/natives-external.cc |
| @@ -23,20 +23,26 @@ namespace internal { |
| */ |
| class NativesStore { |
| public: |
| - ~NativesStore() {} |
| + ~NativesStore() { |
| + for (int i = 0; i < native_names_.length(); i++) { |
| + native_names_[i].Dispose(); |
| + } |
| + } |
| - int GetBuiltinsCount() { return native_names_.length(); } |
| + int GetBuiltinsCount() { return native_ids_.length(); } |
| int GetDebuggerCount() { return debugger_count_; } |
| + |
| Vector<const char> GetScriptName(int index) { return native_names_[index]; } |
| + |
| Vector<const char> GetRawScriptSource(int index) { |
| return native_source_[index]; |
| } |
| - int GetIndex(const char* name) { |
| - for (int i = 0; i < native_names_.length(); ++i) { |
| - int native_name_length = native_names_[i].length(); |
| - if ((static_cast<int>(strlen(name)) == native_name_length) && |
| - (strncmp(name, native_names_[i].start(), native_name_length) == 0)) { |
| + int GetIndex(const char* id) { |
| + for (int i = 0; i < native_ids_.length(); ++i) { |
| + int native_id_length = native_ids_[i].length(); |
| + if ((static_cast<int>(strlen(id)) == native_id_length) && |
| + (strncmp(id, native_ids_[i].start(), native_id_length) == 0)) { |
| return i; |
| } |
| } |
| @@ -75,24 +81,35 @@ class NativesStore { |
| private: |
| NativesStore() : debugger_count_(0) {} |
| + Vector<const char> NameFromId(const byte* id, int id_length) { |
|
Dmitry Lomov (no reviews)
2014/12/02 12:17:48
At least bootstrapper.cc assumes GetScriptName to
vogelheim
2014/12/02 13:58:28
Done.
(That is, the return Vector still doesn't i
|
| + Vector<char> name(Vector<char>::New(id_length + 11)); |
| + SimpleStringBuilder builder(name.start(), name.length()); |
| + builder.AddString("native "); |
| + builder.AddSubstring(reinterpret_cast<const char*>(id), id_length); |
| + builder.AddString(".js"); |
| + return Vector<const char>::cast(name); |
| + } |
| + |
| bool ReadNameAndContentPair(SnapshotByteSource* bytes) { |
| - const byte* name; |
| - int name_length; |
| + const byte* id; |
| + int id_length; |
| const byte* source; |
| int source_length; |
| - bool success = bytes->GetBlob(&name, &name_length) && |
| + bool success = bytes->GetBlob(&id, &id_length) && |
| bytes->GetBlob(&source, &source_length); |
| if (success) { |
| - Vector<const char> name_vector( |
| - reinterpret_cast<const char*>(name), name_length); |
| + Vector<const char> id_vector(reinterpret_cast<const char*>(id), |
| + id_length); |
| Vector<const char> source_vector( |
| reinterpret_cast<const char*>(source), source_length); |
| - native_names_.Add(name_vector); |
| + native_ids_.Add(id_vector); |
| native_source_.Add(source_vector); |
| + native_names_.Add(NameFromId(id, id_length)); |
| } |
| return success; |
| } |
| + List<Vector<const char> > native_ids_; |
| List<Vector<const char> > native_names_; |
| List<Vector<const char> > native_source_; |
| int debugger_count_; |