26 #include "src/trap-handler/trap-handler-internal.h" 27 #include "src/trap-handler/trap-handler.h" 31 namespace trap_handler {
33 #if V8_TRAP_HANDLER_SUPPORTED 46 MetadataLock lock_holder;
48 for (
size_t i = 0;
i < gNumCodeObjects; ++
i) {
49 const CodeProtectionInfo* data = gCodeObjects[
i].code_info;
50 if (data ==
nullptr) {
53 const Address base = data->base;
55 if (fault_addr >= base && fault_addr < base + data->size) {
57 const ptrdiff_t offset = fault_addr - base;
59 for (
unsigned i = 0;
i < data->num_protected_instructions; ++
i) {
60 if (data->instructions[
i].instr_offset == offset) {
62 *landing_pad = data->instructions[
i].landing_offset + base;
64 gRecoveredTrapCount.store(
65 gRecoveredTrapCount.load(std::memory_order_relaxed) + 1,
66 std::memory_order_relaxed);
75 #endif // V8_TRAP_HANDLER_SUPPORTED