From 65e312c749478df27e6d3ec9f23f516d7fc91849 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 23 Oct 2013 14:58:04 +0000 Subject: Avoid stack verificaton steps in macros when called by assembler. It uses them differently. Also suspend optimization pass. --- generic/tclAssembly.c | 2 ++ generic/tclCompile.c | 2 +- generic/tclCompile.h | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/generic/tclAssembly.c b/generic/tclAssembly.c index a833729..83f48fa 100644 --- a/generic/tclAssembly.c +++ b/generic/tclAssembly.c @@ -28,6 +28,8 @@ *- returnCodeBranch */ +#define TCL_ASSEMBLE + #include "tclInt.h" #include "tclCompile.h" #include "tclOOInt.h" diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 374816b..c520a33 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -735,7 +735,7 @@ TclSetByteCodeFromAny( * faster code in some cases, and more compact code in more. */ - if (Tcl_GetMaster(interp) == NULL && + if (0 && Tcl_GetMaster(interp) == NULL && !Tcl_LimitTypeEnabled(interp, TCL_LIMIT_COMMANDS|TCL_LIMIT_TIME) && IsCompactibleCompileEnv(interp, &compEnv)) { TclFreeCompileEnv(&compEnv); diff --git a/generic/tclCompile.h b/generic/tclCompile.h index df3a7af..6f5720c 100644 --- a/generic/tclCompile.h +++ b/generic/tclCompile.h @@ -1246,7 +1246,7 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst); */ -#if defined(TCL_COMPILE_DEBUG) +#if defined(TCL_COMPILE_DEBUG) && !defined(TCL_ASSEMBLE) #define TclEmitInt1(i, envPtr) \ do { \ if ((envPtr)->codeNext == (envPtr)->codeEnd) { \ @@ -1271,7 +1271,7 @@ MODULE_SCOPE Tcl_Obj *TclNewInstNameObj(unsigned char inst); } while (0) #endif -#if defined(TCL_COMPILE_DEBUG) +#if defined(TCL_COMPILE_DEBUG) && !defined(TCL_ASSEMBLE) #define TclEmitInt4(i, envPtr) \ do { \ if (((envPtr)->codeNext + 4) > (envPtr)->codeEnd) { \ -- cgit v0.12