JavaClass.st
branchperformance-optimizations
changeset 2603 000dff7f0e7b
parent 2591 17d9c39d3ab4
child 2618 e7757e5d593c
--- a/JavaClass.st	Mon May 20 23:58:01 2013 +0100
+++ b/JavaClass.st	Tue May 21 00:17:00 2013 +0100
@@ -545,6 +545,23 @@
     "Modified: / 12.11.1998 / 15:29:10 / cg"
 ! !
 
+!JavaClass methodsFor:'* uncategorized *'!
+
+includesInterface: interface
+    | cls |
+
+    self == interface ifTrue: [ ^ true ].
+
+    cls := self.
+    [ cls isJavaClass ] whileTrue:[
+        cls interfaces do:[:i|(i includesInterface: interface) ifTrue:[ ^ true ]].
+        cls := cls superclass.
+    ].
+    ^ false.
+
+    "Created: / 21-05-2013 / 00:06:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaClass methodsFor:'accessing'!
 
 allFields
@@ -1120,6 +1137,11 @@
     "Created: / 18-03-2012 / 14:19:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+handlerForSignal:exceptionHandler context:theContext originator:originator
+    ^nil
+
+!
+
 handles: anObject
 
     Transcript showCR:'>>>> JavaClass>>handles: ' , anObject printString.
@@ -1129,11 +1151,6 @@
     "Created: / 18-03-2012 / 14:19:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-handlerForSignal:exceptionHandler context:theContext originator:originator
-    ^nil
-
-!
-
 isControlInterrupt
     ^false
 
@@ -2520,14 +2537,14 @@
 !
 
 includesBehavior: aClass 
-    ^ (aClass isJavaClass not or: [ aClass isInterface not ]) 
-        ifTrue: [ self name == aClass name or:[ super includesBehavior: aClass ]]
-        ifFalse: [
-            self name == aClass name or: [ self allInterfaces includes: aClass ]
-        ].
+    ^self name == aClass name or:[
+         (aClass isJavaClass not or: [ aClass isInterface not ]) 
+            ifTrue: [super includesBehavior: aClass ]
+            ifFalse:[self includesInterface: aClass ]
+    ]
 
     "Created: / 05-02-2011 / 23:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 11-02-2011 / 09:12:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 00:06:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 isSubclassOf: aClass