JavaClassReader: remembers max stack depth over all loaded methods jk_new_structure
authorvranyj1
Tue, 06 Dec 2011 09:02:10 +0000
branchjk_new_structure
changeset 1223 317186c66234
parent 1222 4ac0b70ff26a
child 1224 b8a0cc35baaa
JavaClassReader: remembers max stack depth over all loaded methods
src/JavaClassReader.st
--- a/src/JavaClassReader.st	Tue Dec 06 01:01:12 2011 +0000
+++ b/src/JavaClassReader.st	Tue Dec 06 09:02:10 2011 +0000
@@ -25,7 +25,7 @@
 		constSlot classBeingLoaded'
 	classVariableNames:'Verbose AnnotationsVerbose Silent AbsolutelySilent
 		LazyClassLoading InvalidClassFormatSignal ClassLoaderQuerySignal
-		JavaArchiveCache'
+		JavaArchiveCache MaxStackDepth'
 	poolDictionaries:'JavaConstants'
 	category:'Languages-Java-Support'
 !
@@ -72,6 +72,7 @@
     ClassLoaderQuerySignal := QuerySignal new.
     JavaArchiveCache := CacheDictionary new: 32.
     AnnotationsVerbose := false.
+    MaxStackDepth := 0.
 
     "
      JavaClassReader initialize"
@@ -79,7 +80,7 @@
     "Modified: / 27-01-1998 / 17:54:23 / cg"
     "Modified: / 17-12-2010 / 17:37:45 / Marcel Hlopko <hlopik@gmail.com>"
     "Modified: / 10-05-2011 / 23:59:53 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 26-07-2011 / 17:21:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-12-2011 / 10:00:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaClassReader class methodsFor:'Signal constants'!
@@ -1879,6 +1880,9 @@
     ((minorVsn > 2) or:[majorVsn > 45]) ifTrue:[
         "/ should be:
         max_stack := inStream nextUnsignedShortMSB:msb.
+        "/ Remember max stack depth so far, will be used to
+        "/ optimize context size as alloca() won't work.
+        MaxStackDepth := MaxStackDepth max: max_stack.
         max_locals := inStream nextUnsignedShortMSB:msb.
         code_length := inStream nextUnsignedLongMSB:msb.
 
@@ -1948,7 +1952,7 @@
 
     "Created: / 15-04-1996 / 15:40:17 / cg"
     "Modified: / 16-05-1998 / 01:39:42 / cg"
-    "Modified: / 17-12-2010 / 00:24:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-12-2011 / 10:01:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 readExceptionsAttributeFor:aJavaMethod