Context.st
changeset 2646 90bedd5a9f75
parent 2510 393a51424d60
child 2893 8ba406da6b22
--- a/Context.st	Mon May 12 21:45:10 1997 +0200
+++ b/Context.st	Tue May 13 16:35:46 1997 +0200
@@ -11,8 +11,8 @@
 "
 
 Object variableSubclass:#Context
-	instanceVariableNames:'flags sender* home receiver selector searchClass lineNr retvalTemp
-		handle*'
+	instanceVariableNames:'flags sender* home receiver selector searchClass lineNr
+		retvalTemp handle*'
 	classVariableNames:'InvalidReturnSignal SingleStepInterruptRequest'
 	poolDictionaries:''
 	category:'Kernel-Methods'
@@ -1312,17 +1312,15 @@
 
 canReturn
     "return true, if the receiver allows returning through it.
-     For normal method contexts, this returns true;
-     for blocks, it (currently) always returns false.
-
-     However, the system can be compiled (for production code), to create
-     contexts which cannot be returned or restarted
-     (except, if the method contains a returning block). 
-     This saves some administrative work in every method
-     invocation and makes overall execution faster. However, it limits
-     the debugger, in that it cannot return from or restart those contexts.
-     (unwinding and termination is not affected by this optimization)
-     Currently, the system as delivered has this optimization disabled."
+     Blocks, it (currently) always returns false.
+     Methods which contain a (non-inlined) block are always
+     returnable - for other methods, it depends on how the system
+     was compiled (stc flag +/-optContext).
+     If it was compiled with +optContext, methods are compiled
+     non returnable.
+     Since this saves some administrative work in every method
+     invocation and makes overall execution faster, the system classes
+     are all compiled with this flag turned on."
 
 %{  /* NOCONTEXT */
 
@@ -1331,13 +1329,23 @@
 !
 
 hasStackToShow
+    "private interface to the debugger.
+     Smalltalk contexts return false here - other language frames
+     (i.e. Java frames) may want to show the evaluation stack"
+
     ^ false
 
     "Created: 28.6.1996 / 14:48:39 / cg"
+    "Modified: 13.5.1997 / 16:31:12 / cg"
 !
 
 isNonLifo
-    "return true, if this is a nonLifo context"
+    "return true, if this is a nonLifo context.
+     A nonLifo context is one that is still on the machine stack,
+     but has a reference taken and needs to be converted to a real
+     object (in objectMemory) when the method/block returns.
+     You dont have to understand this - this is a special ST/X
+     debug query, which may be removed without notice."
 
 %{  /* NOCONTEXT */
      RETURN ( ((INT)__INST(flags) & __MASKSMALLINT(__NONLIFO)) ? true : false );
@@ -1346,7 +1354,9 @@
 
 isOnMachineStack
     "return true, if this is a machine stack context as opposed to a 
-     real heap context"
+     real heap context.
+     You dont have to understand this - this is a special ST/X
+     debug query, which may be removed without notice."
 
 %{  /* NOCONTEXT */
      RETURN ( (__qSpace(self) >= STACKSPACE) ? true : false );
@@ -1429,6 +1439,6 @@
 !Context class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.78 1997-03-27 15:48:47 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Context.st,v 1.79 1997-05-13 14:35:46 cg Exp $'
 ! !
 Context initialize!