| Index: src/debug/liveedit.js
|
| diff --git a/src/debug/liveedit.js b/src/debug/liveedit.js
|
| index 26663bff8956782ed867459a12efe45ded26cc6a..27425c154d03a1bf34e56cf688db6a4c7312b7c4 100644
|
| --- a/src/debug/liveedit.js
|
| +++ b/src/debug/liveedit.js
|
| @@ -20,9 +20,23 @@
|
| //
|
| // LiveEdit namespace is declared inside a single function constructor.
|
|
|
| -"use strict";
|
| +(function(global, utils) {
|
| + "use strict";
|
|
|
| -Debug.LiveEdit = new function() {
|
| + // -------------------------------------------------------------------
|
| + // Imports
|
| +
|
| + var FindScriptSourcePosition = global.Debug.findScriptSourcePosition;
|
| + var GetScriptBreakPoints;
|
| + var GlobalArray = global.Array;
|
| + var MathFloor = global.Math.floor;
|
| + var SyntaxError = global.SyntaxError;
|
| +
|
| + utils.Import(function(from) {
|
| + GetScriptBreakPoints = from.GetScriptBreakPoints;
|
| + });
|
| +
|
| + // -------------------------------------------------------------------
|
|
|
| // Forward declaration for minifier.
|
| var FunctionStatus;
|
| @@ -72,10 +86,10 @@ Debug.LiveEdit = new function() {
|
| FindCorrespondingFunctions(root_old_node, root_new_node);
|
|
|
| // Prepare to-do lists.
|
| - var replace_code_list = new Array();
|
| - var link_to_old_script_list = new Array();
|
| - var link_to_original_script_list = new Array();
|
| - var update_positions_list = new Array();
|
| + var replace_code_list = new GlobalArray();
|
| + var link_to_old_script_list = new GlobalArray();
|
| + var link_to_original_script_list = new GlobalArray();
|
| + var update_positions_list = new GlobalArray();
|
|
|
| function HarvestTodo(old_node) {
|
| function CollectDamaged(node) {
|
| @@ -128,7 +142,7 @@ Debug.LiveEdit = new function() {
|
| HarvestTodo(root_old_node);
|
|
|
| // Collect shared infos for functions whose code need to be patched.
|
| - var replaced_function_infos = new Array();
|
| + var replaced_function_infos = new GlobalArray();
|
| for (var i = 0; i < replace_code_list.length; i++) {
|
| var live_shared_function_infos =
|
| replace_code_list[i].live_shared_function_infos;
|
| @@ -170,7 +184,7 @@ Debug.LiveEdit = new function() {
|
| old_script = %LiveEditReplaceScript(script, new_source,
|
| old_script_name);
|
|
|
| - var link_to_old_script_report = new Array();
|
| + var link_to_old_script_report = new GlobalArray();
|
| change_log.push( { linked_to_old_script: link_to_old_script_report } );
|
|
|
| // We need to link to old script all former nested functions.
|
| @@ -192,7 +206,7 @@ Debug.LiveEdit = new function() {
|
| PatchFunctionCode(replace_code_list[i], change_log);
|
| }
|
|
|
| - var position_patch_report = new Array();
|
| + var position_patch_report = new GlobalArray();
|
| change_log.push( {position_patched: position_patch_report} );
|
|
|
| for (var i = 0; i < update_positions_list.length; i++) {
|
| @@ -214,9 +228,6 @@ Debug.LiveEdit = new function() {
|
| preview_description.updated = true;
|
| return preview_description;
|
| }
|
| - // Function is public.
|
| - this.ApplyPatchMultiChunk = ApplyPatchMultiChunk;
|
| -
|
|
|
| // Fully compiles source string as a script. Returns Array of
|
| // FunctionCompileInfo -- a descriptions of all functions of the script.
|
| @@ -233,8 +244,8 @@ Debug.LiveEdit = new function() {
|
| var raw_compile_info = %LiveEditGatherCompileInfo(script, source);
|
|
|
| // Sort function infos by start position field.
|
| - var compile_info = new Array();
|
| - var old_index_map = new Array();
|
| + var compile_info = new GlobalArray();
|
| + var old_index_map = new GlobalArray();
|
| for (var i = 0; i < raw_compile_info.length; i++) {
|
| var info = new FunctionCompileInfo(raw_compile_info[i]);
|
| // Remove all links to the actual script. Breakpoints system and
|
| @@ -367,7 +378,7 @@ Debug.LiveEdit = new function() {
|
| break_point.clear();
|
|
|
| // TODO(LiveEdit): be careful with resource offset here.
|
| - var break_point_position = Debug.findScriptSourcePosition(original_script,
|
| + var break_point_position = FindScriptSourcePosition(original_script,
|
| break_point.line(), break_point.column());
|
|
|
| var old_position_description = {
|
| @@ -443,7 +454,7 @@ Debug.LiveEdit = new function() {
|
| }
|
|
|
| function PosTranslator(diff_array) {
|
| - var chunks = new Array();
|
| + var chunks = new GlobalArray();
|
| var current_diff = 0;
|
| for (var i = 0; i < diff_array.length; i += 3) {
|
| var pos1_begin = diff_array[i];
|
| @@ -469,7 +480,7 @@ Debug.LiveEdit = new function() {
|
| var chunk_index2 = array.length - 1;
|
|
|
| while (chunk_index1 < chunk_index2) {
|
| - var middle_index = Math.floor((chunk_index1 + chunk_index2) / 2);
|
| + var middle_index = MathFloor((chunk_index1 + chunk_index2) / 2);
|
| if (pos < array[middle_index + 1].pos1) {
|
| chunk_index2 = middle_index;
|
| } else {
|
| @@ -550,7 +561,7 @@ Debug.LiveEdit = new function() {
|
| function BuildNode() {
|
| var my_index = index;
|
| index++;
|
| - var child_array = new Array();
|
| + var child_array = new GlobalArray();
|
| while (index < code_info_array.length &&
|
| code_info_array[index].outer_index == my_index) {
|
| child_array.push(BuildNode());
|
| @@ -682,7 +693,7 @@ Debug.LiveEdit = new function() {
|
| var scope_change_description =
|
| IsFunctionContextLocalsChanged(old_node.info, new_node.info);
|
| if (scope_change_description) {
|
| - old_node.status = FunctionStatus.CHANGED;
|
| + old_node.status = FunctionStatus.CHANGED;
|
| }
|
|
|
| var old_children = old_node.children;
|
| @@ -783,7 +794,7 @@ Debug.LiveEdit = new function() {
|
| function FindLiveSharedInfos(old_code_tree, script) {
|
| var shared_raw_list = %LiveEditFindSharedFunctionInfosForScript(script);
|
|
|
| - var shared_infos = new Array();
|
| + var shared_infos = new GlobalArray();
|
|
|
| for (var i = 0; i < shared_raw_list.length; i++) {
|
| shared_infos.push(new SharedInfoWrapper(shared_raw_list[i]));
|
| @@ -900,7 +911,7 @@ Debug.LiveEdit = new function() {
|
| // have activations on stack (of any thread). Throws a Failure exception
|
| // if this proves to be false.
|
| function CheckStackActivations(shared_wrapper_list, change_log) {
|
| - var shared_list = new Array();
|
| + var shared_list = new GlobalArray();
|
| for (var i = 0; i < shared_wrapper_list.length; i++) {
|
| shared_list[i] = shared_wrapper_list[i].info;
|
| }
|
| @@ -910,8 +921,8 @@ Debug.LiveEdit = new function() {
|
| throw new Failure(result[shared_list.length]);
|
| }
|
|
|
| - var problems = new Array();
|
| - var dropped = new Array();
|
| + var problems = new GlobalArray();
|
| + var dropped = new GlobalArray();
|
| for (var i = 0; i < shared_list.length; i++) {
|
| var shared = shared_wrapper_list[i];
|
| if (result[i] == FunctionPatchabilityStatus.REPLACED_ON_ACTIVE_STACK) {
|
| @@ -964,8 +975,6 @@ Debug.LiveEdit = new function() {
|
| function Failure(message) {
|
| this.message = message;
|
| }
|
| - // Function (constructor) is public.
|
| - this.Failure = Failure;
|
|
|
| Failure.prototype.toString = function() {
|
| return "LiveEdit Failure: " + this.message;
|
| @@ -1000,8 +1009,6 @@ Debug.LiveEdit = new function() {
|
| function GetPcFromSourcePos(func, source_pos) {
|
| return %GetFunctionCodePositionFromSource(func, source_pos);
|
| }
|
| - // Function is public.
|
| - this.GetPcFromSourcePos = GetPcFromSourcePos;
|
|
|
| // LiveEdit main entry point: changes a script text to a new string.
|
| function SetScriptSource(script, new_source, preview_only, change_log) {
|
| @@ -1010,8 +1017,6 @@ Debug.LiveEdit = new function() {
|
| return ApplyPatchMultiChunk(script, diff, new_source, preview_only,
|
| change_log);
|
| }
|
| - // Function is public.
|
| - this.SetScriptSource = SetScriptSource;
|
|
|
| function CompareStrings(s1, s2) {
|
| return %LiveEditCompareStrings(s1, s2);
|
| @@ -1098,10 +1103,21 @@ Debug.LiveEdit = new function() {
|
| return ProcessOldNode(old_code_tree);
|
| }
|
|
|
| - // Functions are public for tests.
|
| - this.TestApi = {
|
| + // -------------------------------------------------------------------
|
| + // Exports
|
| +
|
| + var LiveEdit = {};
|
| + LiveEdit.SetScriptSource = SetScriptSource;
|
| + LiveEdit.ApplyPatchMultiChunk = ApplyPatchMultiChunk;
|
| + LiveEdit.Failure = Failure;
|
| + LiveEdit.GetPcFromSourcePos = GetPcFromSourcePos;
|
| +
|
| + LiveEdit.TestApi = {
|
| PosTranslator: PosTranslator,
|
| CompareStrings: CompareStrings,
|
| ApplySingleChunkPatch: ApplySingleChunkPatch
|
| };
|
| -};
|
| +
|
| + global.Debug.LiveEdit = LiveEdit;
|
| +
|
| +})
|
|
|