summaryrefslogtreecommitdiff
path: root/common.mk
diff options
context:
space:
mode:
authorAlan Wu <XrXr@users.noreply.github.com>2021-08-25 17:00:45 -0400
committerAlan Wu <XrXr@users.noreply.github.com>2021-10-20 18:19:39 -0400
commitbd876c243aeace00ea312d0a5bbff091ccc84ba2 (patch)
treee30156ab87c3345a995dcd47c11dc9a535643694 /common.mk
parent0562459473f44c270784074a09a33ea30d68e457 (diff)
TracePoint support
This change fixes some cases where YJIT fails to fire tracing events. Most of the situations YJIT did not handle correctly involves enabling tracing while running inside generated code. A new operation to invalidate all generated code is added, which uses patching to make generated code exit at the next VM instruction boundary. A new routine called `jit_prepare_routine_call()` is introduced to facilitate this and should be used when generating code that could allocate, or could otherwise use `RB_VM_LOCK_ENTER()`. The `c_return` event is fired in the middle of an instruction as opposed to at an instruction boundary, so it requires special handling. C method call return points are patched to go to a fucntion which does everything the interpreter does, including firing the `c_return` event. The generated code for C method calls normally does not fire the event. Invalided code should not change after patching so the exits are not clobbered. A new variable is introduced to track the region of code that should not change.
Diffstat (limited to 'common.mk')
-rw-r--r--common.mk6
1 files changed, 5 insertions, 1 deletions
diff --git a/common.mk b/common.mk
index 5ccc9a389d..288df7aae4 100644
--- a/common.mk
+++ b/common.mk
@@ -7024,7 +7024,6 @@ iseq.$(OBJEXT): {$(VPATH)}vm_callinfo.h
iseq.$(OBJEXT): {$(VPATH)}vm_core.h
iseq.$(OBJEXT): {$(VPATH)}vm_opts.h
iseq.$(OBJEXT): {$(VPATH)}yjit.h
-iseq.$(OBJEXT): {$(VPATH)}yjit_asm.h
load.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
load.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
load.$(OBJEXT): $(CCAN_DIR)/list/list.h
@@ -16722,6 +16721,7 @@ yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/gc.h
yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/imemo.h
yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/object.h
yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/re.h
+yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/serial.h
yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
yjit_codegen.$(OBJEXT): $(top_srcdir)/internal/string.h
@@ -16746,6 +16746,7 @@ yjit_codegen.$(OBJEXT): {$(VPATH)}darray.h
yjit_codegen.$(OBJEXT): {$(VPATH)}debug_counter.h
yjit_codegen.$(OBJEXT): {$(VPATH)}defines.h
yjit_codegen.$(OBJEXT): {$(VPATH)}encoding.h
+yjit_codegen.$(OBJEXT): {$(VPATH)}gc.h
yjit_codegen.$(OBJEXT): {$(VPATH)}id.h
yjit_codegen.$(OBJEXT): {$(VPATH)}id_table.h
yjit_codegen.$(OBJEXT): {$(VPATH)}insns.def
@@ -16898,6 +16899,9 @@ yjit_codegen.$(OBJEXT): {$(VPATH)}missing.h
yjit_codegen.$(OBJEXT): {$(VPATH)}node.h
yjit_codegen.$(OBJEXT): {$(VPATH)}onigmo.h
yjit_codegen.$(OBJEXT): {$(VPATH)}oniguruma.h
+yjit_codegen.$(OBJEXT): {$(VPATH)}probes.dmyh
+yjit_codegen.$(OBJEXT): {$(VPATH)}probes.h
+yjit_codegen.$(OBJEXT): {$(VPATH)}probes_helper.h
yjit_codegen.$(OBJEXT): {$(VPATH)}ruby_assert.h
yjit_codegen.$(OBJEXT): {$(VPATH)}ruby_atomic.h
yjit_codegen.$(OBJEXT): {$(VPATH)}st.h