Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Unified Diff: src/debug/liveedit.js

Issue 1492393003: Reland of [debugger] do not restart frames that reference new.target for liveedit. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug/liveedit.cc ('k') | src/debug/mips/debug-mips.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/debug/liveedit.js
diff --git a/src/debug/liveedit.js b/src/debug/liveedit.js
index 27425c154d03a1bf34e56cf688db6a4c7312b7c4..85e55c4c18c1e29e4fe45c53c047b3b098a065d3 100644
--- a/src/debug/liveedit.js
+++ b/src/debug/liveedit.js
@@ -142,14 +142,17 @@
HarvestTodo(root_old_node);
// Collect shared infos for functions whose code need to be patched.
- var replaced_function_infos = new GlobalArray();
+ var replaced_function_old_infos = new GlobalArray();
+ var replaced_function_new_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;
-
- if (live_shared_function_infos) {
- for (var j = 0; j < live_shared_function_infos.length; j++) {
- replaced_function_infos.push(live_shared_function_infos[j]);
+ var old_infos = replace_code_list[i].live_shared_function_infos;
+ var new_info =
+ replace_code_list[i].corresponding_node.info.shared_function_info;
+
+ if (old_infos) {
+ for (var j = 0; j < old_infos.length; j++) {
+ replaced_function_old_infos.push(old_infos[j]);
+ replaced_function_new_infos.push(new_info);
}
}
}
@@ -159,7 +162,9 @@
// Check that function being patched is not currently on stack or drop them.
var dropped_functions_number =
- CheckStackActivations(replaced_function_infos, change_log);
+ CheckStackActivations(replaced_function_old_infos,
+ replaced_function_new_infos,
+ change_log);
// Our current implementation requires client to manually issue "step in"
// command for correct stack state if the stack was modified.
@@ -910,21 +915,24 @@
// For array of wrapped shared function infos checks that none of them
// 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 GlobalArray();
- for (var i = 0; i < shared_wrapper_list.length; i++) {
- shared_list[i] = shared_wrapper_list[i].info;
- }
- var result = %LiveEditCheckAndDropActivations(shared_list, true);
- if (result[shared_list.length]) {
+ function CheckStackActivations(old_shared_wrapper_list,
+ new_shared_list,
+ change_log) {
+ var old_shared_list = new GlobalArray();
+ for (var i = 0; i < old_shared_wrapper_list.length; i++) {
+ old_shared_list[i] = old_shared_wrapper_list[i].info;
+ }
+ var result = %LiveEditCheckAndDropActivations(
+ old_shared_list, new_shared_list, true);
+ if (result[old_shared_wrapper_list.length]) {
// Extra array element may contain error message.
- throw new Failure(result[shared_list.length]);
+ throw new Failure(result[old_shared_wrapper_list.length]);
}
var problems = new GlobalArray();
var dropped = new GlobalArray();
- for (var i = 0; i < shared_list.length; i++) {
- var shared = shared_wrapper_list[i];
+ for (var i = 0; i < old_shared_list.length; i++) {
+ var shared = old_shared_wrapper_list[i];
if (result[i] == FunctionPatchabilityStatus.REPLACED_ON_ACTIVE_STACK) {
dropped.push({ name: shared.function_name } );
} else if (result[i] != FunctionPatchabilityStatus.AVAILABLE_FOR_PATCH) {
@@ -957,7 +965,8 @@
BLOCKED_UNDER_NATIVE_CODE: 4,
REPLACED_ON_ACTIVE_STACK: 5,
BLOCKED_UNDER_GENERATOR: 6,
- BLOCKED_ACTIVE_GENERATOR: 7
+ BLOCKED_ACTIVE_GENERATOR: 7,
+ BLOCKED_NO_NEW_TARGET_ON_RESTART: 8
};
FunctionPatchabilityStatus.SymbolName = function(code) {
« no previous file with comments | « src/debug/liveedit.cc ('k') | src/debug/mips/debug-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698