Index: src/debug/liveedit.js |
diff --git a/src/debug/liveedit.js b/src/debug/liveedit.js |
index d85e827115bbe3b68f648ce7730d90a92f57f78a..0076543f8b73c04f70af479ceb1a07068dba02fd 100644 |
--- a/src/debug/liveedit.js |
+++ b/src/debug/liveedit.js |
@@ -29,6 +29,7 @@ |
var FindScriptSourcePosition = global.Debug.findScriptSourcePosition; |
var GlobalArray = global.Array; |
var MathFloor = global.Math.floor; |
+ var MathMax = global.Math.max; |
var SyntaxError = global.SyntaxError; |
// ------------------------------------------------------------------- |
@@ -75,6 +76,10 @@ |
} |
throw failure; |
} |
+ |
+ var max_function_literal_id = new_compile_info.reduce( |
+ (max, info) => MathMax(max, info.function_literal_id), 0); |
+ |
var root_new_node = BuildCodeInfoTree(new_compile_info); |
// Link recompiled script data with other data. |
@@ -177,8 +182,7 @@ |
// Update the script text and create a new script representing an old |
// version of the script. |
- old_script = %LiveEditReplaceScript(script, new_source, |
- old_script_name); |
+ old_script = %LiveEditReplaceScript(script, new_source, old_script_name); |
var link_to_old_script_report = new GlobalArray(); |
change_log.push( { linked_to_old_script: link_to_old_script_report } ); |
@@ -192,12 +196,6 @@ |
preview_description.created_script_name = old_script_name; |
} |
- // Link to an actual script all the functions that we are going to use. |
- for (var i = 0; i < link_to_original_script_list.length; i++) { |
- %LiveEditFunctionSetScript( |
- link_to_original_script_list[i].info.shared_function_info, script); |
- } |
- |
for (var i = 0; i < replace_code_list.length; i++) { |
PatchFunctionCode(replace_code_list[i], change_log); |
} |
@@ -212,13 +210,25 @@ |
position_patch_report); |
if (update_positions_list[i].live_shared_function_infos) { |
- update_positions_list[i].live_shared_function_infos. |
- forEach(function (info) { |
- %LiveEditFunctionSourceUpdated(info.raw_array); |
- }); |
+ var new_function_literal_id = |
+ update_positions_list[i] |
+ .corresponding_node.info.function_literal_id; |
+ update_positions_list[i].live_shared_function_infos.forEach(function( |
+ info) { |
+ %LiveEditFunctionSourceUpdated( |
+ info.raw_array, new_function_literal_id); |
+ }); |
} |
} |
+ %LiveEditFixupScript(script, max_function_literal_id); |
+ |
+ // Link all the functions we're going to use to an actual script. |
+ for (var i = 0; i < link_to_original_script_list.length; i++) { |
+ %LiveEditFunctionSetScript( |
+ link_to_original_script_list[i].info.shared_function_info, script); |
+ } |
+ |
preview_description.updated = true; |
return preview_description; |
} |
@@ -658,6 +668,8 @@ |
old_children[old_index].corresponding_node = UNDEFINED; |
old_node.status = FunctionStatus.CHANGED; |
} |
+ } else { |
+ ProcessNode(old_children[old_index], new_children[new_index]); |
} |
} else { |
old_children[old_index].status = FunctionStatus.DAMAGED; |
@@ -761,6 +773,7 @@ |
this.scope_info = raw_array[4]; |
this.outer_index = raw_array[5]; |
this.shared_function_info = raw_array[6]; |
+ this.function_literal_id = raw_array[8]; |
this.next_sibling_index = null; |
this.raw_array = raw_array; |
} |