aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2012-07-07 20:36:35 +0200
committerMike Pall <mike>2012-07-07 20:36:35 +0200
commit6a67fa8a4b2b038e0dca676303545da47f2b9773 (patch)
tree4e34a2e21e2a5a9b4a7a59056967f5920266db13 /src
parent7c056488d96434fc9996ba8b2b2a684f03472b62 (diff)
downloadluajit-6a67fa8a4b2b038e0dca676303545da47f2b9773.tar.gz
luajit-6a67fa8a4b2b038e0dca676303545da47f2b9773.tar.bz2
luajit-6a67fa8a4b2b038e0dca676303545da47f2b9773.zip
Finally fix target detection for msvcbuild.bat.
Famous last words.
Diffstat (limited to 'src')
-rw-r--r--src/host/genminilua.lua4
-rw-r--r--src/host/minilua.c204
-rw-r--r--src/msvcbuild.bat20
3 files changed, 11 insertions, 217 deletions
diff --git a/src/host/genminilua.lua b/src/host/genminilua.lua
index 7282cf16..587d5a8d 100644
--- a/src/host/genminilua.lua
+++ b/src/host/genminilua.lua
@@ -62,7 +62,7 @@ int main(int argc, char **argv){
62 lua_State *L = luaL_newstate(); 62 lua_State *L = luaL_newstate();
63 int i; 63 int i;
64 luaL_openlibs(L); 64 luaL_openlibs(L);
65 if (argc < 2) return 1; 65 if (argc < 2) return sizeof(void *);
66 lua_createtable(L, 0, 1); 66 lua_createtable(L, 0, 1);
67 lua_pushstring(L, argv[1]); 67 lua_pushstring(L, argv[1]);
68 lua_rawseti(L, -2, 0); 68 lua_rawseti(L, -2, 0);
@@ -226,7 +226,7 @@ local function strip_unused3(src)
226 src = gsub(src, "trydecpoint%(ls,seminfo%)", 226 src = gsub(src, "trydecpoint%(ls,seminfo%)",
227 "luaX_lexerror(ls,\"malformed number\",TK_NUMBER)") 227 "luaX_lexerror(ls,\"malformed number\",TK_NUMBER)")
228 src = gsub(src, "int c=luaZ_lookahead%b();", "") 228 src = gsub(src, "int c=luaZ_lookahead%b();", "")
229 src = gsub(src, "luaL_register%(L,\"coroutine\",co_funcs%);\nreturn 2;", 229 src = gsub(src, "luaL_register%(L,[^,]*,co_funcs%);\nreturn 2;",
230 "return 1;") 230 "return 1;")
231 src = gsub(src, "getfuncname%b():", "NULL:") 231 src = gsub(src, "getfuncname%b():", "NULL:")
232 src = gsub(src, "getobjname%b():", "NULL:") 232 src = gsub(src, "getobjname%b():", "NULL:")
diff --git a/src/host/minilua.c b/src/host/minilua.c
index 4db07033..77e6349c 100644
--- a/src/host/minilua.c
+++ b/src/host/minilua.c
@@ -1198,56 +1198,6 @@ luaV_execute(L,1);
1198L->nCcalls--; 1198L->nCcalls--;
1199luaC_checkGC(L); 1199luaC_checkGC(L);
1200} 1200}
1201static void resume(lua_State*L,void*ud){
1202StkId firstArg=cast(StkId,ud);
1203CallInfo*ci=L->ci;
1204if(L->status==0){
1205if(luaD_precall(L,firstArg-1,(-1))!=0)
1206return;
1207}
1208else{
1209L->status=0;
1210if(!f_isLua(ci)){
1211if(luaD_poscall(L,firstArg))
1212L->top=L->ci->top;
1213}
1214else
1215L->base=L->ci->base;
1216}
1217luaV_execute(L,cast_int(L->ci-L->base_ci));
1218}
1219static int resume_error(lua_State*L,const char*msg){
1220L->top=L->ci->base;
1221setsvalue(L,L->top,luaS_new(L,msg));
1222incr_top(L);
1223return 2;
1224}
1225static int lua_resume(lua_State*L,int nargs){
1226int status;
1227if(L->status!=1&&(L->status!=0||L->ci!=L->base_ci))
1228return resume_error(L,"cannot resume non-suspended coroutine");
1229if(L->nCcalls>=200)
1230return resume_error(L,"C stack overflow");
1231L->baseCcalls=++L->nCcalls;
1232status=luaD_rawrunprotected(L,resume,L->top-nargs);
1233if(status!=0){
1234L->status=cast_byte(status);
1235luaD_seterrorobj(L,status,L->top);
1236L->ci->top=L->top;
1237}
1238else{
1239status=L->status;
1240}
1241--L->nCcalls;
1242return status;
1243}
1244static int lua_yield(lua_State*L,int nresults){
1245if(L->nCcalls>L->baseCcalls)
1246luaG_runerror(L,"attempt to yield across metamethod/C-call boundary");
1247L->base=L->top-nresults;
1248L->status=1;
1249return-1;
1250}
1251static int luaD_pcall(lua_State*L,Pfunc func,void*u, 1201static int luaD_pcall(lua_State*L,Pfunc func,void*u,
1252ptrdiff_t old_top,ptrdiff_t ef){ 1202ptrdiff_t old_top,ptrdiff_t ef){
1253int status; 1203int status;
@@ -2362,18 +2312,6 @@ luaZ_freebuffer(L,&g->buff);
2362freestack(L,L); 2312freestack(L,L);
2363(*g->frealloc)(g->ud,fromstate(L),state_size(LG),0); 2313(*g->frealloc)(g->ud,fromstate(L),state_size(LG),0);
2364} 2314}
2365static lua_State*luaE_newthread(lua_State*L){
2366lua_State*L1=tostate(luaM_malloc(L,state_size(lua_State)));
2367luaC_link(L,obj2gco(L1),8);
2368preinit_state(L1,G(L));
2369stack_init(L1,L);
2370setobj(L,gt(L1),gt(L));
2371L1->hookmask=L->hookmask;
2372L1->basehookcount=L->basehookcount;
2373L1->hook=L->hook;
2374resethookcount(L1);
2375return L1;
2376}
2377static void luaE_freethread(lua_State*L,lua_State*L1){ 2315static void luaE_freethread(lua_State*L,lua_State*L1){
2378luaF_close(L1,L1->stack); 2316luaF_close(L1,L1->stack);
2379freestack(L,L1); 2317freestack(L,L1);
@@ -5413,34 +5351,12 @@ L->ci->top=L->top+size;
5413} 5351}
5414return res; 5352return res;
5415} 5353}
5416static void lua_xmove(lua_State*from,lua_State*to,int n){
5417int i;
5418if(from==to)return;
5419api_checknelems(from,n);
5420luai_apicheck(from,G(from)==G(to));
5421luai_apicheck(from,to->ci->top-to->top>=n);
5422from->top-=n;
5423for(i=0;i<n;i++){
5424setobj(to,to->top++,from->top+i);
5425}
5426}
5427static void lua_setlevel(lua_State*from,lua_State*to){
5428to->nCcalls=from->nCcalls;
5429}
5430static lua_CFunction lua_atpanic(lua_State*L,lua_CFunction panicf){ 5354static lua_CFunction lua_atpanic(lua_State*L,lua_CFunction panicf){
5431lua_CFunction old; 5355lua_CFunction old;
5432old=G(L)->panic; 5356old=G(L)->panic;
5433G(L)->panic=panicf; 5357G(L)->panic=panicf;
5434return old; 5358return old;
5435} 5359}
5436static lua_State*lua_newthread(lua_State*L){
5437lua_State*L1;
5438luaC_checkGC(L);
5439L1=luaE_newthread(L);
5440setthvalue(L,L->top,L1);
5441api_incr_top(L);
5442return L1;
5443}
5444static int lua_gettop(lua_State*L){ 5360static int lua_gettop(lua_State*L){
5445return cast_int(L->top-L->base); 5361return cast_int(L->top-L->base);
5446} 5362}
@@ -5594,10 +5510,6 @@ case 2:return pvalue(o);
5594default:return NULL; 5510default:return NULL;
5595} 5511}
5596} 5512}
5597static lua_State*lua_tothread(lua_State*L,int idx){
5598StkId o=index2adr(L,idx);
5599return(!ttisthread(o))?NULL:thvalue(o);
5600}
5601static void lua_pushnil(lua_State*L){ 5513static void lua_pushnil(lua_State*L){
5602setnilvalue(L->top); 5514setnilvalue(L->top);
5603api_incr_top(L); 5515api_incr_top(L);
@@ -5876,9 +5788,6 @@ luaZ_init(L,&z,reader,data);
5876status=luaD_protectedparser(L,&z,chunkname); 5788status=luaD_protectedparser(L,&z,chunkname);
5877return status; 5789return status;
5878} 5790}
5879static int lua_status(lua_State*L){
5880return L->status;
5881}
5882static int lua_error(lua_State*L){ 5791static int lua_error(lua_State*L){
5883api_checknelems(L,1); 5792api_checknelems(L,1);
5884luaG_errormsg(L); 5793luaG_errormsg(L);
@@ -6508,114 +6417,6 @@ static const luaL_Reg base_funcs[]={
6508{"unpack",luaB_unpack}, 6417{"unpack",luaB_unpack},
6509{NULL,NULL} 6418{NULL,NULL}
6510}; 6419};
6511static const char*const statnames[]=
6512{"running","suspended","normal","dead"};
6513static int costatus(lua_State*L,lua_State*co){
6514if(L==co)return 0;
6515switch(lua_status(co)){
6516case 1:
6517return 1;
6518case 0:{
6519lua_Debug ar;
6520if(lua_getstack(co,0,&ar)>0)
6521return 2;
6522else if(lua_gettop(co)==0)
6523return 3;
6524else
6525return 1;
6526}
6527default:
6528return 3;
6529}
6530}
6531static int luaB_costatus(lua_State*L){
6532lua_State*co=lua_tothread(L,1);
6533luaL_argcheck(L,co,1,"coroutine expected");
6534lua_pushstring(L,statnames[costatus(L,co)]);
6535return 1;
6536}
6537static int auxresume(lua_State*L,lua_State*co,int narg){
6538int status=costatus(L,co);
6539if(!lua_checkstack(co,narg))
6540luaL_error(L,"too many arguments to resume");
6541if(status!=1){
6542lua_pushfstring(L,"cannot resume %s coroutine",statnames[status]);
6543return-1;
6544}
6545lua_xmove(L,co,narg);
6546lua_setlevel(L,co);
6547status=lua_resume(co,narg);
6548if(status==0||status==1){
6549int nres=lua_gettop(co);
6550if(!lua_checkstack(L,nres+1))
6551luaL_error(L,"too many results to resume");
6552lua_xmove(co,L,nres);
6553return nres;
6554}
6555else{
6556lua_xmove(co,L,1);
6557return-1;
6558}
6559}
6560static int luaB_coresume(lua_State*L){
6561lua_State*co=lua_tothread(L,1);
6562int r;
6563luaL_argcheck(L,co,1,"coroutine expected");
6564r=auxresume(L,co,lua_gettop(L)-1);
6565if(r<0){
6566lua_pushboolean(L,0);
6567lua_insert(L,-2);
6568return 2;
6569}
6570else{
6571lua_pushboolean(L,1);
6572lua_insert(L,-(r+1));
6573return r+1;
6574}
6575}
6576static int luaB_auxwrap(lua_State*L){
6577lua_State*co=lua_tothread(L,lua_upvalueindex(1));
6578int r=auxresume(L,co,lua_gettop(L));
6579if(r<0){
6580if(lua_isstring(L,-1)){
6581luaL_where(L,1);
6582lua_insert(L,-2);
6583lua_concat(L,2);
6584}
6585lua_error(L);
6586}
6587return r;
6588}
6589static int luaB_cocreate(lua_State*L){
6590lua_State*NL=lua_newthread(L);
6591luaL_argcheck(L,lua_isfunction(L,1)&&!lua_iscfunction(L,1),1,
6592"Lua function expected");
6593lua_pushvalue(L,1);
6594lua_xmove(L,NL,1);
6595return 1;
6596}
6597static int luaB_cowrap(lua_State*L){
6598luaB_cocreate(L);
6599lua_pushcclosure(L,luaB_auxwrap,1);
6600return 1;
6601}
6602static int luaB_yield(lua_State*L){
6603return lua_yield(L,lua_gettop(L));
6604}
6605static int luaB_corunning(lua_State*L){
6606if(lua_pushthread(L))
6607lua_pushnil(L);
6608return 1;
6609}
6610static const luaL_Reg co_funcs[]={
6611{"create",luaB_cocreate},
6612{"resume",luaB_coresume},
6613{"running",luaB_corunning},
6614{"status",luaB_costatus},
6615{"wrap",luaB_cowrap},
6616{"yield",luaB_yield},
6617{NULL,NULL}
6618};
6619static void auxopen(lua_State*L,const char*name, 6420static void auxopen(lua_State*L,const char*name,
6620lua_CFunction f,lua_CFunction u){ 6421lua_CFunction f,lua_CFunction u){
6621lua_pushcfunction(L,u); 6422lua_pushcfunction(L,u);
@@ -6640,8 +6441,7 @@ lua_setglobal(L,"newproxy");
6640} 6441}
6641static int luaopen_base(lua_State*L){ 6442static int luaopen_base(lua_State*L){
6642base_open(L); 6443base_open(L);
6643luaL_register(L,"coroutine",co_funcs); 6444return 1;
6644return 2;
6645} 6445}
6646#define aux_getn(L,n)(luaL_checktype(L,n,5),luaL_getn(L,n)) 6446#define aux_getn(L,n)(luaL_checktype(L,n,5),luaL_getn(L,n))
6647static int tinsert(lua_State*L){ 6447static int tinsert(lua_State*L){
@@ -7887,7 +7687,7 @@ int main(int argc,char**argv){
7887lua_State*L=luaL_newstate(); 7687lua_State*L=luaL_newstate();
7888int i; 7688int i;
7889luaL_openlibs(L); 7689luaL_openlibs(L);
7890if(argc<2)return 1; 7690if(argc<2)return sizeof(void*);
7891lua_createtable(L,0,1); 7691lua_createtable(L,0,1);
7892lua_pushstring(L,argv[1]); 7692lua_pushstring(L,argv[1]);
7893lua_rawseti(L,-2,0); 7693lua_rawseti(L,-2,0);
diff --git a/src/msvcbuild.bat b/src/msvcbuild.bat
index a5ae16ac..ba5230ec 100644
--- a/src/msvcbuild.bat
+++ b/src/msvcbuild.bat
@@ -29,20 +29,14 @@
29if exist minilua.exe.manifest^ 29if exist minilua.exe.manifest^
30 %LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe 30 %LJMT% -manifest minilua.exe.manifest -outputresource:minilua.exe
31 31
32@set DASMFLAGS=-D WIN -D JIT -D FFI -D P64
33@set LJARCH=x64
34@minilua
35@if errorlevel 8 goto :X64
32@set DASMFLAGS=-D WIN -D JIT -D FFI 36@set DASMFLAGS=-D WIN -D JIT -D FFI
33@set DASMX64=-D P64 37@set LJARCH=x86
34@if "%TARGET_CPU%"=="AMD64" goto :X64
35@if "%TARGET_CPU%"=="X64" goto :X64
36@if "%TARGET_CPU%"=="x64" goto :X64
37@if "%CPU%"=="AMD64" goto :X64
38@if "%CPU%"=="X64" goto :X64
39@if "%CPU%"=="x64" goto :X64
40@if "%Platform%"=="AMD64" goto :X64
41@if "%Platform%"=="X64" goto :X64
42@if "%Platform%"=="x64" goto :X64
43@set DASMX64=
44:X64 38:X64
45minilua %DASM% -LN %DASMFLAGS% %DASMX64% -o host\buildvm_arch.h vm_x86.dasc 39minilua %DASM% -LN %DASMFLAGS% -o host\buildvm_arch.h vm_x86.dasc
46@if errorlevel 1 goto :BAD 40@if errorlevel 1 goto :BAD
47 41
48%LJCOMPILE% /I "." /I %DASMDIR% host\buildvm*.c 42%LJCOMPILE% /I "." /I %DASMDIR% host\buildvm*.c
@@ -103,7 +97,7 @@ if exist luajit.exe.manifest^
103 97
104@del *.obj *.manifest minilua.exe buildvm.exe 98@del *.obj *.manifest minilua.exe buildvm.exe
105@echo. 99@echo.
106@echo === Successfully built LuaJIT === 100@echo === Successfully built LuaJIT for Windows/%LJARCH% ===
107 101
108@goto :END 102@goto :END
109:BAD 103:BAD