diff --git a/luajit/src/lj_cdata.c b/luajit/src/lj_cdata.c index 4190938a..30575daf 100644 --- a/luajit/src/lj_cdata.c +++ b/luajit/src/lj_cdata.c @@ -40,8 +40,7 @@ GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align) cdatav(cd)->extra = extra; cdatav(cd)->len = sz; g = G(L); - setgcrefr(cd->nextgc, g->gc.root); - setgcref(g->gc.root, obj2gco(cd)); + lj_gc_addtoroot(g, obj2gco(cd)); newwhite(g, obj2gco(cd)); cd->marked |= LJ_GC_ISCDATA; cd->gct = ~LJ_TCDATA; diff --git a/luajit/src/lj_frame.h b/luajit/src/lj_frame.h index a7e07d89..6847c4ca 100644 --- a/luajit/src/lj_frame.h +++ b/luajit/src/lj_frame.h @@ -67,7 +67,7 @@ enum { #define frame_gc(f) (gcref((f)->fr.func)) #define frame_ftsz(f) ((ptrdiff_t)(f)->fr.tp.ftsz) #define frame_pc(f) (mref((f)->fr.tp.pcr, const BCIns)) -#define setframe_gc(f, p, tp) (setgcref((f)->fr.func, (p)), UNUSED(tp)) +#define setframe_gc(f, p, tp) do { setgcref((f)->fr.func, (p)); UNUSED(tp); } while(0) #define setframe_ftsz(f, sz) ((f)->fr.tp.ftsz = (int32_t)(sz)) #define setframe_pc(f, pc) (setmref((f)->fr.tp.pcr, (pc))) #endif diff --git a/luajit/src/lj_func.c b/luajit/src/lj_func.c index 44d76b72..696babaa 100644 --- a/luajit/src/lj_func.c +++ b/luajit/src/lj_func.c @@ -114,6 +114,7 @@ GCfunc *lj_func_newC(lua_State *L, MSize nelems, GCtab *env) fn->c.gct = ~LJ_TFUNC; fn->c.ffid = FF_C; fn->c.nupvalues = (uint8_t)nelems; + setrawgcrefnull(fn->c.env); // Needed as else it would try to decrement a invalid gcref! /* NOBARRIER: The GCfunc is new (marked white). */ setmref(fn->c.pc, &G(L)->bc_cfunc_ext); setgcref(fn->c.env, obj2gco(env)); @@ -127,6 +128,7 @@ static GCfunc *func_newL(lua_State *L, GCproto *pt, GCtab *env) fn->l.gct = ~LJ_TFUNC; fn->l.ffid = FF_LUA; fn->l.nupvalues = 0; /* Set to zero until upvalues are initialized. */ + setrawgcrefnull(fn->l.env); // Needed as else it would try to decrement a invalid gcref! /* NOBARRIER: Really a setgcref. But the GCfunc is new (marked white). */ setmref(fn->l.pc, proto_bc(pt)); setgcref(fn->l.env, obj2gco(env)); diff --git a/luajit/src/lj_gc.c b/luajit/src/lj_gc.c index d9581d20..c2647b08 100644 --- a/luajit/src/lj_gc.c +++ b/luajit/src/lj_gc.c @@ -28,6 +28,7 @@ #include "lj_dispatch.h" #include "lj_vm.h" #include "lj_vmevent.h" +#include #define GCSTEPSIZE 1024u #define GCSWEEPMAX 40 @@ -84,6 +85,7 @@ static void gc_mark(global_State *g, GCobj *o) lj_assertG(gct == ~LJ_TFUNC || gct == ~LJ_TTAB || gct == ~LJ_TTHREAD || gct == ~LJ_TPROTO || gct == ~LJ_TTRACE, "bad GC type %d", gct); + printf("Bad GC type %d - %d\n", gct, ~LJ_TTAB); setgcrefr(o->gch.gclist, g->gc.gray); setgcref(g->gc.gray, o); } @@ -433,6 +435,7 @@ static void gc_sweepstr(global_State *g, GCRef *chain) int ow = otherwhite(g); uintptr_t u = gcrefu(*chain); GCRef q; + setrawgcrefnull(q); GCRef *p = &q; GCobj *o; setgcrefp(q, (u & ~(uintptr_t)1)); @@ -869,6 +872,10 @@ void *lj_mem_realloc(lua_State *L, void *p, GCSize osz, GCSize nsz) lj_assertG(checkptrGC(p), "allocated memory address %p outside required range", p); g->gc.total = (g->gc.total - osz) + nsz; +#if LUA_ZERO_OUT_MEMORY + if (osz == 0) + memset(p, 0, nsz); +#endif return p; } @@ -882,8 +889,10 @@ void * LJ_FASTCALL lj_mem_newgco(lua_State *L, GCSize size) lj_assertG(checkptrGC(o), "allocated memory address %p outside required range", o); g->gc.total += size; - setgcrefr(o->gch.nextgc, g->gc.root); - setgcref(g->gc.root, o); +#if LUA_ZERO_OUT_MEMORY + memset(o, 0, size); +#endif + lj_gc_addtoroot(g, o); newwhite(g, o); return o; } @@ -901,3 +910,61 @@ void *lj_mem_grow(lua_State *L, void *p, MSize *szp, MSize lim, MSize esz) return p; } +/* GC Reference states (Old version) */ + +/*LJ_FUNC void LJ_FASTCALL lj_mark_referenced(global_State *g, GCobj *obj) +{ + +}*/ + +/* +Left out for now as I wanna make a try without this to maintain only two lists. And with the reference counter this should also be avoidable at the cost of 4 bytes of memory. +LJ_FUNC void LJ_FASTCALL lj_mark_semireferenced(global_State *g, GCobj *obj) +{ + +}*/ + +/*LJ_FUNC void LJ_FASTCALL lj_mark_nonreferenced(global_State *g, GCobj *obj) +{ + // Unlinking from previous list / referenced list. + GCobj* prev = gcref(obj->gch.lastgc); + if (prev) + prev->gch.nextgc = obj->gch.nextgc; + + GCobj* next = gcref(obj->gch.nextgc); + if (next) + setgcref(next->gch.lastgc, prev); // Should be fine even if prev is null + + obj->gch.refcount = 0; // Time to vanish, though normally we should check if its not 0, too lazy rn tho + setgcrefr(obj->gch.nextgc, g->gc.nonreferencedroot); + setgcrefr(obj->gch.nextgc, g->gc.nonreferencedroot); +}*/ + +// Should be called on a new fresh object +LJ_FUNC void LJ_FASTCALL lj_gc_addtoroot(global_State *g, GCobj *obj) +{ + obj->gch.refcount = 0; + setrawgcrefr(obj->gch.nextgc, g->gc.root); + setrawgcref(g->gc.root, obj); +} + +LJ_FUNC void LJ_FASTCALL lj_gc_incr_ref(GCobj *obj) +{ + printf("incr ref %i\n", ++obj->gch.refcount); +} + +LJ_FUNC void LJ_FASTCALL lj_gc_decr_ref(GCobj *obj) +{ + if (!obj) + return; + + printf("ref %i\n", obj->gch.refcount); + if (obj->gch.refcount > 100 || obj->gch.refcount <= 0) + __debugbreak(); + + if (--obj->gch.refcount <= 0) + { + // ToDo: Free it + printf("freeing reference\n"); + } +} \ No newline at end of file diff --git a/luajit/src/lj_gc.h b/luajit/src/lj_gc.h index d951fed6..d233c54f 100644 --- a/luajit/src/lj_gc.h +++ b/luajit/src/lj_gc.h @@ -72,6 +72,13 @@ LJ_FUNC int LJ_FASTCALL lj_gc_step_jit(global_State *g, MSize steps); #endif LJ_FUNC void lj_gc_fullgc(lua_State *L); +// Universal function so that not like 20 places do the exact same +LJ_FUNC void LJ_FASTCALL lj_gc_addtoroot(global_State *g, GCobj *obj); + +// LJ_FUNC void LJ_FASTCALL lj_mark_referenced(global_State *g, GCobj *obj); +// LJ_FUNC void LJ_FASTCALL lj_mark_semireferenced(global_State *g, GCobj *obj); +// LJ_FUNC void LJ_FASTCALL lj_mark_nonreferenced(global_State *g, GCobj *obj); + /* GC check: drive collector forward if the GC threshold has been reached. */ #define lj_gc_check(L) \ { if (LJ_UNLIKELY(G(L)->gc.total >= G(L)->gc.threshold)) \ diff --git a/luajit/src/lj_load.c b/luajit/src/lj_load.c index 24b660a8..cff9cbf7 100644 --- a/luajit/src/lj_load.c +++ b/luajit/src/lj_load.c @@ -56,6 +56,7 @@ static TValue *cpparser(lua_State *L, lua_CFunction dummy, void *ud) /* Non-native generation returns a dumpable, but non-runnable prototype. */ setprotoV(L, L->top++, pt); } + gcrefdirect_decrement(pt); return NULL; } diff --git a/luajit/src/lj_obj.h b/luajit/src/lj_obj.h index 6f7891fd..744b063a 100644 --- a/luajit/src/lj_obj.h +++ b/luajit/src/lj_obj.h @@ -60,8 +60,26 @@ typedef struct GCRef { } GCRef; /* Common GC header for all collectable objects. */ -#define GCHeader GCRef nextgc; uint8_t marked; uint8_t gct -/* This occupies 6 bytes, so use the next 2 bytes for non-32 bit fields. */ +/* We got lastgc to double link it to make insertion/removal in the roots faster though I think I could get rid of that again later, just gonna keep it for now */ +/* Having the refcount be second allows structs like GCcdata on 64x to save 8 bytes alignment */ +/* as nextgc will be 8 bytes and refcount will be 4 with additional 4 one byte variables which all fit into 16 bytes in total */ +#define GCHeader /*GCRef lastgc;*/ GCRef nextgc; uint32_t refcount; uint8_t marked; uint8_t gct +/* This occupies 10 bytes, so use the next 2 bytes for non-32 bit fields. */ + +typedef union GCobj GCobj; +LJ_FUNC void LJ_FASTCALL lj_gc_decr_ref(GCobj *obj); +#define gcrefdirect_decrement(gc) (lj_gc_decr_ref((GCobj*)gc)) +#define gcref_decrement(gc) (lj_gc_decr_ref(gcref(gc))) + +#define LJ_GC_REF_DEBUG +#ifdef LJ_GC_REF_DEBUG +LJ_FUNC void LJ_FASTCALL lj_gc_incr_ref(GCobj *obj); +#define gcrefdirect_increment(gc) (lj_gc_incr_ref((GCobj*)gc)) +#define gcref_increment(gc) (lj_gc_incr_ref(gcref(gc))) +#else +#define gcrefdirect_increment(gc) (++gc->gch.refcount) +#define gcref_increment(gc) (++gcref(gc)->gch.refcount) +#endif #if LJ_GC64 #define gcref(r) ((GCobj *)(r).gcptr64) @@ -69,22 +87,32 @@ typedef struct GCRef { #define gcrefu(r) ((r).gcptr64) #define gcrefeq(r1, r2) ((r1).gcptr64 == (r2).gcptr64) -#define setgcref(r, gc) ((r).gcptr64 = (uint64_t)&(gc)->gch) +#define setrawgcref(r, gc) ((r).gcptr64 = (uint64_t)&(gc)->gch) #define setgcreft(r, gc, it) \ (r).gcptr64 = (uint64_t)&(gc)->gch | (((uint64_t)(it)) << 47) -#define setgcrefp(r, p) ((r).gcptr64 = (uint64_t)(p)) -#define setgcrefnull(r) ((r).gcptr64 = 0) -#define setgcrefr(r, v) ((r).gcptr64 = (v).gcptr64) +#define setrawgcrefp(r, p) ((r).gcptr64 = (uint64_t)(p)) +#define setrawgcrefnull(r) ((r).gcptr64 = 0) +#define setrawgcrefr(r, v) ((r).gcptr64 = (v).gcptr64) + +#define setgcref(r, gc) do { gcref_decrement(r); setrawgcref(r, gc); if ((r).gcptr64 != 0) { gcref_increment(r); } } while(0) +#define setgcrefp(r, p) do { gcref_decrement(r); setrawgcrefp(r, p); if ((r).gcptr64 != 0) { gcref_increment(r); } } while(0) +#define setgcrefnull(r) do { gcref_decrement(r); setrawgcrefnull(r); } while(0) +#define setgcrefr(r, v) do { gcref_decrement(r); setrawgcrefr(r, v); if ((r).gcptr64 != 0) { gcref_increment(r); } } while(0) #else #define gcref(r) ((GCobj *)(uintptr_t)(r).gcptr32) #define gcrefp(r, t) ((t *)(void *)(uintptr_t)(r).gcptr32) #define gcrefu(r) ((r).gcptr32) #define gcrefeq(r1, r2) ((r1).gcptr32 == (r2).gcptr32) -#define setgcref(r, gc) ((r).gcptr32 = (uint32_t)(uintptr_t)&(gc)->gch) -#define setgcrefp(r, p) ((r).gcptr32 = (uint32_t)(uintptr_t)(p)) -#define setgcrefnull(r) ((r).gcptr32 = 0) -#define setgcrefr(r, v) ((r).gcptr32 = (v).gcptr32) +#define setrawgcref(r, gc) ((r).gcptr32 = (uint32_t)(uintptr_t)&(gc)->gch) +#define setrawgcrefp(r, p) ((r).gcptr32 = (uint32_t)(uintptr_t)(p)) +#define setrawgcrefnull(r) ((r).gcptr32 = 0) +#define setrawgcrefr(r, v) ((r).gcptr32 = (v).gcptr32) + +#define setgcref(r, gc) do { gcref_decrement(r); setrawgcref(r, gc); if ((r).gcptr32 != 0) { gcref_increment(r); } } while(0) +#define setgcrefp(r, p) do { gcref_decrement(r); setrawgcrefp(r, p); if ((r).gcptr32 != 0) { gcref_increment(r); } } while(0) +#define setgcrefnull(r) do { gcref_decrement(r); setrawgcrefnull(r); } while(0) +#define setgcrefr(r, v) do { gcref_decrement(r); setrawgcrefr(r, v); if ((r).gcptr32 != 0) { gcref_increment(r); } } while(0) #endif #define gcnext(gc) (gcref((gc)->gch.nextgc)) @@ -608,6 +636,10 @@ typedef struct GCState { #endif MSize sweepstr; /* Sweep position in string table. */ GCRef root; /* List of all collectable objects. */ + // Old idea though maybe still worth a try later, but rn I wanna test it with a ref counter + // GCRef referencedroot; /* List of all objects that are referenced / shouldn't be collected */ + // GCRef semireferencedroot; /* List of all objects that may be referenced / a sweep through referencedroot is needed to determen their state */ + // GCRef nonreferencedroot; /* List of all objects that are not referenced / should be collected */ MRef sweep; /* Sweep position in root list. */ GCRef gray; /* List of gray objects. */ GCRef grayagain; /* List of objects for atomic traversal. */ @@ -893,7 +925,7 @@ static LJ_AINLINE void setrawlightudV(TValue *o, void *p) #elif LJ_64 o->u64 = (uint64_t)p | (((uint64_t)0xffff) << 48); #else - setgcrefp(o->gcr, p); setitype(o, LJ_TLIGHTUD); + setrawgcrefp(o->gcr, p); setitype(o, LJ_TLIGHTUD); #endif } @@ -924,9 +956,9 @@ static LJ_AINLINE void checklivetv(lua_State *L, TValue *o, const char *msg) static LJ_AINLINE void setgcVraw(TValue *o, GCobj *v, uint32_t itype) { #if LJ_GC64 - setgcreft(o->gcr, v, itype); + setrawgcreft(o->gcr, v, itype); #else - setgcref(o->gcr, v); setitype(o, itype); + setrawgcref(o->gcr, v); setitype(o, itype); #endif } @@ -936,10 +968,30 @@ static LJ_AINLINE void setgcV(lua_State *L, TValue *o, GCobj *v, uint32_t it) checklivetv(L, o, "store to dead GC object"); } +static LJ_AINLINE void setgcVRef(lua_State *L, TValue *o, GCobj *v, uint32_t it) +{ + if (!(tvisbool(o) || tvisnumber(o) || tvisnil(o))) + { + gcref_decrement(o->gcr); + } + + setgcVraw(o, v, it); + checklivetv(L, o, "store to dead GC object"); + + if (!(tvisbool(o) || tvisnumber(o) || tvisnil(o)) && v) + { + gcref_increment(o->gcr); + } +} + #define define_setV(name, type, tag) \ static LJ_AINLINE void name(lua_State *L, TValue *o, const type *v) \ { \ setgcV(L, o, obj2gco(v), tag); \ +} \ +static LJ_AINLINE void name##Ref(lua_State *L, TValue *o, const type *v) \ +{ \ + setgcVRef(L, o, obj2gco(v), tag); \ } define_setV(setstrV, GCstr, LJ_TSTR) define_setV(setthreadV, lua_State, LJ_TTHREAD) diff --git a/luajit/src/lj_parse.c b/luajit/src/lj_parse.c index b51fb39f..f0b09ae9 100644 --- a/luajit/src/lj_parse.c +++ b/luajit/src/lj_parse.c @@ -1588,6 +1588,8 @@ static GCproto *fs_finish(LexState *ls, BCLine line) pt->flags = (uint8_t)(fs->flags & ~(PROTO_HAS_RETURN|PROTO_FIXUP_RETURN)); pt->numparams = fs->numparams; pt->framesize = fs->framesize; + gcrefdirect_increment(pt); + setrawgcrefnull(pt->chunkname); setgcref(pt->chunkname, obj2gco(ls->chunkname)); /* Close potentially uninitialized gap between bc and kgc. */ diff --git a/luajit/src/lj_str.c b/luajit/src/lj_str.c index f34d6d95..6a401390 100644 --- a/luajit/src/lj_str.c +++ b/luajit/src/lj_str.c @@ -282,6 +282,7 @@ static GCstr *lj_str_alloc(lua_State *L, const char *str, MSize len, s->gct = ~LJ_TSTR; s->len = len; s->hash = hash; + s->refcount = 0; #ifndef STRID_RESEED_INTERVAL s->sid = g->str.id++; #elif STRID_RESEED_INTERVAL @@ -302,9 +303,10 @@ static GCstr *lj_str_alloc(lua_State *L, const char *str, MSize len, /* Add to string hash table. */ hash &= g->str.mask; u = gcrefu(g->str.tab[hash]); - setgcrefp(s->nextgc, (u & ~(uintptr_t)1)); + setrawgcrefnull(s->nextgc); // Gotta set it to 0 as else decr_ref will trigger + setrawgcrefp(s->nextgc, (u & ~(uintptr_t)1)); /* NOBARRIER: The string table is a GC root. */ - setgcrefp(g->str.tab[hash], ((uintptr_t)s | (u & 1))); + setrawgcrefp(g->str.tab[hash], ((uintptr_t)s | (u & 1))); if (g->str.num++ > g->str.mask) /* Allow a 100% load factor. */ lj_str_resize(L, (g->str.mask<<1)+1); /* Grow string table. */ return s; /* Return newly interned string. */ diff --git a/luajit/src/lj_tab.c b/luajit/src/lj_tab.c index 169717df..df4fffbe 100644 --- a/luajit/src/lj_tab.c +++ b/luajit/src/lj_tab.c @@ -14,6 +14,7 @@ #include "lj_err.h" #include "lj_tab.h" #include "lj_lib.h" +#include /* -- Object hashing ------------------------------------------------------ */ @@ -91,7 +92,7 @@ static GCtab *newtab(lua_State *L, uint32_t asize, uint32_t hbits) t->nomm = (uint8_t)~0; t->colo = (int8_t)asize; setmref(t->array, (TValue *)((char *)t + sizeof(GCtab))); - setgcrefnull(t->metatable); + setrawgcrefnull(t->metatable); t->asize = asize; t->hmask = 0; nilnode = &G(L)->nilnode; @@ -106,7 +107,7 @@ static GCtab *newtab(lua_State *L, uint32_t asize, uint32_t hbits) t->nomm = (uint8_t)~0; t->colo = 0; setmref(t->array, NULL); - setgcrefnull(t->metatable); + setrawgcrefnull(t->metatable); t->asize = 0; /* In case the array allocation fails. */ t->hmask = 0; nilnode = &G(L)->nilnode; @@ -555,6 +556,7 @@ TValue *lj_tab_setstr(lua_State *L, GCtab *t, const GCstr *key) if (tvisstr(&n->key) && strV(&n->key) == key) return &n->val; } while ((n = nextnode(n))); + printf("tab_setstr %s\n", strdata(key)); setstrV(L, &k, key); return lj_tab_newkey(L, t, &k); } diff --git a/luajit/src/lj_trace.c b/luajit/src/lj_trace.c index 0e948e8d..13fd83dd 100644 --- a/luajit/src/lj_trace.c +++ b/luajit/src/lj_trace.c @@ -148,8 +148,7 @@ static void trace_save(jit_State *J, GCtrace *T) size_t szins = (J->cur.nins-J->cur.nk)*sizeof(IRIns); char *p = (char *)T + sztr; memcpy(T, &J->cur, sizeof(GCtrace)); - setgcrefr(T->nextgc, J2G(J)->gc.root); - setgcrefp(J2G(J)->gc.root, T); + lj_gc_addtoroot(J2G(J), gcref(T->nextgc)); newwhite(J2G(J), T); T->gct = ~LJ_TTRACE; T->ir = (IRIns *)p - J->cur.nk; /* The IR has already been copied above. */ diff --git a/luajit/src/lua51.pdb b/luajit/src/lua51.pdb new file mode 100644 index 00000000..2772f9a4 Binary files /dev/null and b/luajit/src/lua51.pdb differ diff --git a/luajit/src/luaconf.h b/luajit/src/luaconf.h index 7cd2edb5..481e8a43 100644 --- a/luajit/src/luaconf.h +++ b/luajit/src/luaconf.h @@ -151,4 +151,6 @@ #define luai_apicheck(L, o) { (void)L; } #endif +#define LUA_ZERO_OUT_MEMORY 1 + #endif diff --git a/luajit/src/luajit.pdb b/luajit/src/luajit.pdb new file mode 100644 index 00000000..6bf5ce1f Binary files /dev/null and b/luajit/src/luajit.pdb differ diff --git a/luajit/src/luajit.vcxproj.filters b/luajit/src/luajit.vcxproj.filters new file mode 100644 index 00000000..1c820836 --- /dev/null +++ b/luajit/src/luajit.vcxproj.filters @@ -0,0 +1,453 @@ + + + + + {41e5258f-7488-4c05-9d59-cf5a9c8338e9} + + + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + Source + + + \ No newline at end of file diff --git a/luajit/src/luajit.vcxproj.sln b/luajit/src/luajit.vcxproj.sln new file mode 100644 index 00000000..4c5977e3 --- /dev/null +++ b/luajit/src/luajit.vcxproj.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36705.20 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luajit.vcxproj", "luajit.vcxproj.vcxproj", "{CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Debug|Win32.ActiveCfg = Debug|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Debug|Win32.Build.0 = Debug|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Debug|x64.ActiveCfg = Debug|x64 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Debug|x64.Build.0 = Debug|x64 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Debug|x86.ActiveCfg = Debug|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Debug|x86.Build.0 = Debug|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Release|Win32.ActiveCfg = Release|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Release|Win32.Build.0 = Release|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Release|x64.ActiveCfg = Release|x64 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Release|x64.Build.0 = Release|x64 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Release|x86.ActiveCfg = Release|Win32 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {57FC1214-32DE-4DAB-9EC3-6C5121943DCE} + EndGlobalSection +EndGlobal diff --git a/luajit/src/luajit.vcxproj.vcxproj b/luajit/src/luajit.vcxproj.vcxproj new file mode 100644 index 00000000..df5408c3 --- /dev/null +++ b/luajit/src/luajit.vcxproj.vcxproj @@ -0,0 +1,241 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + 17.0 + {CC4A9E1A-1380-CC74-30A1-0648E5D47BFE} + Win32Proj + + + + Makefile + true + v143 + + + Makefile + true + v143 + + + Makefile + false + v143 + + + Makefile + false + v143 + + + + + + + + + + + + + + + + + + + + + msvcbuild.bat + LuaJIT.exe + _DEBUG;$(NMakePreprocessorDefinitions) + + + msvcbuild.bat + LuaJIT.exe + _DEBUG;$(NMakePreprocessorDefinitions) + + + msvcbuild.bat + LuaJIT.exe + NDEBUG;$(NMakePreprocessorDefinitions) + + + msvcbuild_86.bat + LuaJIT.exe + NDEBUG;$(NMakePreprocessorDefinitions) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/luajit/src/luajit.vcxproj.vcxproj.user b/luajit/src/luajit.vcxproj.vcxproj.user new file mode 100644 index 00000000..88a55094 --- /dev/null +++ b/luajit/src/luajit.vcxproj.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/luajit/src/luajit.vcxproj/Debug/luajit.vcxproj.log b/luajit/src/luajit.vcxproj/Debug/luajit.vcxproj.log new file mode 100644 index 00000000..a37a4e68 --- /dev/null +++ b/luajit/src/luajit.vcxproj/Debug/luajit.vcxproj.log @@ -0,0 +1,98 @@ + minilua.c + Bibliothek "minilua.lib" und Objekt "minilua.exp" werden erstellt. + buildvm.c + buildvm_asm.c + buildvm_fold.c + buildvm_lib.c + buildvm_peobj.c + Code wird generiert... + Bibliothek "buildvm.lib" und Objekt "buildvm.exp" werden erstellt. + lj_alloc.c + lj_api.c + lj_asm.c + lj_assert.c + lj_bc.c + lj_bcread.c + lj_bcwrite.c + lj_buf.c + lj_carith.c + lj_ccall.c + lj_ccallback.c +lj_ccallback.c(122): warning C5287: Operanden sind unterschiedliche Enumerationstypen „x86Op“ und „“. Verwenden Sie eine explizite Koersion, um diese Warnung zu unterdrücken. +lj_ccallback.c(131): warning C5287: Operanden sind unterschiedliche Enumerationstypen „x86Op“ und „“. Verwenden Sie eine explizite Koersion, um diese Warnung zu unterdrücken. + lj_cconv.c + lj_cdata.c + lj_char.c + lj_clib.c + lj_cparse.c + lj_crecord.c + lj_ctype.c + lj_debug.c + lj_dispatch.c + Code wird generiert... + Kompilieren... + lj_err.c + lj_ffrecord.c + lj_func.c + lj_gc.c + lj_gdbjit.c + lj_ir.c + lj_lex.c + lj_lib.c + lj_load.c + lj_mcode.c + lj_meta.c + lj_obj.c + lj_opt_dce.c + lj_opt_fold.c + lj_opt_loop.c + lj_opt_mem.c + lj_opt_narrow.c + lj_opt_sink.c + lj_opt_split.c + lj_parse.c + Code wird generiert... + Kompilieren... + lj_prng.c + lj_profile.c + lj_record.c + lj_serialize.c + lj_snap.c + lj_state.c + lj_str.c + lj_strfmt.c + lj_strfmt_num.c + lj_strscan.c + lj_tab.c + lj_trace.c + lj_udata.c + lj_vmevent.c + lj_vmmath.c + lib_aux.c + lib_base.c + lib_bit.c + lib_buffer.c + lib_debug.c + Code wird generiert... + Kompilieren... + lib_ffi.c + lib_init.c + lib_io.c + lib_jit.c + lib_math.c + lib_os.c + lib_package.c + lib_string.c + lib_table.c + Code wird generiert... + Kompilieren... + gmod.cpp +gmod.cpp(20): warning C4099: "lua_Debug": Geben Sie den zuerst unter Verwendung von "struct" und jetzt unter Verwendung von "class" gesehenen Namen ein + V:\GitHub\gmod-holylib\luajit\src\lua.h(360): note: Siehe Deklaration von "lua_Debug" + Code wird generiert... + Bibliothek "lua51.lib" und Objekt "lua51.exp" werden erstellt. +LINK : warning LNK4217: Das in "_lua_newuserdata" definierte Symbol "lj_api.obj" wird durch "gmod.obj" in die Funktion "_GMOD_LuaCreateEmptyUserdata" importiert. + luajit.c + Bibliothek "luajit.lib" und Objekt "luajit.exp" werden erstellt. + + === Successfully built LuaJIT for Windows/x86 === diff --git a/luajit/src/luajit.vcxproj/x64/Debug/luajit.vcxproj.log b/luajit/src/luajit.vcxproj/x64/Debug/luajit.vcxproj.log new file mode 100644 index 00000000..9d708e9d --- /dev/null +++ b/luajit/src/luajit.vcxproj/x64/Debug/luajit.vcxproj.log @@ -0,0 +1,165 @@ + minilua.c + Bibliothek "minilua.lib" und Objekt "minilua.exp" werden erstellt. + buildvm.c +.\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + buildvm_asm.c + buildvm_fold.c +.\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + buildvm_lib.c +.\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + buildvm_peobj.c + Code wird generiert... + Bibliothek "buildvm.lib" und Objekt "buildvm.exp" werden erstellt. + lj_alloc.c + lj_api.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_asm.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_assert.c + lj_bc.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_bcread.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_bcwrite.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_buf.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_carith.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_ccall.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_ccallback.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int +lj_ccallback.c(122): warning C5287: Operanden sind unterschiedliche Enumerationstypen „x86Op“ und „“. Verwenden Sie eine explizite Koersion, um diese Warnung zu unterdrücken. +lj_ccallback.c(128): warning C5287: Operanden sind unterschiedliche Enumerationstypen „x86Op“ und „“. Verwenden Sie eine explizite Koersion, um diese Warnung zu unterdrücken. + lj_cconv.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_cdata.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_char.c + lj_clib.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_cparse.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_crecord.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_ctype.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_debug.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_dispatch.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + Code wird generiert... + Kompilieren... + lj_err.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_ffrecord.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_func.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_gc.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_gdbjit.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_ir.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_lex.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_lib.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_load.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_mcode.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_meta.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_obj.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_dce.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_fold.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_loop.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_mem.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_narrow.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_sink.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_opt_split.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_parse.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + Code wird generiert... + Kompilieren... + lj_prng.c + lj_profile.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_record.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_serialize.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_snap.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_state.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_str.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_strfmt.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_strfmt_num.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_strscan.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_tab.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_trace.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_udata.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_vmevent.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lj_vmmath.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_aux.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_base.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_bit.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_buffer.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_debug.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + Code wird generiert... + Kompilieren... + lib_ffi.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_init.c + lib_io.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_jit.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_math.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_os.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_package.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_string.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + lib_table.c +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): warning C4013: "setrawgcreft" undefiniert; Annahme: extern mit Rückgabetyp int + Code wird generiert... + Kompilieren... + gmod.cpp +V:\GitHub\gmod-holylib\luajit\src\lj_obj.h(959): error C3861: "setrawgcreft": Bezeichner wurde nicht gefunden. +gmod.cpp(20): warning C4099: "lua_Debug": Geben Sie den zuerst unter Verwendung von "struct" und jetzt unter Verwendung von "class" gesehenen Namen ein + V:\GitHub\gmod-holylib\luajit\src\lua.h(360): note: Siehe Deklaration von "lua_Debug" + Code wird generiert... + + ******************************************************* + *** Build FAILED -- Please check the error messages *** + ******************************************************* +C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(45,5): error MSB3073: Der Befehl "msvcbuild.bat" wurde mit dem Code -1 beendet. diff --git a/luajit/src/msvcbuild_86.bat b/luajit/src/msvcbuild_86.bat index f4cdc158..7d5b019a 100644 --- a/luajit/src/msvcbuild_86.bat +++ b/luajit/src/msvcbuild_86.bat @@ -16,7 +16,7 @@ @rem Add more debug flags here, e.g. DEBUGCFLAGS=/DLUA_USE_APICHECK @set nogc64=true @set DEBUGCFLAGS= -@set LJCOMPILE=cl /nologo /c /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline +@set LJCOMPILE=cl /nologo /c /Od /Zi /Oy- /Ob0 /W3 /D_CRT_SECURE_NO_DEPRECATE /D_CRT_STDIO_INLINE=__declspec(dllexport)__inline @set LJLINK=link /nologo @set LJMT=mt /nologo @set LJLIB=lib /nologo /nodefaultlib @@ -38,12 +38,12 @@ if exist minilua.exe.manifest^ %LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe @endlocal -@set DASMFLAGS=-D WIN -D JIT -D FFI -D ENDIAN_LE -D FPU -D P64 +@set DASMFLAGS=-D WIN -D FFI -D ENDIAN_LE -D FPU -D P64 @set LJARCH=x86 @minilua @if errorlevel 8 goto :NO32 @set DASC=vm_x86.dasc -@set DASMFLAGS=-D WIN -D JIT -D FFI -D ENDIAN_LE -D FPU +@set DASMFLAGS=-D WIN -D FFI -D ENDIAN_LE -D FPU @set LJARCH=x86 @set LJCOMPILE=%LJCOMPILE% /arch:SSE2 @goto :DA diff --git a/luajit/src/vc140.pdb b/luajit/src/vc140.pdb new file mode 100644 index 00000000..0dfd9141 Binary files /dev/null and b/luajit/src/vc140.pdb differ