aboutsummaryrefslogtreecommitdiff
path: root/src/lj_ir.c
diff options
context:
space:
mode:
authorMike Pall <mike>2016-05-22 23:40:37 +0200
committerMike Pall <mike>2016-05-22 23:40:37 +0200
commit3152ed98ea3d99579940eb5e72da687ce66792de (patch)
treedcd8b8dec22f0d1d0a9ad3e30fcaefc4f288e3f2 /src/lj_ir.c
parenta657fa01869e63508afce88cc8088c3d2e2fb47c (diff)
downloadluajit-3152ed98ea3d99579940eb5e72da687ce66792de.tar.gz
luajit-3152ed98ea3d99579940eb5e72da687ce66792de.tar.bz2
luajit-3152ed98ea3d99579940eb5e72da687ce66792de.zip
Simplify GCtrace * reference embedding for trace stitching.
This is now possible due to the immovable IR. Contributed by Peter Cawley.
Diffstat (limited to 'src/lj_ir.c')
-rw-r--r--src/lj_ir.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lj_ir.c b/src/lj_ir.c
index 593b4127..acb39463 100644
--- a/src/lj_ir.c
+++ b/src/lj_ir.c
@@ -348,6 +348,18 @@ found:
348 return TREF(ref, t); 348 return TREF(ref, t);
349} 349}
350 350
351/* Allocate GCtrace constant placeholder (no interning). */
352TRef lj_ir_ktrace(jit_State *J)
353{
354 IRRef ref = ir_nextk(J);
355 IRIns *ir = IR(ref);
356 lua_assert(irt_toitype_(IRT_P64) == LJ_TTRACE);
357 ir->t.irt = IRT_P64;
358 ir->o = IR_KNULL; /* Not IR_KGC yet, but same size. */
359 ir->prev = 0;
360 return TREF(ref, IRT_P64);
361}
362
351/* Intern 32 bit pointer constant. */ 363/* Intern 32 bit pointer constant. */
352TRef lj_ir_kptr_(jit_State *J, IROp op, void *ptr) 364TRef lj_ir_kptr_(jit_State *J, IROp op, void *ptr)
353{ 365{