| Index: src/factory.cc
|
| diff --git a/src/factory.cc b/src/factory.cc
|
| index b4d9de0fd157da66fe3400738ca44a73e4759ffc..571cd3ff9b66395a82411de91de0304353b6e16a 100644
|
| --- a/src/factory.cc
|
| +++ b/src/factory.cc
|
| @@ -2222,26 +2222,21 @@ Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) {
|
| Handle<FixedArray> break_points(
|
| NewFixedArray(DebugInfo::kEstimatedNofBreakPointsInFunction));
|
|
|
| + // Make a copy of the bytecode array if available.
|
| + Handle<Object> maybe_debug_bytecode_array = undefined_value();
|
| + if (shared->HasBytecodeArray()) {
|
| + Handle<BytecodeArray> original(shared->bytecode_array());
|
| + maybe_debug_bytecode_array = CopyBytecodeArray(original);
|
| + }
|
| +
|
| // Create and set up the debug info object. Debug info contains function, a
|
| // copy of the original code, the executing code and initial fixed array for
|
| // active break points.
|
| Handle<DebugInfo> debug_info =
|
| Handle<DebugInfo>::cast(NewStruct(DEBUG_INFO_TYPE));
|
| debug_info->set_shared(*shared);
|
| - if (shared->HasBytecodeArray()) {
|
| - // We need to create a copy, but delay since this may cause heap
|
| - // verification.
|
| - debug_info->set_abstract_code(AbstractCode::cast(shared->bytecode_array()));
|
| - } else {
|
| - debug_info->set_abstract_code(AbstractCode::cast(shared->code()));
|
| - }
|
| + debug_info->set_debug_bytecode_array(*maybe_debug_bytecode_array);
|
| debug_info->set_break_points(*break_points);
|
| - if (shared->HasBytecodeArray()) {
|
| - // Create a copy for debugging.
|
| - Handle<BytecodeArray> original(shared->bytecode_array());
|
| - Handle<BytecodeArray> copy = CopyBytecodeArray(original);
|
| - debug_info->set_abstract_code(AbstractCode::cast(*copy));
|
| - }
|
|
|
| // Link debug info to function.
|
| shared->set_debug_info(*debug_info);
|
|
|