From 329f5c7e43523b98e473c4f9e873f60588529509 Mon Sep 17 00:00:00 2001 From: Jan Oravec Date: Thu, 7 Oct 2021 17:17:16 -0700 Subject: [PATCH] Do not record inline stacks in nothrow Summary: nothrow{} records a special catch block that just asserts and crashes HHVM, we don't need to record inline stacks with it. We don't record a fixup either, so inline stacks alone won't be very useful even for debugging purposes. This instruction is often used by DecRef to call `release()` methods. DecRefs can be shuffled across BeginInlining/EndInlining, so the inline stack is often incorrect. The next diff hits assertions on sanity checks without this one. Reviewed By: paulbiss Differential Revision: D31458376 fbshipit-source-id: fcd528197644e12fed11e007f2bf494d866dcdb3 --- hphp/runtime/vm/jit/vasm-arm.cpp | 1 - hphp/runtime/vm/jit/vasm-x64.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/hphp/runtime/vm/jit/vasm-arm.cpp b/hphp/runtime/vm/jit/vasm-arm.cpp index fb76ca58b28..1e927308559 100644 --- a/hphp/runtime/vm/jit/vasm-arm.cpp +++ b/hphp/runtime/vm/jit/vasm-arm.cpp @@ -855,7 +855,6 @@ void Vgen::emit(const leavetc& /*i*/) { void Vgen::emit(const nothrow& /*i*/) { env.meta.catches.emplace_back(a->frontier(), nullptr); - env.record_inline_stack(a->frontier()); } void Vgen::emit(const syncpoint& i) { diff --git a/hphp/runtime/vm/jit/vasm-x64.cpp b/hphp/runtime/vm/jit/vasm-x64.cpp index 39bd12a04e7..905c583ca42 100644 --- a/hphp/runtime/vm/jit/vasm-x64.cpp +++ b/hphp/runtime/vm/jit/vasm-x64.cpp @@ -779,7 +779,6 @@ void Vgen::emit(const contenter& i) { template void Vgen::emit(const nothrow& /*i*/) { env.meta.catches.emplace_back(a.frontier(), nullptr); - env.record_inline_stack(a.frontier()); } template -- 2.11.4.GIT