checkin from browser
authorcg
Mon, 06 May 1996 10:07:23 +0000
changeset 50 458467ce0e15
parent 49 e202755fc496
child 51 d5a1e2873469
checkin from browser
JavaClassReader.st
JavaMethod.st
JavaUnresolvedClassConstant.st
--- a/JavaClassReader.st	Mon May 06 10:06:41 1996 +0000
+++ b/JavaClassReader.st	Mon May 06 10:07:23 1996 +0000
@@ -77,10 +77,15 @@
        (i.e they are still ST-Strings).
      - The class is not initialized."
 
-    |rslt|
+    |rslt clsName|
+
+    clsName := aClassName.
+    (clsName includes:$.) ifTrue:[
+        clsName := clsName copy replaceAll:$. by:$/
+    ].
 
     ClassPath do:[:path |
-        rslt := self loadFileLazy:(path , aClassName , '.class').
+        rslt := self loadFileLazy:(path , clsName , '.class').
         rslt notNil ifTrue:[^ rslt].
     ].
 
@@ -1010,6 +1015,48 @@
     "Created: 15.4.1996 / 15:40:17 / cg"
 !
 
+readLocalVariableTableAttributeFor:aJavaMethod
+    |attribute_length local_variable_table_length local_variable_table|
+
+    attribute_length := self nextU4.
+
+    local_variable_table_length := self nextU2.
+    local_variable_table_length ~~ 0 ifTrue:[
+        local_variable_table := Array new:local_variable_table_length.
+        1 to:local_variable_table_length do:[:i |
+            |start_pc length name_index sig_index slot name signature|
+
+            start_pc := self nextU2.
+            length := self nextU2.
+            name_index := self nextU2.
+            name := nil.
+            sig_index := self nextU2.
+            signature := nil.
+            slot := self nextU2.
+
+            local_variable_table at:i put:(JavaLocalVariableTableEntry new 
+                                                startPC:start_pc 
+                                                length:length
+                                                name:name
+                                                signature:signature
+                                                slot:slot)
+        ].
+    ].
+
+    Verbose ifTrue:[Transcript showCr:'method has a localvariableTable'].
+
+    aJavaMethod setLocalVariableTable:local_variable_table.
+    ^ true
+
+    "
+     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/browser/AddButton.class'
+     JavaClassReader readFile:'/phys/ibm3/hotjava/classes/java/lang/Boolean.class'
+    "
+
+    "Modified: 15.4.1996 / 15:33:28 / cg"
+    "Created: 15.4.1996 / 15:40:17 / cg"
+!
+
 readMethodFor:aJavaClass
     |m access_flags name_index name signature_index signature|
 
@@ -1090,6 +1137,6 @@
 !JavaClassReader class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.15 1996/05/03 18:54:40 cg Exp $'
+    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.16 1996/05/06 10:06:15 cg Exp $'
 ! !
 JavaClassReader initialize!
--- a/JavaMethod.st	Mon May 06 10:06:41 1996 +0000
+++ b/JavaMethod.st	Mon May 06 10:07:23 1996 +0000
@@ -251,6 +251,13 @@
     "Created: 16.4.1996 / 14:55:44 / cg"
 !
 
+lineNumberTable
+    ^ lineNumberTable
+
+    "Created: 16.4.1996 / 12:34:04 / cg"
+    "Modified: 16.4.1996 / 12:49:06 / cg"
+!
+
 methodArgAndVarNames
     ^ ((1 to:self numArgs) collect:[:i | 'arg' , i printString])
       ,
@@ -330,6 +337,10 @@
     "Modified: 16.4.1996 / 12:49:06 / cg"
 !
 
+setLocalVariableTable:anArray
+    "/ localVariableTable := anArray.
+!
+
 setMaxStack:max_stack maxLocals:max_locals u1:unknown1 u2:unknown2
     numStack := max_stack.
     numLocals := max_locals.
@@ -486,6 +497,6 @@
 !JavaMethod class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethod.st,v 1.12 1996/05/06 09:02:35 cg Exp $'
+    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaMethod.st,v 1.13 1996/05/06 10:07:23 cg Exp $'
 ! !
 JavaMethod initialize!
--- a/JavaUnresolvedClassConstant.st	Mon May 06 10:06:41 1996 +0000
+++ b/JavaUnresolvedClassConstant.st	Mon May 06 10:07:23 1996 +0000
@@ -35,7 +35,15 @@
 !JavaUnresolvedClassConstant methodsFor:'resolving'!
 
 resolve
-    ^ Java classNamed:fullName.
+    |cls|
+
+    cls := Java classNamed:fullName.
+    cls isNil ifTrue:[^ self].
+
+    pool notNil ifTrue:[
+        pool at:poolIndex put:cls
+    ].
+    ^ cls
 
     "Created: 15.4.1996 / 15:51:42 / cg"
     "Modified: 15.4.1996 / 16:26:05 / cg"
@@ -61,5 +69,5 @@
 !JavaUnresolvedClassConstant class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaUnresolvedClassConstant.st,v 1.7 1996/05/03 11:28:46 cg Exp $'
+    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaUnresolvedClassConstant.st,v 1.8 1996/05/06 10:07:09 cg Exp $'
 ! !