diff --git a/src/lj_debug.c b/src/lj_debug.c index 8166fcc0..92c216f9 100644 --- a/src/lj_debug.c +++ b/src/lj_debug.c @@ -72,9 +72,18 @@ static BCPos debug_framepc(lua_State *L, GCfunc *fn, cTValue *nextframe) /* Lua function below errfunc/gc/hook: find cframe to get the PC. */ void *cf = cframe_raw(L->cframe); TValue *f = L->base-1; - if (cf == NULL) - return NO_BCPOS; - while (f > nextframe) { + for (;;) { + if (cf == NULL) + return NO_BCPOS; + while (cframe_nres(cf) < 0) { + if (f >= restorestack(L, -cframe_nres(cf))) + break; + cf = cframe_raw(cframe_prev(cf)); + if (cf == NULL) + return NO_BCPOS; + } + if (f < nextframe) + break; if (frame_islua(f)) { f = frame_prevl(f); } else { @@ -83,8 +92,6 @@ static BCPos debug_framepc(lua_State *L, GCfunc *fn, cTValue *nextframe) f = frame_prevd(f); } } - if (cframe_prev(cf)) - cf = cframe_raw(cframe_prev(cf)); ins = cframe_pc(cf); } } diff --git a/src/ljamalg.c b/src/ljamalg.c index 29fed380..6a4d6022 100644 --- a/src/ljamalg.c +++ b/src/ljamalg.c @@ -6,7 +6,7 @@ /* +--------------------------------------------------------------------------+ | WARNING: Compiling the amalgamation needs a lot of virtual memory | -| (around 200 MB with GCC 4.x)! If you don't have enough physical memory | +| (around 300 MB with GCC 4.x)! If you don't have enough physical memory | | your machine will start swapping to disk and the compile will not finish | | within a reasonable amount of time. | | So either compile on a bigger machine or use the non-amalgamated build. | diff --git a/src/xedkbuild.bat b/src/xedkbuild.bat index 375f1955..adbce8be 100644 --- a/src/xedkbuild.bat +++ b/src/xedkbuild.bat @@ -54,13 +54,13 @@ buildvm -m folddef -o lj_folddef.h lj_opt_fold.c @if errorlevel 1 goto :BAD @rem ---- Cross compiler ---- -@set LJCOMPILE="%XEDK%\bin\win32\cl" /nologo /c /MT /O2 /W3 /GF /Gm- /GR- /GS- /Gy /openmp- /D_CRT_SECURE_NO_DEPRECATE /DNDEBUG /D_XBOX /D_LIB /DLUAJIT_USE_SYSMALLOC -@set LJLIB="%XEDK%\bin\win32\lib" /nologo -@set INCLUDE="%XEDK%\include\xbox" +@set "LJCOMPILE=%XEDK%\bin\win32\cl /nologo /c /MT /O2 /W3 /GF /Gm- /GR- /GS- /Gy /openmp- /D_CRT_SECURE_NO_DEPRECATE /DNDEBUG /D_XBOX /D_LIB /DLUAJIT_USE_SYSMALLOC" +@set "LJLIB=%XEDK%\bin\win32\lib /nologo" +@set "INCLUDE=%XEDK%\include\xbox" @if "%1" neq "debug" goto :NODEBUG @shift -@set LJCOMPILE="%LJCOMPILE%" /Zi +@set "LJCOMPILE=%LJCOMPILE% /Zi" :NODEBUG @if "%1"=="amalg" goto :AMALG %LJCOMPILE% /DLUA_BUILD_AS_DLL lj_*.c lib_*.c