]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Merge branch 'master' into v2.1
authorMike Pall <mike>
Thu, 10 Jan 2019 11:24:17 +0000 (12:24 +0100)
committerMike Pall <mike>
Thu, 10 Jan 2019 11:24:17 +0000 (12:24 +0100)
1  2 
src/lj_jit.h
src/lj_opt_loop.c
src/lj_snap.c

diff --cc src/lj_jit.h
index f37e7927a43e03192fbcb8ab32df18a9dcec39e9,0bc625830a829548597e890e8ad06a0e5c76b700..5d41ef4bfb1dc6c5ed64932ec35ec4ace5915058
@@@ -233,12 -217,8 +233,11 @@@ typedef enum 
  /* Trace object. */
  typedef struct GCtrace {
    GCHeader;
-   uint8_t topslot;    /* Top stack slot already checked to be allocated. */
-   uint8_t linktype;   /* Type of link. */
+   uint16_t nsnap;     /* Number of snapshots. */
    IRRef nins;         /* Next IR instruction. Biased with REF_BIAS. */
 +#if LJ_GC64
 +  uint32_t unused_gc64;
 +#endif
    GCRef gclist;
    IRIns *ir;          /* IR instructions/constants. Biased with REF_BIAS. */
    IRRef nk;           /* Lowest IR constant. Biased with REF_BIAS. */
index 04c6d06ddffa760d4f4f3814ec99d337cfb83ad1,cc88111014a68b3cdfe0f529aa591f22dab9fac0..441b8addf981dde19685710ad4f0e53b29561c02
@@@ -251,19 -251,12 +251,19 @@@ static void loop_subst_snap(jit_State *
    nmap += nn;
    while (omap < nextmap)  /* Copy PC + frame links. */
      *nmap++ = *omap++;
-   J->cur.nsnapmap = (uint16_t)(nmap - J->cur.snapmap);
+   J->cur.nsnapmap = (uint32_t)(nmap - J->cur.snapmap);
  }
  
 +typedef struct LoopState {
 +  jit_State *J;
 +  IRRef1 *subst;
 +  MSize sizesubst;
 +} LoopState;
 +
  /* Unroll loop. */
 -static void loop_unroll(jit_State *J)
 +static void loop_unroll(LoopState *lps)
  {
 +  jit_State *J = lps->J;
    IRRef1 phi[LJ_MAX_PHI];
    uint32_t nphi = 0;
    IRRef1 *subst;
diff --cc src/lj_snap.c
index 44fa379f2c70245274df63d081ba37a29ebff946,73f25004bc4af02e9419f3816286c7e1885af3da..ceaf2ca50e3d0737ba0e811d42b19ee277ba0d43
@@@ -156,16 -125,16 +156,16 @@@ static void snapshot_stack(jit_State *J
    MSize nent;
    SnapEntry *p;
    /* Conservative estimate. */
 -  lj_snap_grow_map(J, nsnapmap + nslots + (MSize)J->framedepth+1);
 +  lj_snap_grow_map(J, nsnapmap + nslots + (MSize)(LJ_FR2?2:J->framedepth+1));
    p = &J->cur.snapmap[nsnapmap];
    nent = snapshot_slots(J, p, nslots);
 -  snap->topslot = (uint8_t)snapshot_framelinks(J, p + nent);
 +  snap->nent = (uint8_t)nent;
 +  nent += snapshot_framelinks(J, p + nent, &snap->topslot);
-   snap->mapofs = (uint16_t)nsnapmap;
+   snap->mapofs = (uint32_t)nsnapmap;
    snap->ref = (IRRef1)J->cur.nins;
 -  snap->nent = (uint8_t)nent;
    snap->nslots = (uint8_t)nslots;
    snap->count = 0;
-   J->cur.nsnapmap = (uint16_t)(nsnapmap + nent);
 -  J->cur.nsnapmap = (uint32_t)(nsnapmap + nent + 1 + J->framedepth);
++  J->cur.nsnapmap = (uint32_t)(nsnapmap + nent);
  }
  
  /* Add or merge a snapshot. */