Delay copying abstract code to avoid failing in the heap verifier
BUG= Review URL: https://codereview.chromium.org/1861963003 Cr-Commit-Position: refs/heads/master@{#35306}
This commit is contained in:
parent
3184aff964
commit
6ac509de6e
@ -2239,14 +2239,19 @@ Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) {
|
|||||||
Handle<DebugInfo>::cast(NewStruct(DEBUG_INFO_TYPE));
|
Handle<DebugInfo>::cast(NewStruct(DEBUG_INFO_TYPE));
|
||||||
debug_info->set_shared(*shared);
|
debug_info->set_shared(*shared);
|
||||||
if (shared->HasBytecodeArray()) {
|
if (shared->HasBytecodeArray()) {
|
||||||
// Create a copy for debugging.
|
// We need to create a copy, but delay since this may cause heap
|
||||||
Handle<BytecodeArray> original(shared->bytecode_array(), isolate());
|
// verification.
|
||||||
Handle<BytecodeArray> copy = CopyBytecodeArray(original);
|
debug_info->set_abstract_code(AbstractCode::cast(shared->bytecode_array()));
|
||||||
debug_info->set_abstract_code(AbstractCode::cast(*copy));
|
|
||||||
} else {
|
} else {
|
||||||
debug_info->set_abstract_code(AbstractCode::cast(shared->code()));
|
debug_info->set_abstract_code(AbstractCode::cast(shared->code()));
|
||||||
}
|
}
|
||||||
debug_info->set_break_points(*break_points);
|
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.
|
// Link debug info to function.
|
||||||
shared->set_debug_info(*debug_info);
|
shared->set_debug_info(*debug_info);
|
||||||
|
Loading…
Reference in New Issue
Block a user