summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2013-10-13 13:34:01 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2013-10-13 13:34:01 (GMT)
commit62cb43456456d34b7a1b738feb2d2114915aff3c (patch)
tree6dda2c6d242d57572eeccdd5fc5eb1cbc9bd9256
parent18620aebd7623aaa3031162500c392cf2fa6ade7 (diff)
downloadtcl-62cb43456456d34b7a1b738feb2d2114915aff3c.zip
tcl-62cb43456456d34b7a1b738feb2d2114915aff3c.tar.gz
tcl-62cb43456456d34b7a1b738feb2d2114915aff3c.tar.bz2
update comments
-rw-r--r--generic/tclCompCmdsGR.c1
-rw-r--r--generic/tclCompile.c21
2 files changed, 22 insertions, 0 deletions
diff --git a/generic/tclCompCmdsGR.c b/generic/tclCompCmdsGR.c
index 43ea3d3..3efcba7 100644
--- a/generic/tclCompCmdsGR.c
+++ b/generic/tclCompCmdsGR.c
@@ -2480,6 +2480,7 @@ TclCompileReturnCmd(
* emit the INST_RETURN_IMM instruction with code and level as operands.
*/
+ // TODO: when (code==TCL_BREAK || code==TCL_CONTINUE)&&(level==0&&size==0), check for stack balance and jump opportunities
CompileReturnInternal(envPtr, INST_RETURN_IMM, code, level, returnOpts);
return TCL_OK;
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 74a9c8c..68b7649 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -3901,6 +3901,27 @@ TclFixupForwardJump(
return 1; /* the jump was grown */
}
+/*
+ *----------------------------------------------------------------------
+ *
+ * TclEmitInvoke --
+ *
+ * Emit one of the invoke-related instructions, wrapping it if necessary
+ * in code that ensures that any break or continue operation passing
+ * through it gets the stack unwinding correct, converting it into an
+ * internal jump if in an appropriate context.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * Issues the jump with all correct stack management. May create another
+ * loop exception range; pointers to ExceptionRange and ExceptionAux
+ * structures should not be held across this call.
+ *
+ *----------------------------------------------------------------------
+ */
+
void
TclEmitInvoke(
CompileEnv *envPtr,