summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2021-06-21 10:27:02 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2021-06-21 10:27:02 (GMT)
commitcdae95cf66d9d27eec969ba28abb4a3ba87ea5d6 (patch)
tree0f3275d8082baca2b2c16244e05e79116a0582c3 /generic
parentf36b113b009b236b41e280feb350c6eb2e4820fa (diff)
downloadtcl-cdae95cf66d9d27eec969ba28abb4a3ba87ea5d6.zip
tcl-cdae95cf66d9d27eec969ba28abb4a3ba87ea5d6.tar.gz
tcl-cdae95cf66d9d27eec969ba28abb4a3ba87ea5d6.tar.bz2
Backout merge of "bug-f9800d52bd61f240" branch, which is - apparently - not ready to be merged yet.
This is causing failures on all platforms: [https://github.com/tcltk/tcl/runs/2872891537?check_suite_focus=true]
Diffstat (limited to 'generic')
-rw-r--r--generic/tclBasic.c24
-rw-r--r--generic/tclExecute.c1
-rw-r--r--generic/tclInt.h5
3 files changed, 1 insertions, 29 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 69194f8..86d7960 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4866,7 +4866,6 @@ NRCommand(
int result)
{
Interp *iPtr = (Interp *) interp;
- Tcl_Obj *listPtr;
iPtr->numLevels--;
@@ -4875,10 +4874,7 @@ NRCommand(
*/
if (data[1] && (data[1] != INT2PTR(1))) {
- listPtr = (Tcl_Obj *)data[1];
- data[1] = NULL;
-
- TclNRAddCallback(interp, TclNRTailcallEval, listPtr, NULL, NULL, NULL);
+ TclNRAddCallback(interp, TclNRTailcallEval, data[1], NULL, NULL, NULL);
}
/* OPT ??
@@ -9453,7 +9449,6 @@ TclNRYieldToObjCmd(
iPtr->execEnvPtr = corPtr->callerEEPtr;
TclSetTailcall(interp, listPtr);
- corPtr->yieldPtr = listPtr;
iPtr->execEnvPtr = corPtr->eePtr;
return TclNRYieldObjCmd(INT2PTR(CORO_ACTIVATE_YIELDM), interp, 1, objv);
@@ -9651,22 +9646,6 @@ TclNRCoroutineActivateCallback(
*/
if (corPtr->stackLevel != stackLevel) {
- NRE_callback *runPtr;
-
- iPtr->execEnvPtr = corPtr->callerEEPtr;
- if (corPtr->yieldPtr) {
- for (runPtr = TOP_CB(interp); runPtr; runPtr = runPtr->nextPtr) {
- if (runPtr->data[1] == corPtr->yieldPtr) {
- runPtr->data[1] = NULL;
- Tcl_DecrRefCount(corPtr->yieldPtr);
- corPtr->yieldPtr = NULL;
- break;
- }
- }
- }
- iPtr->execEnvPtr = corPtr->eePtr;
-
-
Tcl_SetObjResult(interp, Tcl_NewStringObj(
"cannot yield: C stack busy", -1));
Tcl_SetErrorCode(interp, "TCL", "COROUTINE", "CANT_YIELD",
@@ -9682,7 +9661,6 @@ TclNRCoroutineActivateCallback(
Tcl_Panic("Yield received an option which is not implemented");
}
- corPtr->yieldPtr = NULL;
corPtr->stackLevel = NULL;
numLevels = iPtr->numLevels;
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 7e51c0d..f9c2954 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -2506,7 +2506,6 @@ TEBCresume(
Tcl_IncrRefCount(valuePtr);
iPtr->execEnvPtr = corPtr->callerEEPtr;
TclSetTailcall(interp, valuePtr);
- corPtr->yieldPtr = valuePtr;
iPtr->execEnvPtr = corPtr->eePtr;
yieldParameter = (PTR2INT(NULL)+1); /*==CORO_ACTIVATE_YIELDM*/
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 05167b7..ad9a5c1 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -1496,11 +1496,6 @@ typedef struct CoroutineData {
int nargs; /* Number of args required for resuming this
* coroutine; -2 means "0 or 1" (default), -1
* means "any" */
- Tcl_Obj *yieldPtr; /* The command to yield to. Stored here in
- * order to reset splice point in
- * TclNRCoroutineActivateCallback if the
- * coroutine is busy.
- */
} CoroutineData;
typedef struct ExecEnv {