| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 13425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13436 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditGatherCompileInfo) { | 13436 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditGatherCompileInfo) { |
| 13437 HandleScope scope(isolate); | 13437 HandleScope scope(isolate); |
| 13438 CHECK(isolate->debugger()->live_edit_enabled()); | 13438 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13439 ASSERT(args.length() == 2); | 13439 ASSERT(args.length() == 2); |
| 13440 CONVERT_ARG_CHECKED(JSValue, script, 0); | 13440 CONVERT_ARG_CHECKED(JSValue, script, 0); |
| 13441 CONVERT_ARG_HANDLE_CHECKED(String, source, 1); | 13441 CONVERT_ARG_HANDLE_CHECKED(String, source, 1); |
| 13442 | 13442 |
| 13443 RUNTIME_ASSERT(script->value()->IsScript()); | 13443 RUNTIME_ASSERT(script->value()->IsScript()); |
| 13444 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 13444 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
| 13445 | 13445 |
| 13446 JSArray* result = LiveEdit::GatherCompileInfo(script_handle, source); | 13446 Handle<JSArray> result; |
| 13447 | 13447 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 13448 if (isolate->has_pending_exception()) { | 13448 isolate, result, LiveEdit::GatherCompileInfo(script_handle, source)); |
| 13449 return Failure::Exception(); | 13449 return *result; |
| 13450 } | |
| 13451 | |
| 13452 return result; | |
| 13453 } | 13450 } |
| 13454 | 13451 |
| 13455 | 13452 |
| 13456 // Changes the source of the script to a new_source. | 13453 // Changes the source of the script to a new_source. |
| 13457 // If old_script_name is provided (i.e. is a String), also creates a copy of | 13454 // If old_script_name is provided (i.e. is a String), also creates a copy of |
| 13458 // the script with its original source and sends notification to debugger. | 13455 // the script with its original source and sends notification to debugger. |
| 13459 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceScript) { | 13456 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceScript) { |
| 13460 HandleScope scope(isolate); | 13457 HandleScope scope(isolate); |
| 13461 CHECK(isolate->debugger()->live_edit_enabled()); | 13458 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13462 ASSERT(args.length() == 3); | 13459 ASSERT(args.length() == 3); |
| 13463 CONVERT_ARG_CHECKED(JSValue, original_script_value, 0); | 13460 CONVERT_ARG_CHECKED(JSValue, original_script_value, 0); |
| 13464 CONVERT_ARG_HANDLE_CHECKED(String, new_source, 1); | 13461 CONVERT_ARG_HANDLE_CHECKED(String, new_source, 1); |
| 13465 Handle<Object> old_script_name(args[2], isolate); | 13462 Handle<Object> old_script_name(args[2], isolate); |
| 13466 | 13463 |
| 13467 RUNTIME_ASSERT(original_script_value->value()->IsScript()); | 13464 RUNTIME_ASSERT(original_script_value->value()->IsScript()); |
| 13468 Handle<Script> original_script(Script::cast(original_script_value->value())); | 13465 Handle<Script> original_script(Script::cast(original_script_value->value())); |
| 13469 | 13466 |
| 13470 Object* old_script = LiveEdit::ChangeScriptSource(original_script, | 13467 Handle<Object> old_script = LiveEdit::ChangeScriptSource( |
| 13471 new_source, | 13468 original_script, new_source, old_script_name); |
| 13472 old_script_name); | |
| 13473 | 13469 |
| 13474 if (old_script->IsScript()) { | 13470 if (old_script->IsScript()) { |
| 13475 Handle<Script> script_handle(Script::cast(old_script)); | 13471 Handle<Script> script_handle = Handle<Script>::cast(old_script); |
| 13476 return *(GetScriptWrapper(script_handle)); | 13472 return *(GetScriptWrapper(script_handle)); |
| 13477 } else { | 13473 } else { |
| 13478 return isolate->heap()->null_value(); | 13474 return isolate->heap()->null_value(); |
| 13479 } | 13475 } |
| 13480 } | 13476 } |
| 13481 | 13477 |
| 13482 | 13478 |
| 13483 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditFunctionSourceUpdated) { | 13479 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditFunctionSourceUpdated) { |
| 13484 HandleScope scope(isolate); | 13480 HandleScope scope(isolate); |
| 13485 CHECK(isolate->debugger()->live_edit_enabled()); | 13481 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13486 ASSERT(args.length() == 1); | 13482 ASSERT(args.length() == 1); |
| 13487 CONVERT_ARG_HANDLE_CHECKED(JSArray, shared_info, 0); | 13483 CONVERT_ARG_HANDLE_CHECKED(JSArray, shared_info, 0); |
| 13488 return LiveEdit::FunctionSourceUpdated(shared_info); | 13484 RUNTIME_ASSERT(SharedInfoWrapper::IsInstance(shared_info)); |
| 13485 |
| 13486 LiveEdit::FunctionSourceUpdated(shared_info); |
| 13487 return isolate->heap()->undefined_value(); |
| 13489 } | 13488 } |
| 13490 | 13489 |
| 13491 | 13490 |
| 13492 // Replaces code of SharedFunctionInfo with a new one. | 13491 // Replaces code of SharedFunctionInfo with a new one. |
| 13493 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceFunctionCode) { | 13492 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceFunctionCode) { |
| 13494 HandleScope scope(isolate); | 13493 HandleScope scope(isolate); |
| 13495 CHECK(isolate->debugger()->live_edit_enabled()); | 13494 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13496 ASSERT(args.length() == 2); | 13495 ASSERT(args.length() == 2); |
| 13497 CONVERT_ARG_HANDLE_CHECKED(JSArray, new_compile_info, 0); | 13496 CONVERT_ARG_HANDLE_CHECKED(JSArray, new_compile_info, 0); |
| 13498 CONVERT_ARG_HANDLE_CHECKED(JSArray, shared_info, 1); | 13497 CONVERT_ARG_HANDLE_CHECKED(JSArray, shared_info, 1); |
| 13498 RUNTIME_ASSERT(SharedInfoWrapper::IsInstance(shared_info)); |
| 13499 | 13499 |
| 13500 return LiveEdit::ReplaceFunctionCode(new_compile_info, shared_info); | 13500 LiveEdit::ReplaceFunctionCode(new_compile_info, shared_info); |
| 13501 return isolate->heap()->undefined_value(); |
| 13501 } | 13502 } |
| 13502 | 13503 |
| 13503 | 13504 |
| 13504 // Connects SharedFunctionInfo to another script. | 13505 // Connects SharedFunctionInfo to another script. |
| 13505 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditFunctionSetScript) { | 13506 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditFunctionSetScript) { |
| 13506 HandleScope scope(isolate); | 13507 HandleScope scope(isolate); |
| 13507 CHECK(isolate->debugger()->live_edit_enabled()); | 13508 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13508 ASSERT(args.length() == 2); | 13509 ASSERT(args.length() == 2); |
| 13509 Handle<Object> function_object(args[0], isolate); | 13510 Handle<Object> function_object(args[0], isolate); |
| 13510 Handle<Object> script_object(args[1], isolate); | 13511 Handle<Object> script_object(args[1], isolate); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 13531 // with a substitution one. | 13532 // with a substitution one. |
| 13532 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceRefToNestedFunction) { | 13533 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceRefToNestedFunction) { |
| 13533 HandleScope scope(isolate); | 13534 HandleScope scope(isolate); |
| 13534 CHECK(isolate->debugger()->live_edit_enabled()); | 13535 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13535 ASSERT(args.length() == 3); | 13536 ASSERT(args.length() == 3); |
| 13536 | 13537 |
| 13537 CONVERT_ARG_HANDLE_CHECKED(JSValue, parent_wrapper, 0); | 13538 CONVERT_ARG_HANDLE_CHECKED(JSValue, parent_wrapper, 0); |
| 13538 CONVERT_ARG_HANDLE_CHECKED(JSValue, orig_wrapper, 1); | 13539 CONVERT_ARG_HANDLE_CHECKED(JSValue, orig_wrapper, 1); |
| 13539 CONVERT_ARG_HANDLE_CHECKED(JSValue, subst_wrapper, 2); | 13540 CONVERT_ARG_HANDLE_CHECKED(JSValue, subst_wrapper, 2); |
| 13540 | 13541 |
| 13541 LiveEdit::ReplaceRefToNestedFunction(parent_wrapper, orig_wrapper, | 13542 LiveEdit::ReplaceRefToNestedFunction( |
| 13542 subst_wrapper); | 13543 parent_wrapper, orig_wrapper, subst_wrapper); |
| 13543 | |
| 13544 return isolate->heap()->undefined_value(); | 13544 return isolate->heap()->undefined_value(); |
| 13545 } | 13545 } |
| 13546 | 13546 |
| 13547 | 13547 |
| 13548 // Updates positions of a shared function info (first parameter) according | 13548 // Updates positions of a shared function info (first parameter) according |
| 13549 // to script source change. Text change is described in second parameter as | 13549 // to script source change. Text change is described in second parameter as |
| 13550 // array of groups of 3 numbers: | 13550 // array of groups of 3 numbers: |
| 13551 // (change_begin, change_end, change_end_new_position). | 13551 // (change_begin, change_end, change_end_new_position). |
| 13552 // Each group describes a change in text; groups are sorted by change_begin. | 13552 // Each group describes a change in text; groups are sorted by change_begin. |
| 13553 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditPatchFunctionPositions) { | 13553 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditPatchFunctionPositions) { |
| 13554 HandleScope scope(isolate); | 13554 HandleScope scope(isolate); |
| 13555 CHECK(isolate->debugger()->live_edit_enabled()); | 13555 CHECK(isolate->debugger()->live_edit_enabled()); |
| 13556 ASSERT(args.length() == 2); | 13556 ASSERT(args.length() == 2); |
| 13557 CONVERT_ARG_HANDLE_CHECKED(JSArray, shared_array, 0); | 13557 CONVERT_ARG_HANDLE_CHECKED(JSArray, shared_array, 0); |
| 13558 CONVERT_ARG_HANDLE_CHECKED(JSArray, position_change_array, 1); | 13558 CONVERT_ARG_HANDLE_CHECKED(JSArray, position_change_array, 1); |
| 13559 | 13559 |
| 13560 return LiveEdit::PatchFunctionPositions(shared_array, position_change_array); | 13560 LiveEdit::PatchFunctionPositions(shared_array, position_change_array); |
| 13561 return isolate->heap()->undefined_value(); |
| 13561 } | 13562 } |
| 13562 | 13563 |
| 13563 | 13564 |
| 13564 // For array of SharedFunctionInfo's (each wrapped in JSValue) | 13565 // For array of SharedFunctionInfo's (each wrapped in JSValue) |
| 13565 // checks that none of them have activations on stacks (of any thread). | 13566 // checks that none of them have activations on stacks (of any thread). |
| 13566 // Returns array of the same length with corresponding results of | 13567 // Returns array of the same length with corresponding results of |
| 13567 // LiveEdit::FunctionPatchabilityStatus type. | 13568 // LiveEdit::FunctionPatchabilityStatus type. |
| 13568 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditCheckAndDropActivations) { | 13569 RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditCheckAndDropActivations) { |
| 13569 HandleScope scope(isolate); | 13570 HandleScope scope(isolate); |
| 13570 CHECK(isolate->debugger()->live_edit_enabled()); | 13571 CHECK(isolate->debugger()->live_edit_enabled()); |
| (...skipping 1688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15259 } | 15260 } |
| 15260 } | 15261 } |
| 15261 | 15262 |
| 15262 | 15263 |
| 15263 void Runtime::OutOfMemory() { | 15264 void Runtime::OutOfMemory() { |
| 15264 Heap::FatalProcessOutOfMemory("CALL_AND_RETRY_LAST", true); | 15265 Heap::FatalProcessOutOfMemory("CALL_AND_RETRY_LAST", true); |
| 15265 UNREACHABLE(); | 15266 UNREACHABLE(); |
| 15266 } | 15267 } |
| 15267 | 15268 |
| 15268 } } // namespace v8::internal | 15269 } } // namespace v8::internal |
| OLD | NEW |