diff options
author | Mike Pall <mike> | 2010-01-27 02:17:56 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2010-01-27 02:17:56 +0100 |
commit | d216cdb2b9eb41879cdfc327486d805cc260d8fa (patch) | |
tree | f65d1dd7a2c63b74aded66b0a99d5ea703217dad /src/lj_ir.h | |
parent | 05d67cf5660323ef139858b586977c7709ff8a4c (diff) | |
download | luajit-d216cdb2b9eb41879cdfc327486d805cc260d8fa.tar.gz luajit-d216cdb2b9eb41879cdfc327486d805cc260d8fa.tar.bz2 luajit-d216cdb2b9eb41879cdfc327486d805cc260d8fa.zip |
Add frame and continuation flags to TRef and SnapEntry.
Diffstat (limited to 'src/lj_ir.h')
-rw-r--r-- | src/lj_ir.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/lj_ir.h b/src/lj_ir.h index efc8205e..672aca4a 100644 --- a/src/lj_ir.h +++ b/src/lj_ir.h | |||
@@ -422,18 +422,29 @@ enum { | |||
422 | 422 | ||
423 | #define irref_isk(ref) ((ref) < REF_BIAS) | 423 | #define irref_isk(ref) ((ref) < REF_BIAS) |
424 | 424 | ||
425 | /* Tagged IR references. */ | 425 | /* Tagged IR references (32 bit). |
426 | ** | ||
427 | ** +-------+-------+---------------+ | ||
428 | ** | irt | flags | ref | | ||
429 | ** +-------+-------+---------------+ | ||
430 | ** | ||
431 | ** The tag holds a copy of the IRType and speeds up IR type checks. | ||
432 | */ | ||
426 | typedef uint32_t TRef; | 433 | typedef uint32_t TRef; |
427 | 434 | ||
428 | #define TREF(ref, t) (cast(TRef, (ref) + ((t)<<16))) | 435 | #define TREF_REFMASK 0x0000ffff |
436 | #define TREF_FRAME 0x00010000 | ||
437 | #define TREF_CONT 0x00020000 | ||
438 | |||
439 | #define TREF(ref, t) ((TRef)((ref) + ((t)<<24))) | ||
429 | 440 | ||
430 | #define tref_ref(tr) (cast(IRRef1, (tr))) | 441 | #define tref_ref(tr) ((IRRef1)(tr)) |
431 | #define tref_t(tr) (cast(IRType, (tr)>>16)) | 442 | #define tref_t(tr) ((IRType)((tr)>>24)) |
432 | #define tref_type(tr) (cast(IRType, ((tr)>>16) & IRT_TYPE)) | 443 | #define tref_type(tr) ((IRType)(((tr)>>24) & IRT_TYPE)) |
433 | #define tref_typerange(tr, first, last) \ | 444 | #define tref_typerange(tr, first, last) \ |
434 | ((((tr)>>16) & IRT_TYPE) - (TRef)(first) <= (TRef)(last-first)) | 445 | ((((tr)>>24) & IRT_TYPE) - (TRef)(first) <= (TRef)(last-first)) |
435 | 446 | ||
436 | #define tref_istype(tr, t) (((tr) & (IRT_TYPE<<16)) == ((t)<<16)) | 447 | #define tref_istype(tr, t) (((tr) & (IRT_TYPE<<24)) == ((t)<<24)) |
437 | #define tref_isnil(tr) (tref_istype((tr), IRT_NIL)) | 448 | #define tref_isnil(tr) (tref_istype((tr), IRT_NIL)) |
438 | #define tref_isfalse(tr) (tref_istype((tr), IRT_FALSE)) | 449 | #define tref_isfalse(tr) (tref_istype((tr), IRT_FALSE)) |
439 | #define tref_istrue(tr) (tref_istype((tr), IRT_TRUE)) | 450 | #define tref_istrue(tr) (tref_istype((tr), IRT_TRUE)) |