diff options
author | Mike Pall <mike> | 2016-05-22 23:40:37 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2016-05-22 23:40:37 +0200 |
commit | 3152ed98ea3d99579940eb5e72da687ce66792de (patch) | |
tree | dcd8b8dec22f0d1d0a9ad3e30fcaefc4f288e3f2 /src/lj_ir.c | |
parent | a657fa01869e63508afce88cc8088c3d2e2fb47c (diff) | |
download | luajit-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.c | 12 |
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). */ | ||
352 | TRef 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. */ |
352 | TRef lj_ir_kptr_(jit_State *J, IROp op, void *ptr) | 364 | TRef lj_ir_kptr_(jit_State *J, IROp op, void *ptr) |
353 | { | 365 | { |