Index: src/bootstrapper.cc |
=================================================================== |
--- src/bootstrapper.cc (revision 3239) |
+++ src/bootstrapper.cc (working copy) |
@@ -97,21 +97,26 @@ |
static List<char*>* delete_these_non_arrays_on_tear_down = NULL; |
+NativesExternalStringResource::NativesExternalStringResource(const char* source) |
+ : data_(source), length_(strlen(source)) { |
+ if (delete_these_non_arrays_on_tear_down == NULL) { |
+ delete_these_non_arrays_on_tear_down = new List<char*>(2); |
+ } |
+ // The resources are small objects and we only make a fixed number of |
+ // them, but let's clean them up on exit for neatness. |
+ delete_these_non_arrays_on_tear_down-> |
+ Add(reinterpret_cast<char*>(this)); |
+} |
+ |
+ |
Handle<String> Bootstrapper::NativesSourceLookup(int index) { |
ASSERT(0 <= index && index < Natives::GetBuiltinsCount()); |
if (Heap::natives_source_cache()->get(index)->IsUndefined()) { |
if (!Snapshot::IsEnabled() || FLAG_new_snapshot) { |
- if (delete_these_non_arrays_on_tear_down == NULL) { |
- delete_these_non_arrays_on_tear_down = new List<char*>(2); |
- } |
// We can use external strings for the natives. |
NativesExternalStringResource* resource = |
new NativesExternalStringResource( |
Natives::GetScriptSource(index).start()); |
- // The resources are small objects and we only make a fixed number of |
- // them, but lets clean them up on exit for neatness. |
- delete_these_non_arrays_on_tear_down-> |
- Add(reinterpret_cast<char*>(resource)); |
Handle<String> source_code = |
Factory::NewExternalStringFromAscii(resource); |
Heap::natives_source_cache()->set(index, *source_code); |