--- a/JavaMethod.st Sun Feb 23 14:05:31 2020 +0100
+++ b/JavaMethod.st Sun Feb 23 14:10:52 2020 +0100
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 1996-2015 by Claus Gittinger
@@ -1629,82 +1627,74 @@
|argNames|
byteCode isNil ifTrue:[
- self isPublic ifTrue:[
- aStream nextPutAll:'public '.
- ].
- self isProtected ifTrue:[
- aStream nextPutAll:'protected '.
- ].
- self isPrivate ifTrue:[
- aStream nextPutAll:'private '.
- ].
- self isStatic ifTrue:[
- aStream nextPutAll:'static '.
- ].
-
- self isNative ifTrue:[
- aStream nextPutAll:'native '.
- ].
- self isAbstract ifTrue:[
- aStream nextPutAll:'abstract '.
- ].
- argNames := #('arg1' 'arg2' 'arg3' 'arg4' 'arg5' 'arg6' 'arg7' 'arg8' 'arg9').
- aStream nextPutAll:(self signatureNameWithArgNames:argNames).
- aStream nextPutAll:';'; cr.
- ^ self
+ self isPublic ifTrue:[
+ aStream nextPutAll:'public '.
+ ].
+ self isProtected ifTrue:[
+ aStream nextPutAll:'protected '.
+ ].
+ self isPrivate ifTrue:[
+ aStream nextPutAll:'private '.
+ ].
+ self isStatic ifTrue:[
+ aStream nextPutAll:'static '.
+ ].
+
+ self isNative ifTrue:[
+ aStream nextPutAll:'native '.
+ ].
+ self isAbstract ifTrue:[
+ aStream nextPutAll:'abstract '.
+ ].
+ argNames := #('arg1' 'arg2' 'arg3' 'arg4' 'arg5' 'arg6' 'arg7' 'arg8' 'arg9').
+ aStream nextPutAll:(self signatureNameWithArgNames:argNames).
+ aStream nextPutLine:';'.
+ ^ self
].
"
JavaDeparser isNil ifTrue:[
- aStream nextPutAll:'// Sorry - no decompiler'.
- ^ self
+ aStream nextPutAll:'// Sorry - no decompiler'.
+ ^ self
].
"
"/ self isNative ifFalse:[
"/ self isAbstract ifFalse:[
- aStream nextPutAll:'// source not available...'; cr.
- SignalSet anySignal handle:[:ex |
- ex creator == Object haltSignal ifTrue:[ex reject].
- ex creator == MessageTracer breakpointSignal ifTrue:[ex reject].
- ex creator == Signal noHandlerSignal ifTrue:[ex reject].
-
- aStream nextPutAll:'error while decompiling:'.
- aStream cr; cr; spaces:4.
- aStream nextPutAll:ex errorString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender sender sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender sender sender sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender sender sender sender sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender sender sender sender sender sender printString.
- aStream cr.
- aStream nextPutAll:ex suspendedContext sender sender sender sender sender sender sender sender printString.
- aStream cr.
-
- "
- JavaByteCodeDisassembler isNil ifTrue:[
- aStream nextPutAll:'// Sorry - no decompiler'
- ] ifFalse:[
- JavaByteCodeDisassembler diassemble:self to:aStream.
- ].
- "
- ex return
- ] do:[
- "aStream nextPutAll:(JavaDeparser decompile:self)."
- JavaByteCodeDisassembler diassemble:self to:aStream.
- ].
+ aStream nextPutAll:'// source not available...'; cr.
+ SignalSet anySignal handle:[:ex |
+ |exClass con|
+
+ exClass := ex creator.
+ ((exClass == Object haltSignal)
+ or:[ (exClass == MessageTracer breakpointSignal)
+ or:[ exClass == Signal noHandlerSignal ]]
+ ) ifTrue:[
+ ex reject
+ ].
+
+ aStream nextPutLine:'error while decompiling:'.
+ aStream cr; spaces:4.
+ aStream nextPutLine:ex errorString.
+ con := ex suspendedContext.
+ 10 timesRepeatWithExit:[:exit |
+ aStream spaces:4; nextPutLine:con printString.
+ (con := con sender) isNil ifTrue:[exit value].
+ ].
+
+ "
+ JavaByteCodeDisassembler isNil ifTrue:[
+ aStream nextPutAll:'// Sorry - no decompiler'
+ ] ifFalse:[
+ JavaByteCodeDisassembler diassemble:self to:aStream.
+ ].
+ "
+ ex return
+ ] do:[
+ "aStream nextPutAll:(JavaDeparser decompile:self)."
+ JavaByteCodeDisassembler diassemble:self to:aStream.
+ ].
"/ ].
"/ ].
@@ -2340,7 +2330,7 @@
"return a string as className>>selector. Used with debugging."
"/ in order to not break existing code which parses those strings,
- "/ do not replace '>>' by ' » '
+ "/ do not replace '>>' by ' » '
^ javaClass name , '>>' , (self printStringForBrowserWithSelector:nil inClass:nil)
"Created: / 13-06-2013 / 08:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"