summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authordonal.k.fellows@manchester.ac.uk <dkf>2012-11-02 20:25:57 (GMT)
committerdonal.k.fellows@manchester.ac.uk <dkf>2012-11-02 20:25:57 (GMT)
commit6b77f7a7e64936b4b291fa18e026bb77fd82b9d7 (patch)
tree7d93443b8d54a80a197f646009236ccff15c3f43 /generic/tclExecute.c
parentf6d9b35b1e1383315af919cd15e94e8dc7fffcda (diff)
parentfe4cd2b40a7333e64321b53988575b93ea1e1ad1 (diff)
downloadtcl-6b77f7a7e64936b4b291fa18e026bb77fd82b9d7.zip
tcl-6b77f7a7e64936b4b291fa18e026bb77fd82b9d7.tar.gz
tcl-6b77f7a7e64936b4b291fa18e026bb77fd82b9d7.tar.bz2
merge dkf-compile-misc-info
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index f6b99bf..21c7d91 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -4285,6 +4285,34 @@ TEBCresume(
return TclNRObjectContextInvokeNext(interp,
(Tcl_ObjectContext) contextPtr, opnd, &OBJ_AT_DEPTH(opnd-1), 1);
}
+ {
+ Object *oPtr;
+
+ case INST_TCLOO_CLASS:
+ oPtr = (Object *) Tcl_GetObjectFromObj(interp, OBJ_AT_TOS);
+ if (oPtr == NULL) {
+ TRACE(("%.30s => ERROR: not object\n", O2S(OBJ_AT_TOS)));
+ goto gotError;
+ }
+ objResultPtr = TclOOObjectName(interp, oPtr->selfCls->thisPtr);
+ TRACE_WITH_OBJ(("%.30s => ", O2S(OBJ_AT_TOS)), objResultPtr);
+ NEXT_INST_F(1, 1, 1);
+ case INST_TCLOO_NS:
+ oPtr = (Object *) Tcl_GetObjectFromObj(interp, OBJ_AT_TOS);
+ if (oPtr == NULL) {
+ TRACE(("%.30s => ERROR: not object\n", O2S(OBJ_AT_TOS)));
+ goto gotError;
+ }
+
+ /*
+ * TclOO objects *never* have the global namespace as their NS.
+ */
+
+ TclNewStringObj(objResultPtr, oPtr->namespacePtr->fullName,
+ strlen(oPtr->namespacePtr->fullName));
+ TRACE_WITH_OBJ(("%.30s => ", O2S(OBJ_AT_TOS)), objResultPtr);
+ NEXT_INST_F(1, 1, 1);
+ }
/*
* End of TclOO support instructions.