JavaSourceCodeCache.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 30 Jan 2013 13:27:16 +0000
branchrefactoring-vmdata
changeset 2008 c348b894fbfe
parent 1864 60a8dc26c8c6
child 2069 75d40b7b986f
permissions -rw-r--r--
Merged ef3da336a6c9 and 6eac81f7f606 (branch development.)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     1
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
     3
1155
vranyj1
parents: 1152
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
     5
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     8
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     9
 This software is furnished under a license and may be used
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    10
 only in accordance with the terms of that license and with the
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    12
 be provided or otherwise made available to, or used by, any
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    13
 other person.  No title to or ownership of the software is
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    14
 hereby transferred.
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    15
1155
vranyj1
parents: 1152
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    18
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    19
     as of 1.9.2010
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    20
"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    22
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    23
Object subclass:#JavaSourceCodeCache
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    24
	instanceVariableNames:'parsedCodes'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    25
	classVariableNames:'parsedCode'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    26
	poolDictionaries:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    27
	category:'Languages-Java-Support'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    28
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    29
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    30
JavaSourceCodeCache class instanceVariableNames:'instance'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    31
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    32
"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    33
 No other class instance variables are inherited by this class.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    34
"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    35
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    36
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    37
!JavaSourceCodeCache class methodsFor:'documentation'!
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    38
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    39
copyright
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    40
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    41
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    42
1155
vranyj1
parents: 1152
diff changeset
    43
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    44
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    45
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    46
                            SWING Research Group, Czech Technical University in Prague
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    47
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    48
 This software is furnished under a license and may be used
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    49
 only in accordance with the terms of that license and with the
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    50
 inclusion of the above copyright notice.   This software may not
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    51
 be provided or otherwise made available to, or used by, any
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    52
 other person.  No title to or ownership of the software is
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    53
 hereby transferred.
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    54
1155
vranyj1
parents: 1152
diff changeset
    55
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    56
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    57
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    58
     as of 1.9.2010
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    59
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    60
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    61
! !
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    62
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    63
!JavaSourceCodeCache class methodsFor:'instance creation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    64
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    65
new
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    66
    instance isNil ifTrue: [ instance := self basicNew initialize ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    67
    ^ instance
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    68
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    69
    "Created: / 13-12-2010 / 13:56:31 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    70
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    71
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    72
!JavaSourceCodeCache methodsFor:'adding & removing'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    73
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    74
flush
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    75
    self parsedCodes removeAll.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    76
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    77
    "Created: / 17-12-2010 / 16:32:49 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    78
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    79
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    80
!JavaSourceCodeCache methodsFor:'initialize'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    81
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    82
initialize
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    83
    parsedCodes := IdentityDictionary new.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    84
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    85
    "Created: / 13-12-2010 / 14:11:49 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    86
    "Modified: / 17-12-2010 / 13:35:36 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    87
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    88
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    89
!JavaSourceCodeCache methodsFor:'private - searching'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    90
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    91
findMethodLine: javaMethod inMethods: methods 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    92
    | bestMatchMethod  pos |
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    93
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    94
    pos := javaMethod firstInstructionLineNumber.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    95
    bestMatchMethod := Plug new respondTo: #startLine with: [^ 0].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    96
    methods do: [
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    97
        :method | 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    98
        method startLine > pos ifTrue: [
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    99
            ^ bestMatchMethod startLine
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   100
        ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   101
        bestMatchMethod := method.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   102
    ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   103
    ^ 0.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   104
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   105
    "Created: / 08-01-2011 / 16:10:37 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   106
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   107
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   108
getMethodsFor:class 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   109
    ^ parsedCodes at: class fullName ifAbsentPut: [
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   110
        [        
1402
6ac8931d0174 Some classes moved to tools
vranyj1
parents: 1288
diff changeset
   111
            JavaParser_Old methodsIn: class source 
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   112
        ] on: Exception do:
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   113
        [
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   114
            OrderedCollection new.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   115
        ]
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   116
    ].
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   117
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   118
    "Created: / 08-01-2011 / 16:09:47 / Jan Kurs <kurs.jan@post.cz>"
1402
6ac8931d0174 Some classes moved to tools
vranyj1
parents: 1288
diff changeset
   119
    "Modified: / 09-03-2012 / 23:30:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   120
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   121
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   122
parsedCodes
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   123
    ^ parsedCodes
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   124
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   125
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   126
!JavaSourceCodeCache methodsFor:'queries'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   127
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   128
findLineForMethod:javaMethod inClass:javaClass 
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   129
    | methods  mdL |
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   130
    methods := self getMethodsFor:javaClass.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   131
    mdL := self findMethodLine:javaMethod inMethods:methods.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   132
    ^ mdL
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   133
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   134
    "Created: / 13-12-2010 / 13:47:26 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   135
    "Modified: / 08-01-2011 / 16:10:21 / Jan Kurs <kurs.jan@post.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   136
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   137
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   138
!JavaSourceCodeCache class methodsFor:'documentation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   139
1864
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   140
version_HG
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   141
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   142
    ^ '$Changeset: <not expanded> $'
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   143
!
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   144
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   145
version_SVN
1864
60a8dc26c8c6 Updated from HG
vranyj1
parents: 1818
diff changeset
   146
    ^ '§Id§'
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   147
! !