| Index: src/runtime/runtime-debug.cc
|
| diff --git a/src/runtime/runtime-debug.cc b/src/runtime/runtime-debug.cc
|
| index 15551066e99bbe65df986880728f3e754df837e3..2de372f66ba8caf53816f7ee4187dabad4aff93e 100644
|
| --- a/src/runtime/runtime-debug.cc
|
| +++ b/src/runtime/runtime-debug.cc
|
| @@ -2614,48 +2614,30 @@ RUNTIME_FUNCTION(Runtime_GetHeapUsage) {
|
| // traversals might be required rendering this operation as a rather slow
|
| // operation. However for setting break points which is normally done through
|
| // some kind of user interaction the performance is not crucial.
|
| -static Handle<Object> Runtime_GetScriptFromScriptName(
|
| - Handle<String> script_name) {
|
| - // Scan the heap for Script objects to find the script with the requested
|
| - // script data.
|
| - Handle<Script> script;
|
| - Factory* factory = script_name->GetIsolate()->factory();
|
| - Heap* heap = script_name->GetHeap();
|
| - HeapIterator iterator(heap);
|
| - HeapObject* obj = NULL;
|
| - while (script.is_null() && ((obj = iterator.next()) != NULL)) {
|
| - // If a script is found check if it has the script data requested.
|
| - if (obj->IsScript()) {
|
| - if (Script::cast(obj)->name()->IsString()) {
|
| - if (String::cast(Script::cast(obj)->name())->Equals(*script_name)) {
|
| - script = Handle<Script>(Script::cast(obj));
|
| - }
|
| - }
|
| - }
|
| - }
|
| -
|
| - // If no script with the requested script data is found return undefined.
|
| - if (script.is_null()) return factory->undefined_value();
|
| -
|
| - // Return the script found.
|
| - return Script::GetWrapper(script);
|
| -}
|
| -
|
| -
|
| -// Get the script object from script data. NOTE: Regarding performance
|
| -// see the NOTE for GetScriptFromScriptData.
|
| -// args[0]: script data for the script to find the source for
|
| RUNTIME_FUNCTION(Runtime_GetScript) {
|
| HandleScope scope(isolate);
|
| -
|
| DCHECK(args.length() == 1);
|
| + CONVERT_ARG_HANDLE_CHECKED(String, script_name, 0);
|
|
|
| - CONVERT_ARG_CHECKED(String, script_name, 0);
|
| + Handle<Script> found;
|
| + Heap* heap = isolate->heap();
|
| + {
|
| + HeapIterator iterator(heap);
|
| + HeapObject* obj = NULL;
|
| + while ((obj = iterator.next()) != NULL) {
|
| + if (!obj->IsScript()) continue;
|
| + Script* script = Script::cast(obj);
|
| + if (!script->name()->IsString()) continue;
|
| + String* name = String::cast(script->name());
|
| + if (name->Equals(*script_name)) {
|
| + found = Handle<Script>(script, isolate);
|
| + break;
|
| + }
|
| + }
|
| + }
|
|
|
| - // Find the requested script.
|
| - Handle<Object> result =
|
| - Runtime_GetScriptFromScriptName(Handle<String>(script_name));
|
| - return *result;
|
| + if (found.is_null()) return heap->undefined_value();
|
| + return *Script::GetWrapper(found);
|
| }
|
|
|
|
|
|
|