whole_func_string: 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[old_shared_wrapper_list.length]);
      }
  
      var problems = new GlobalArray();
      var dropped = new GlobalArray();
      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) {
          var description = {
              name: shared.function_name,
              start_pos: shared.start_position,
              end_pos: shared.end_position,
              replace_problem:
                  FunctionPatchabilityStatus.SymbolName(result[i])
          };
          problems.push(description);
        }
      }
      if (dropped.length > 0) {
        change_log.push({ dropped_from_stack: dropped });
      }
      if (problems.length > 0) {
        change_log.push( { functions_on_stack: problems } );
        throw new Failure("Blocked by functions on stack");
      }
  
      return dropped.length;
    }
func_code_string: 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[old_shared_wrapper_list.length]);
      }
  
      var problems = new GlobalArray();
      var dropped = new GlobalArray();
      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) {
          var description = {
              name: shared.function_name,
              start_pos: shared.start_position,
              end_pos: shared.end_position,
              replace_problem:
                  FunctionPatchabilityStatus.SymbolName(result[i])
          };
          problems.push(description);
        }
      }
      if (dropped.length > 0) {
        change_log.push({ dropped_from_stack: dropped });
      }
      if (problems.length > 0) {
        change_log.push( { functions_on_stack: problems } );
        throw new Failure("Blocked by functions on stack");
      }
  
      return dropped.length;
    }
func_documentation_string: 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.