JavaContext.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 30 Aug 2013 12:04:07 +0100
branchdevelopment
changeset 2694 73e08423c72b
parent 2650 5f8857840a1e
child 2711 a00302fe5083
child 2726 6971720de5a4
permissions -rw-r--r--
Fix in GroovyEvaluator: import all used classes when evaluating for inspector of debugger. This makes all classes accessed without fully qualified name (vast majority of code) accessible by the evaluator as well. Otherwise, Groovy won't be able to resolve classes used in the code.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
     1
"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
     3
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
     5
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
     8
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
     9
 This software is furnished under a license and may be used
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    10
 only in accordance with the terms of that license and with the
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    12
 be provided or otherwise made available to, or used by, any
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    13
 other person.  No title to or ownership of the software is
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    14
 hereby transferred.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    15
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    18
     see the differences between this version and version stx:libjava
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    19
     as of 1.9.2010
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    20
"
680
31fd72cf818e printString
cg
parents: 671
diff changeset
    21
"{ Package: 'stx:libjava' }"
31fd72cf818e printString
cg
parents: 671
diff changeset
    22
2527
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    23
Context variableSubclass:#JavaContext
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    24
	instanceVariableNames:'exArg exPC byteCode constPool acqrMonitors'
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
    25
	classVariableNames:''
916f444c5cae intitial checkin
cg
parents:
diff changeset
    26
	poolDictionaries:''
713
75e92ac63bf1 category change
cg
parents: 680
diff changeset
    27
	category:'Languages-Java-Support'
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
    28
!
916f444c5cae intitial checkin
cg
parents:
diff changeset
    29
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    30
Object subclass:#FinallyToken
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    31
	instanceVariableNames:'context exception selector value'
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    32
	classVariableNames:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    33
	poolDictionaries:''
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    34
	privateIn:JavaContext
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    35
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    36
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    37
!JavaContext class methodsFor:'documentation'!
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    38
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    39
copyright
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    40
"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    41
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    42
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    43
 New code and modifications done at SWING Research Group [1]:
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    44
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    45
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    46
                            SWING Research Group, Czech Technical University in Prague
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    47
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    48
 This software is furnished under a license and may be used
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    49
 only in accordance with the terms of that license and with the
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    50
 inclusion of the above copyright notice.   This software may not
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    51
 be provided or otherwise made available to, or used by, any
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    52
 other person.  No title to or ownership of the software is
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    53
 hereby transferred.
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    54
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    55
 [1] Code written at SWING Research Group contains a signature
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    56
     of one of the above copright owners. For exact set of such code,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    57
     see the differences between this version and version stx:libjava
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    58
     as of 1.9.2010
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    59
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    60
"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    61
! !
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    62
2527
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    63
!JavaContext class methodsFor:'accessing'!
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    64
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    65
finallyTokenClass
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    66
    ^FinallyToken
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    67
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    68
    "Created: / 18-04-2013 / 23:46:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
    69
! !
2396
fadc6d7a2f5b Updated to rev 009a0df3afce
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2353
diff changeset
    70
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    71
!JavaContext methodsFor:'* As yet uncategorized *'!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    72
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    73
markForException
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    74
    "set the exception handler flag in the receiver.
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    75
     The JVM needs this to enter an exception handler instead of restarting
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    76
     from the beginning (when the context is restarted).
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    77
     - a highly internal mechanism and not for public use."
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    78
"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    79
%{  /* NOCONTEXT */
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    80
#ifdef __JAVA_EX_PEND
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    81
     /* actually no longer - only a non-nil exPC is now used as marker */
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    82
     __INST(flags) = (OBJ)((INT)__INST(flags) | __MASKSMALLINT(__JAVA_EX_PEND));
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    83
#endif
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    84
%}
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    85
"
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
    86
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    87
    "Modified: / 13-12-1995 / 19:05:22 / cg"
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
    88
    "Modified: / 25-10-2010 / 17:19:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    89
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    90
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    91
shouldExecuteFinallyOnUnwind
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    92
    "Return true, if a finally block should be executed
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    93
     upon force unwind"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    94
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    95
    | m pc |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    96
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    97
    m := self method.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    98
    pc := self pc.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
    99
    self assert: m notNil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   100
    m hasFinally ifFalse:[ ^ false ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   101
    ^(method handlerFor: nil at: pc) notNil.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   102
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   103
    "Created: / 10-04-2012 / 11:09:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
454
38f590639d65 *** empty log message ***
cg
parents: 429
diff changeset
   104
! !
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   105
916f444c5cae intitial checkin
cg
parents:
diff changeset
   106
!JavaContext methodsFor:'ST context mimicri'!
916f444c5cae intitial checkin
cg
parents:
diff changeset
   107
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   108
arg1Index
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   109
    "the java stack contains the receiver in a non-static
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   110
     method, as slot 0. Therefore, the first arg is found at slot2
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   111
     if this is for a non-static method"
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   112
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   113
    self method isStatic ifTrue:[
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   114
	^ 1
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   115
    ].
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   116
    ^ 2
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   117
!
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   118
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   119
argAt:n
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   120
    "return the i'th argument (1..nArgs)"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   121
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   122
    ^ self at:(self arg1Index - 1 + n)
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   123
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   124
    "Created: / 2.1.1998 / 17:54:13 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   125
    "Modified: / 2.1.1998 / 21:39:30 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   126
!
117
4625d32e5a00 rewritten to use an Array for the stack,
cg
parents: 88
diff changeset
   127
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   128
argAt:n put:value
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   129
    "change the i'th argument (1..nArgs)"
216
abe4c0313d97 checkin from browser
cg
parents: 211
diff changeset
   130
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   131
    ^ super argAt:(self arg1Index - 1 + n) put:value
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   132
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   133
    "Created: / 2.1.1998 / 17:54:34 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   134
    "Modified: / 2.1.1998 / 21:35:19 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   135
!
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   136
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   137
args
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   138
    "return an array filled with the arguments of this context"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   139
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   140
    |n|
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   141
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   142
    n := self numArgs.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   143
    n == 0 ifTrue:[
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   144
	"/ little optimization here - avoid creating empty containers
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   145
	^ #()
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   146
    ].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   147
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   148
    ^ (Array new:n) replaceFrom:1 to:n with:self startingAt:(self arg1Index).
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   149
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   150
    "Created: / 2.1.1998 / 17:54:57 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   151
    "Modified: / 2.1.1998 / 21:34:44 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   152
!
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   153
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   154
argsAndVars
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   155
    "return an array filled with the arguments and variables of this context"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   156
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   157
    |n|
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   158
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   159
    n := self numArgs + self numVars.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   160
    n == 0 ifTrue:[
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   161
	"/ little optimization here - avoid creating empty containers
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   162
	^ #()
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   163
    ].
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   164
    ^ (Array new:n) replaceFrom:1 to:n with:self startingAt:(self arg1Index).
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   165
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   166
    "Created: / 2.1.1998 / 17:55:14 / cg"
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   167
    "Modified: / 13.1.1998 / 15:44:56 / cg"
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   168
!
916f444c5cae intitial checkin
cg
parents:
diff changeset
   169
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   170
lineNumber
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   171
    |nr pc|
156
fee47d32724d *** empty log message ***
cg
parents: 129
diff changeset
   172
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   173
    pc := self pc.
43
2c4ca2eb8d07 checkin from browser
cg
parents: 41
diff changeset
   174
211
bd118f601aed *** empty log message ***
cg
parents: 210
diff changeset
   175
"/ 'ask line for pc:' print. pc printCR.
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   176
    pc isNil ifTrue:[
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   177
	nr := self lineNumberFromMethod.
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   178
	nr notNil ifTrue:[
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   179
	    ^ nr
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   180
	].
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   181
	" '-> 0 [a]' printCR. "
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   182
	^0
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   183
    ].
43
2c4ca2eb8d07 checkin from browser
cg
parents: 41
diff changeset
   184
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   185
    nr := self method lineNumberForPC:pc.
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   186
    nr isNil ifTrue:[
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   187
	nr := self lineNumberFromMethod.
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   188
	nr notNil ifTrue:[
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   189
	    ^ nr
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   190
	].
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   191
	" '-> 0 [b]' printCR. "
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   192
	^ 0
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   193
    ].
211
bd118f601aed *** empty log message ***
cg
parents: 210
diff changeset
   194
"/ '-> ' print. nr printCR.
210
6a64bc70270b *** empty log message ***
cg
parents: 205
diff changeset
   195
     ^ nr.
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   196
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   197
    "Created: / 1.5.1996 / 15:05:47 / cg"
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   198
    "Modified: / 15.1.1998 / 15:25:29 / cg"
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   199
!
916f444c5cae intitial checkin
cg
parents:
diff changeset
   200
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   201
lineNumberFromMethod
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   202
    |m|
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   203
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   204
    m := self method.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   205
    m notNil ifTrue:[
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   206
	^ m lineNumber
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   207
    ].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   208
    ^ nil
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   209
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   210
    "Created: / 4.1.1998 / 23:34:45 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   211
    "Modified: / 4.1.1998 / 23:35:55 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   212
!
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   213
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   214
method
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   215
    "the method may be found in the interpreter temps ..."
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   216
614
f042df9169e7 checkin from browser
cg
parents: 588
diff changeset
   217
    method isJavaMethod ifTrue:[^ method].
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   218
    ^ super method
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   219
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   220
    "Created: / 1.5.1996 / 15:03:43 / cg"
614
f042df9169e7 checkin from browser
cg
parents: 588
diff changeset
   221
    "Modified: / 25.9.1999 / 23:26:40 / cg"
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   222
!
916f444c5cae intitial checkin
cg
parents:
diff changeset
   223
916f444c5cae intitial checkin
cg
parents:
diff changeset
   224
numArgs
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   225
    "return the number of args.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   226
     Redefined since Java keeps the receiver of a non-static method
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   227
     at local slot 1."
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   228
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   229
    |n|
198
5543d1079a4a *** empty log message ***
cg
parents: 156
diff changeset
   230
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   231
    n := super numArgs.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   232
    self method isStatic ifFalse:[
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   233
	n := n - 1
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   234
    ].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   235
    ^ n
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   236
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   237
    "Created: / 2.1.1998 / 22:21:24 / cg"
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   238
!
916f444c5cae intitial checkin
cg
parents:
diff changeset
   239
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   240
numTemps
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   241
    "return the number of temporary variables of the Method.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   242
     Redefined since Java keeps the receiver of a non-static method
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   243
     at local slot 1."
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   244
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   245
    |n|
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   246
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   247
    n := self size - super numVars - super numArgs.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   248
    ^ n
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   249
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   250
    "Created: / 13.1.1998 / 16:52:32 / cg"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   251
    "Modified: / 13.1.1998 / 17:23:27 / cg"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   252
!
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   253
32
0dbaa43a73db checkin from browser
cg
parents: 28
diff changeset
   254
pc
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   255
    lineNr isNil ifTrue:[^ nil].
429
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   256
    ^ lineNr bitAnd:16rFFFF
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   257
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   258
    "Created: / 4.1.1998 / 23:33:48 / cg"
429
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   259
    "Modified: / 10.11.1998 / 13:20:12 / cg"
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   260
!
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   261
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   262
quickLineNumber
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   263
    "the lineNumber - without decompiling"
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   264
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   265
    ^ self method quickLineNumberForPC:self pc
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   266
99990a8a3509 *** empty log message ***
cg
parents: 427
diff changeset
   267
    "Created: / 10.11.1998 / 14:20:30 / cg"
117
4625d32e5a00 rewritten to use an Array for the stack,
cg
parents: 88
diff changeset
   268
!
4625d32e5a00 rewritten to use an Array for the stack,
cg
parents: 88
diff changeset
   269
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   270
selector
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   271
    "the selector can be extracted from the method.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   272
     the method may be found in the interpreter temps ..."
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   273
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   274
    |s m|
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   275
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   276
    selector isNil ifTrue:[
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   277
	m := self method.
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   278
	m notNil ifTrue:[
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   279
	    ^ m name
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   280
	]
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   281
    ].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   282
    ^ super selector
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   283
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   284
    "Modified: / 30.12.1997 / 17:22:06 / cg"
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   285
    "Created: / 30.12.1997 / 17:23:47 / cg"
125
c99addd65f73 *** empty log message ***
cg
parents: 117
diff changeset
   286
!
c99addd65f73 *** empty log message ***
cg
parents: 117
diff changeset
   287
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   288
setPC:newPC
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   289
    lineNr := newPC
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   290
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   291
    "Created: / 5.1.1998 / 00:09:02 / cg"
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   292
!
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   293
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   294
temporaries
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   295
    "return an array filled with the arguments and variables of this context"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   296
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   297
    |n nSkipped|
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   298
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   299
    "/ the flas-numVars includes the receiver and args
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   300
    nSkipped := super numVars "self numArgs + self numVars".
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   301
    "/ but my context setup is args+numvars.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   302
    nSkipped := super numArgs + super numVars.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   303
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   304
    n := self size - nSkipped.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   305
    n == 0 ifTrue:[
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   306
	"/ little optimization here - avaoid creating empty containers
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   307
	^ #()
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   308
    ].
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   309
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   310
    ^ (Array new:n) replaceFrom:1 to:n with:self startingAt:nSkipped+1.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   311
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   312
    "Created: / 13.1.1998 / 15:44:12 / cg"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   313
    "Modified: / 13.1.1998 / 17:22:54 / cg"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   314
!
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   315
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   316
vars
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   317
    "return an array filled with the local variables of this context"
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   318
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   319
    |nonVars mySize|
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   320
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   321
    mySize := self numVars.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   322
    mySize == 0 ifTrue:[
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   323
	"/ little optimization here - avaoid creating empty containers
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   324
	^ #()
261
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   325
    ].
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   326
    nonVars := (self arg1Index-1) + self numArgs.
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   327
    ^ (Array new:mySize) replaceFrom:1 to:mySize with:self startingAt:nonVars+1
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   328
d95d5a3cc475 lots of new stuff
cg
parents: 255
diff changeset
   329
    "Created: / 13.1.1998 / 16:48:16 / cg"
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   330
! !
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   331
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   332
!JavaContext methodsFor:'accessing'!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   333
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   334
acquiredMonitors
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   335
    ^acqrMonitors
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   336
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   337
    "Created: / 08-11-2011 / 12:23:18 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   338
    "Modified (format): / 27-08-2012 / 16:46:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   339
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   340
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   341
acquiredMonitorsDo: aBlock 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   342
"/    acqrMonitors isNil ifTrue: [ ^self ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   343
"/    acqrMonitors copy reverseDo: aBlock.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   344
    aBlock value: self receiver.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   345
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   346
    "Created: / 08-11-2011 / 15:03:31 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   347
    "Modified: / 26-08-2012 / 19:28:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   348
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   349
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   350
addMonitor: mon 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   351
    self assert: (acqrMonitors isNil or: [ acqrMonitors isOrderedCollection ]).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   352
    acqrMonitors ifNil: [ acqrMonitors := Stack new ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   353
    acqrMonitors push: mon.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   354
    self markForUnwind.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   355
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   356
    "Created: / 08-11-2011 / 14:19:21 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   357
    "Modified: / 08-11-2011 / 21:40:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   358
    "Modified: / 17-11-2011 / 19:13:15 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   359
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   360
2650
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   361
methodFromClass
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   362
    "Return the up-to-date method. Actyally, it fetches the method
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   363
     from receiver's class"
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   364
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   365
    |c sender sendersSelector m|
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   366
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   367
    "mhmh - maybe I am a context for an unbound method (as generated by doIt);
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   368
     look in the sender's context. Consider this a kludge.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   369
     Future versions of ST/X's message lookup may store the method in
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   370
     the context.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   371
    "
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   372
    sender := self sender.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   373
    sender notNil ifTrue:[
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   374
        sendersSelector := sender selector.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   375
        sendersSelector notNil ifTrue:[
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   376
            (sendersSelector startsWith:'valueWithReceiver:') ifTrue:[
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   377
                m := sender receiver.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   378
                m isMethod ifTrue:[
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   379
                    method := m.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   380
                    ^ m
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   381
                ]
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   382
            ]
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   383
        ]
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   384
    ].
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   385
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   386
    c := self searchClass.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   387
    "
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   388
     the below cannot happen in normal circumstances
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   389
     (added to avoid recursive errors in case of a broken sender chain)
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   390
    "
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   391
    c isBehavior ifFalse:[
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   392
        'Context [error]: non class in searchClass' errorPrintCR.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   393
        '      selector: ' errorPrint. selector errorPrint.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   394
        ' receiver: ' errorPrint. receiver errorPrintCR.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   395
        ^ nil
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   396
    ].
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   397
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   398
    c := c whichClassIncludesSelector:selector.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   399
    c notNil ifTrue:[
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   400
        method := c compiledMethodAt:selector.
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   401
        ^ method
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   402
    ].
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   403
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   404
    ^ nil
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   405
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   406
    "Created: / 09-08-2013 / 02:25:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   407
!
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   408
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   409
programmingLanguage
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   410
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   411
    ^JavaLanguage instance
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   412
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   413
    "Created: / 17-03-2011 / 10:17:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   414
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   415
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   416
removeMonitor: mon 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   417
    | poppedObject |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   418
    acqrMonitors isNil ifTrue: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   419
        Logger 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   420
            log: ('removeMonitor: called but no monitors in acqrMonitors (%1)' 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   421
                    bindWith: self)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   422
            severity: #warn
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   423
            facility: #JVM.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   424
        self breakPoint: #mh.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   425
        ^ self.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   426
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   427
    poppedObject := acqrMonitors top.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   428
    self assert: (poppedObject == mon).
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   429
    acqrMonitors remove: mon
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   430
        ifAbsent: [
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   431
            Logger 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   432
                log: ('removeMonitor: called but no such monitor in acqrMonitors (%1)' 
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   433
                        bindWith: self)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   434
                severity: #warn
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   435
                facility: #JVM.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   436
            self breakPoint: #mh.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   437
            ^ self.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   438
        ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   439
        acqrMonitors isEmpty ifTrue: [self unmarkForUnwind].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   440
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   441
    "Created: / 08-11-2011 / 14:19:58 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   442
    "Modified: / 08-11-2011 / 21:39:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   443
    "Modified: / 17-11-2011 / 19:14:29 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   444
! !
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   445
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   446
!JavaContext methodsFor:'exception handler support'!
117
4625d32e5a00 rewritten to use an Array for the stack,
cg
parents: 88
diff changeset
   447
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   448
exceptionArg:aJavaException
511
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   449
    exArg := aJavaException.
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   450
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   451
    "Created: / 7.1.1998 / 21:36:56 / cg"
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   452
!
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   453
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   454
exceptionArg:aJavaException pc:newPc
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   455
    exArg := aJavaException.
1395b1fc453f *** empty log message ***
cg
parents: 454
diff changeset
   456
    exPC := newPc.
255
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   457
2d8b3948a08a *** empty log message ***
cg
parents: 252
diff changeset
   458
    "Created: / 7.1.1998 / 21:36:56 / cg"
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   459
! !
916f444c5cae intitial checkin
cg
parents:
diff changeset
   460
2527
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   461
!JavaContext methodsFor:'non local control flow'!
2396
fadc6d7a2f5b Updated to rev 009a0df3afce
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2353
diff changeset
   462
2532
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   463
restart
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   464
    "Update the bytecode before restarting so
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   465
     bytecode interpreter can execute new code, if any"
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   466
2650
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   467
    | m |
2532
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   468
2650
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   469
    m := self methodFromClass.
2532
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   470
    m notNil ifTrue:[
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   471
         byteCode := m byteCode.
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   472
         constPool := m constantPool.
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   473
    ].
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   474
    ^super restart.
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   475
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   476
    "Created: / 19-04-2013 / 13:33:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2650
5f8857840a1e Fix for method restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2532
diff changeset
   477
    "Modified: / 09-08-2013 / 02:33:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2532
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   478
!
64a784c73d1e Update bytecode and constpool upon context restart.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2527
diff changeset
   479
2527
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   480
return
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   481
    selector last == $V ifTrue:[ ^ self return:nil  ].
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   482
    selector last == $; ifTrue:[ ^ self return:nil  ].
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   483
    selector last == $D ifTrue:[ ^ self return:0.0  ].
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   484
    selector last == $F ifTrue:[ ^ self return:0.0 asShortFloat  ].
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   485
    ^self return: 0
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   486
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   487
    "Created: / 18-04-2013 / 23:52:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c380a7c258fb Makes JavaUnresolvedCompilationError proceedable.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2429
diff changeset
   488
!
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   489
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   490
unwindAndRestartForJavaException
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   491
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   492
    "Called by JavaVM>>throwException: unwinds the stack
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   493
     up to this context and restarts it so an exception handler
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   494
     executes"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   495
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   496
    | con wasMarked |
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   497
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   498
    "Each context that has a monitor acquired has
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   499
     and unwind action that release all monitors acquired.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   500
     However, we DONT want my monitors to be released,
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   501
     so we temporarily unmark this context for unwind and
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   502
     then mark it again, eventually"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   503
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   504
    wasMarked := self isUnwindContext.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   505
    wasMarked ifTrue:[self unmarkForUnwind].    
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   506
    self senderIsNil ifFalse:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   507
        con := thisContext evaluateUnwindActionsUpTo:self.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   508
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   509
    wasMarked ifTrue:[self markForUnwind].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   510
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   511
    "oops, if nil, I am not on the calling chain;
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   512
     (bad bad, unwind action have already been performed.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   513
      should we check for this situation first and NOT evaluate
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   514
      the unwind actions in this case ?)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   515
    "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   516
    con isNil ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   517
        "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   518
         tried to return to a context which is already dead
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   519
         (i.e. the method/block has already executed a return)
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   520
        "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   521
        ^ self invalidReturnOrRestartError:#'unwindAndRestart:' with:nil
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   522
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   523
    "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   524
     now, that all unwind-actions are done, I can use the
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   525
     low-level restart ...
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   526
    "
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   527
    ^ self restart
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   528
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   529
    "Created: / 08-11-2011 / 22:00:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   530
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   531
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   532
!JavaContext methodsFor:'printing & storing'!
916f444c5cae intitial checkin
cg
parents:
diff changeset
   533
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   534
receiverPrintString
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   535
    "return a string describing the receiver of the context"
52
1dc41619b6f8 checkin from browser
cg
parents: 43
diff changeset
   536
680
31fd72cf818e printString
cg
parents: 671
diff changeset
   537
    |receiverClass receiverClassName newString implementorClass searchClass|
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   538
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   539
"/ %{
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   540
"/     /*
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   541
"/      * special handling for (invalid) free objects.
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   542
"/      * these only appear if some primitiveCode does not correctly use SEND macros,
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   543
"/      * which may lead to sends to free objects. In normal operation, this 'cannot' happen.
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   544
"/      */
363
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   545
"/     if (__isNonNilObject(__INST(receiver)) && (__qClass(__INST(receiver))==nil)) {
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   546
"/         receiverClassName = __MKSTRING("FreeObject");
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   547
"/     }
1c36ff13b671 *** empty log message ***
cg
parents: 346
diff changeset
   548
"/ %}.
680
31fd72cf818e printString
cg
parents: 671
diff changeset
   549
"/    receiverClassName notNil ifTrue:[^ receiverClassName].
228
18ed0b234062 checkin from browser
cg
parents: 216
diff changeset
   550
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   551
    receiverClass := receiver class.
680
31fd72cf818e printString
cg
parents: 671
diff changeset
   552
    "/ java has no class-methods ...
31fd72cf818e printString
cg
parents: 671
diff changeset
   553
    receiverClass := receiverClass theNonMetaclass.
31fd72cf818e printString
cg
parents: 671
diff changeset
   554
31fd72cf818e printString
cg
parents: 671
diff changeset
   555
    receiverClassName := receiverClass nameInBrowser.
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   556
    (receiverClass == SmallInteger) ifTrue:[
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   557
	newString := '(' , receiver printString , ') ' , receiverClassName
228
18ed0b234062 checkin from browser
cg
parents: 216
diff changeset
   558
    ] ifFalse:[
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   559
	newString := receiverClassName
228
18ed0b234062 checkin from browser
cg
parents: 216
diff changeset
   560
    ].
18ed0b234062 checkin from browser
cg
parents: 216
diff changeset
   561
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   562
    "
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   563
     kludge to avoid slow search for containing class
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   564
    "
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   565
    (selector ~~ #doIt and:[selector ~~ #doIt:]) ifTrue:[
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   566
	implementorClass := self methodClass.
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   567
    ].
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   568
    implementorClass notNil ifTrue: [
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   569
	(implementorClass ~~ receiverClass) ifTrue: [
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   570
	    newString := newString , '>>>',
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   571
			 implementorClass nameInBrowser printString
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   572
	]
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   573
    ] ifFalse:[
2150
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   574
	searchClass := self searchClass.
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   575
	searchClass ~~ receiverClass ifTrue:[
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   576
	    newString := newString , '>>>' , searchClass nameInBrowser
3dbc038c151a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2108
diff changeset
   577
	].
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   578
"/        "
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   579
"/         kludge for doIt - these unbound methods are not
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   580
"/         found in the classes methodDictionary
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   581
"/        "
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   582
"/        (selector ~~ #doIt and:[selector ~~ #doIt:]) ifTrue:[
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   583
"/            newString := newString , '>>>**NONE**'
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   584
"/        ]
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   585
    ].
916f444c5cae intitial checkin
cg
parents:
diff changeset
   586
252
04b330744577 new javaVM stuff & back to pre-stefans changes
cg
parents: 228
diff changeset
   587
    ^ newString
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   588
! !
916f444c5cae intitial checkin
cg
parents:
diff changeset
   589
343
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   590
!JavaContext methodsFor:'queries'!
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   591
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   592
hasStackToShow
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   593
    "private interface to the debugger.
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   594
     Smalltalk contexts return false here - other language frames
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   595
     (i.e. Java frames) may want to show the evaluation stack"
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   596
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   597
    ^ true
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   598
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   599
    "Modified: / 13.5.1997 / 16:31:12 / cg"
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   600
    "Created: / 7.5.1998 / 01:23:57 / cg"
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   601
!
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   602
346
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   603
isJavaContext
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   604
    "return true, if this is a javaContext."
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   605
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   606
    ^ true
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   607
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   608
    "Created: / 8.5.1998 / 21:23:47 / cg"
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   609
!
36573254a561 added #isJavaContext
cg
parents: 343
diff changeset
   610
343
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   611
stackFrame
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   612
    "private interface to the debugger."
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   613
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   614
    ^ (1 to:self size) collect:[:i | self at:i]
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   615
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   616
    "Created: / 7.5.1998 / 01:26:19 / cg"
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   617
! !
b6ff12d916fb checkin from browser
cg
parents: 264
diff changeset
   618
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   619
!JavaContext::FinallyToken methodsFor:'accessing'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   620
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   621
context
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   622
    ^ context
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   623
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   624
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   625
context:something
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   626
    context := something.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   627
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   628
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   629
exception
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   630
    ^ exception
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   631
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   632
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   633
exception:something
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   634
    exception := something.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   635
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   636
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   637
selector
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   638
    ^ selector
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   639
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   640
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   641
selector:something
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   642
    selector := something.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   643
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   644
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   645
value
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   646
    ^ value
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   647
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   648
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   649
value:something
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   650
    value := something.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   651
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   652
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   653
!JavaContext::FinallyToken methodsFor:'actions'!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   654
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   655
pass
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   656
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   657
    "First, release all leftover acquired monitors"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   658
    JavaVM releaseMonitorsOfUnwindingContext: context.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   659
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   660
    selector == #return ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   661
        exception return
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   662
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   663
    selector == #return: ifTrue:[
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   664
        exception return: value
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   665
    ].
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   666
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   667
    self error:'Should never be reached'.
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   668
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   669
    "Created: / 04-04-2012 / 20:24:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   670
! !
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   671
129
f40775af59a5 checkin from browser
cg
parents: 125
diff changeset
   672
!JavaContext class methodsFor:'documentation'!
28
916f444c5cae intitial checkin
cg
parents:
diff changeset
   673
916f444c5cae intitial checkin
cg
parents:
diff changeset
   674
version
2396
fadc6d7a2f5b Updated to rev 009a0df3afce
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2353
diff changeset
   675
    ^ '$Header: /cvs/stx/stx/libjava/JavaContext.st,v 1.40 2013-02-25 11:15:31 vrany Exp $'
2304
73806b718f4e fixed: #version_SVN ($ to §)
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
   676
!
73806b718f4e fixed: #version_SVN ($ to §)
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
   677
73806b718f4e fixed: #version_SVN ($ to §)
Claus Gittinger <cg@exept.de>
parents: 2168
diff changeset
   678
version_CVS
2396
fadc6d7a2f5b Updated to rev 009a0df3afce
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2353
diff changeset
   679
    ^ '$Header: /cvs/stx/stx/libjava/JavaContext.st,v 1.40 2013-02-25 11:15:31 vrany Exp $'
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   680
!
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   681
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   682
version_HG
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   683
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   684
    ^ '$Changeset: <not expanded> $'
2151
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   685
!
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   686
c0b6570c6f9b Jan's version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2150
diff changeset
   687
version_SVN
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   688
    ^ '§Id§'
2108
ca8c4e7db2e8 category change
Claus Gittinger <cg@exept.de>
parents: 749
diff changeset
   689
! !
2353
fa7400d022a0 Updated to https://swing.fit.cvut.cz/hg/stx.libjava/rev/31f8b995905e
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2304
diff changeset
   690