Index: ChangeLog
===================================================================
RCS file: /cvsroot/tcl/tcl/ChangeLog,v
retrieving revision 1.646
diff -u -r1.646 ChangeLog
--- ChangeLog	2001/09/29 11:09:34	1.646
+++ ChangeLog	2001/10/01 13:19:24
@@ -1,3 +1,11 @@
+2001-09-30  Miguel Sofer  <msofer@users.sourceforge.net>
+
+	* generic/tclCmdIL.c:
+	* generic/tclCmdMZ.c:
+	* generic/tclParseExpr.c: removed unnecessary inclusion of
+	tclCompile.h and made a small modification in (InfoBodyCmd) to
+	improve the isolation of the compiler/engine subsystem.
+
 2001-09-29  Vince Darley  <vincentdarley@users.sourceforge.net>
 
 	* generic/tclIOUtil.c:
Index: generic/tclCmdIL.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclCmdIL.c,v
retrieving revision 1.34
diff -u -r1.34 tclCmdIL.c
--- generic/tclCmdIL.c	2001/09/28 15:32:17	1.34
+++ generic/tclCmdIL.c	2001/10/01 13:19:25
@@ -19,7 +19,6 @@
 
 #include "tclInt.h"
 #include "tclPort.h"
-#include "tclCompile.h"
 #include "tclRegexp.h"
 
 /*
@@ -575,23 +574,17 @@
         return TCL_ERROR;
     }
 
-    /*
-     * We should not return a bytecompiled body.  If it is precompiled,
-     * then the bodyPtr's string representation is bogus, since sources
-     * are not available.  If it was just a bytecompiled body, then it
-     * is likely to not be of any use to the caller, as it was compiled
-     * for a separate procedure context [Bug: 3412], and noone else can
-     * reasonably use it.
-     * In order to make sure that later manipulations of the object do not
-     * invalidate the internal representation, we make a copy of the string
-     * representation and return that one, instead.
+    /* 
+     * Here we used to return procPtr->bodyPtr, except when the body was
+     * bytecompiled - in that case, the return was a copy of the body's
+     * string rep. In order to better isolate the implementation details
+     * of the compiler/engine subsystem, we now always return a copy of 
+     * the string rep. It is important to return a copy so that later 
+     * manipulations of the object do not invalidate the internal rep.
      */
 
     bodyPtr = procPtr->bodyPtr;
-    resultPtr = bodyPtr;
-    if (bodyPtr->typePtr == &tclByteCodeType) {
-	resultPtr = Tcl_NewStringObj(bodyPtr->bytes, bodyPtr->length);
-    }
+    resultPtr = Tcl_NewStringObj(bodyPtr->bytes, bodyPtr->length);
     
     Tcl_SetObjResult(interp, resultPtr);
     return TCL_OK;
Index: generic/tclCmdMZ.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclCmdMZ.c,v
retrieving revision 1.45
diff -u -r1.45 tclCmdMZ.c
--- generic/tclCmdMZ.c	2001/09/13 23:49:57	1.45
+++ generic/tclCmdMZ.c	2001/10/01 13:19:26
@@ -18,7 +18,6 @@
 
 #include "tclInt.h"
 #include "tclPort.h"
-#include "tclCompile.h"
 #include "tclRegexp.h"
 
 /*
Index: generic/tclParseExpr.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclParseExpr.c,v
retrieving revision 1.8
diff -u -r1.8 tclParseExpr.c
--- generic/tclParseExpr.c	2001/04/09 09:48:41	1.8
+++ generic/tclParseExpr.c	2001/10/01 13:19:27
@@ -16,7 +16,6 @@
  */
 
 #include "tclInt.h"
-#include "tclCompile.h"
 
 /*
  * The stuff below is a bit of a hack so that this file can be used in
