Added ACX_HASFINALLY method accessFlags bit jk_new_structure
authorvranyj1
Thu, 29 Mar 2012 08:28:45 +0000
branchjk_new_structure
changeset 1435 8f3ffc52c8b9
parent 1434 ea72997fdf11
child 1436 386def3adbc6
Added ACX_HASFINALLY method accessFlags bit
src/JavaClassReader.st
src/JavaConstants.st
src/JavaMethod.st
src/JavaMethodWithHandler.st
--- a/src/JavaClassReader.st	Wed Mar 28 14:04:28 2012 +0000
+++ b/src/JavaClassReader.st	Thu Mar 29 08:28:45 2012 +0000
@@ -2106,7 +2106,14 @@
                 ]
             ]
         ] ifFalse:[
-            m setAccessFlags:(m accessFlags bitOr:ACC_HASHANDLER)
+            | newAccessFlags |
+
+            newAccessFlags := m accessFlags.
+            newAccessFlags := newAccessFlags bitOr:ACC_HASHANDLER.
+            m hasFinallyBasedOnExceptionTable ifTrue:[
+                newAccessFlags := newAccessFlags bitOr:ACX_HASFINALLY.
+            ].
+            m setAccessFlags:newAccessFlags.
         ].
         aClass addMethod:m name:name signature:descriptor.
     ] ifFalse:[
@@ -2125,8 +2132,8 @@
 
     "Created: / 15-04-1996 / 16:48:49 / cg"
     "Modified: / 25-09-1999 / 23:16:25 / cg"
-    "Modified: / 25-10-2011 / 17:41:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-10-2011 / 16:56:48 / m"
+    "Modified: / 29-03-2012 / 09:18:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 readMethodsFor:aJavaClass
--- a/src/JavaConstants.st	Wed Mar 28 14:04:28 2012 +0000
+++ b/src/JavaConstants.st	Thu Mar 29 08:28:45 2012 +0000
@@ -26,7 +26,7 @@
 		ACC_SYNCHRONIZED ACC_BRIDGE ACC_VARGARS ACC_NATIVE ACC_ABSTRACT
 		ACC_STRICT ACC_SYNTHETIC ACC_SUPER ACC_INTERFACE ACC_ANNOTATION
 		ACC_ENUM ACC_VOLATILE ACC_TRANSIENT ACC_OBSOLETE ACC_HASHANDLER
-		ACC_INITIALIZED ACC_BREAKPNT'
+		ACC_INITIALIZED ACC_BREAKPNT ACX_HASFINALLY'
 	poolDictionaries:''
 	category:'Languages-Java-Support'
 !
@@ -89,12 +89,14 @@
 
         @global(JavaConstants:ACC_INITIALIZED) = __MKSMALLINT(__ACC_INITIALIZED);
         @global(JavaConstants:ACC_HASHANDLER)  = __MKSMALLINT(__ACC_HASHANDLER);
+        @global(JavaConstants:ACX_HASFINALLY)  = __MKSMALLINT(__ACX_HASFINALLY);
         @global(JavaConstants:ACC_BREAKPNT)    = __MKSMALLINT(__ACC_BREAKPNT);
 
 %}
 
     "Created: / 25-10-2011 / 09:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-10-2011 / 16:56:17 / m"
+    "Modified: / 28-03-2012 / 23:06:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaConstants class methodsFor:'documentation'!
--- a/src/JavaMethod.st	Wed Mar 28 14:04:28 2012 +0000
+++ b/src/JavaMethod.st	Thu Mar 29 08:28:45 2012 +0000
@@ -27,7 +27,7 @@
 		ForceByteCodeDisplay UnresolvedClassSignal A_PUBLIC A_PRIVATE
 		A_PROTECTED A_STATIC A_FINAL A_SYNCHRONIZED A_ABSTRACT A_NATIVE
 		A_BREAKPOINT R_VOID R_LONG R_DOUBLE A_HASHANDLER A_BRIDGE
-		A_VARARGS A_STRICT A_SYNTHETIC A_RESOLVED'
+		A_VARARGS A_STRICT A_SYNTHETIC A_RESOLVED A_HASFINALLY'
 	poolDictionaries:'JavaConstants'
 	category:'Languages-Java-Classes'
 !
@@ -90,6 +90,7 @@
 
     A_BREAKPOINT   := 16r10000000.
     A_HASHANDLER   := 16r20000000.
+    A_HASFINALLY   := 16r00004000.
     A_RESOLVED     := 16r00002000.
 
     self flags:(self flags bitOr:Behavior flagJavaMethod).
@@ -117,7 +118,7 @@
     "
 
     "Modified: / 16-10-1998 / 01:29:48 / cg"
-    "Modified: / 14-11-2011 / 23:54:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-03-2012 / 20:34:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 reinitialize
@@ -2087,6 +2088,26 @@
     "Modified: / 25.9.1999 / 23:07:01 / cg"
 !
 
+hasFinally
+    ^ (accessFlags bitAnd:A_HASFINALLY) ~~ 0
+
+    "Created: / 28-03-2012 / 20:35:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasFinallyBasedOnExceptionTable
+    "Returns true if the exeption table has at least one 
+     entry for finally block"
+    ^false
+
+    "Created: / 28-03-2012 / 23:18:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasHandler
+    ^ (accessFlags bitAnd:A_HASHANDLER) ~~ 0
+
+    "Created: / 28-03-2012 / 20:35:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasPrimitiveCode
 
     ^false
--- a/src/JavaMethodWithHandler.st	Wed Mar 28 14:04:28 2012 +0000
+++ b/src/JavaMethodWithHandler.st	Thu Mar 29 08:28:45 2012 +0000
@@ -74,6 +74,16 @@
     "Created: / 16.10.1998 / 01:19:00 / cg"
 ! !
 
+!JavaMethodWithHandler methodsFor:'queries'!
+
+hasFinallyBasedOnExceptionTable
+    "Returns true if the exeption table has at least one 
+     entry for finally block"
+    ^exceptionHandlerTable anySatisfy:[:entry|entry catchType == 0].
+
+    "Created: / 28-03-2012 / 23:17:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaMethodWithHandler class methodsFor:'documentation'!
 
 version