Posted to tcl by miguel at Sat Nov 21 10:41:26 GMT 2015view raw

  1. Index: generic/tclExecute.c
  2. ==================================================================
  3. --- generic/tclExecute.c
  4. +++ generic/tclExecute.c
  5. @@ -2035,10 +2035,29 @@
  6. int size = sizeof(TEBCdata) - 1
  7. + (codePtr->maxStackDepth + codePtr->maxExceptDepth)
  8. * sizeof(void *);
  9. int numWords = (size + sizeof(Tcl_Obj *) - 1) / sizeof(Tcl_Obj *);
  10.  
  11. + /*
  12. + * Shortcut for compiled empty scripts
  13. + */
  14. +
  15. + if (!codePtr->source) {
  16. + if (0) {
  17. + Tcl_ResetResult(interp);
  18. + return TCL_OK;
  19. + } else {
  20. + Tcl_Panic("Bytecode without source: precompiled? %i",
  21. + !!(codePtr->flags & TCL_BYTECODE_PRECOMPILED));
  22. + }
  23. + }
  24. +
  25. + if (codePtr->source && (*codePtr->source == '\0')) {
  26. + Tcl_ResetResult(interp);
  27. + return TCL_OK;
  28. + }
  29. +
  30. codePtr->refCount++;
  31.  
  32. /*
  33. * Reserve the stack, setup the TEBCdataPtr (TD) and CallFrame
  34. *

Comments

Posted by mig at Sat Nov 21 10:45:20 GMT 2015 [text] [code]

At ease, false alarm: #3 0x00000000005818d0 in Tcl_Panic (format=0x617580 "Bytecode without source: precompiled? %i") at /home/mig/DEVEL/tcl-core/trunk/generic/tclPanic.c:160 #4 0x000000000050a1b7 in TclNRExecuteByteCode (interp=0x13db450, codePtr=0x151e9f0) at /home/mig/DEVEL/tcl-core/trunk/generic/tclExecute.c:2049 #5 0x00000000004dbf8d in ExecConstantExprTree (interp=0x13db450, nodes=0x1509510, index=1, litObjvPtr=0x7ffc56e71b90) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2203 #6 0x00000000004ddc0b in CompileExprTree (interp=0x13db450, nodes=0x1509510, index=0, litObjvPtr=0x7ffc56e71b90, funcObjv=0x0, tokenPtr=0x14f83f0, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2472 #7 0x00000000004dbd38 in TclCompileExpr (interp=0x13db450, script=0x150b0f3 "-1 !=[set pos [string last \"_\" $locale]]} {\n\tset locale [string range $locale 0 $pos-1]\n\tif { \"_\" ne [string index $locale end] } {\n\t lappend loclist $locale\n\t}\n }\n if {\"\" ne [lindex $loclist"..., numBytes=40, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2143 #8 0x00000000004e3ea3 in TclCompileExprWords (interp=0x13db450, tokenPtr=0x7ffc56e71f60, numWords=1, envPtr=0x7ffc56e72190) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompile.c:2614 #9 0x00000000004d2396 in TclCompileWhileCmd (interp=0x13db450, parsePtr=0x7ffc56e71ed0, cmdPtr=0x13e3ab0, envPtr=0x7ffc56e72190)

Posted by mig at Sat Nov 21 10:46:36 GMT 2015 [text] [code]

(try again) <p>#3 0x00000000005818d0 in Tcl_Panic (format=0x617580 "Bytecode without source: precompiled? %i") at /home/mig/DEVEL/tcl-core/trunk/generic/tclPanic.c:160 <p>#4 0x000000000050a1b7 in TclNRExecuteByteCode (interp=0x13db450, codePtr=0x151e9f0) at /home/mig/DEVEL/tcl-core/trunk/generic/tclExecute.c:2049 <p>#5 0x00000000004dbf8d in ExecConstantExprTree (interp=0x13db450, nodes=0x1509510, index=1, litObjvPtr=0x7ffc56e71b90) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2203 <p>#6 0x00000000004ddc0b in CompileExprTree (interp=0x13db450, nodes=0x1509510, index=0, litObjvPtr=0x7ffc56e71b90, funcObjv=0x0, tokenPtr=0x14f83f0, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2472 <p>#7 0x00000000004dbd38 in TclCompileExpr (interp=0x13db450, script=0x150b0f3 "-1 !=[set pos [string last \"_\" $locale]]} {\n\tset locale [string range $locale 0 $pos-1]\n\tif { \"_\" ne [string index $locale end] } {\n\t lappend loclist $locale\n\t}\n }\n if {\"\" ne [lindex $loclist"..., numBytes=40, envPtr=0x7ffc56e72190, optimize=1) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompExpr.c:2143 <p>#8 0x00000000004e3ea3 in TclCompileExprWords (interp=0x13db450, tokenPtr=0x7ffc56e71f60, numWords=1, envPtr=0x7ffc56e72190) at /home/mig/DEVEL/tcl-core/trunk/generic/tclCompile.c:2614 <p>#9 0x00000000004d2396 in TclCompileWhileCmd (interp=0x13db450, parsePtr=0x7ffc56e71ed0, cmdPtr=0x13e3ab0, envPtr=0x7ffc56e72190)

Posted by mig at Sat Nov 21 10:47:54 GMT 2015 [text] [code]

no cigar ... that is a gdb stacktrace, showing that we are running a cosntant expression tree - ok, it is a compiler optimisation