JavaContext.st
author cg
Fri, 03 May 1996 18:56:04 +0000
changeset 43 2c4ca2eb8d07
parent 41 eb7974d88088
child 52 1dc41619b6f8
permissions -rw-r--r--
checkin from browser

Object subclass:#JavaContext
	instanceVariableNames:'method class sender stack frameBase pc'
	classVariableNames:''
	poolDictionaries:''
	category:'Java-Support'
!


!JavaContext methodsFor:'ST context mimicri'!

argsAndVars
    |args|

    args := Array new:(method numArgs + method numVars).
    method isStatic ifTrue:[
        args replaceFrom:1 to:args size with:stack startingAt:frameBase.
    ] ifFalse:[
        args replaceFrom:1 to:args size with:stack startingAt:frameBase+1.
    ].
    ^ args

    "Created: 1.5.1996 / 17:32:44 / cg"
    "Modified: 1.5.1996 / 17:41:50 / cg"
!

canReturn
    ^ false

    "Created: 1.5.1996 / 15:05:36 / cg"
!

isBlockContext
    ^ false

    "Created: 1.5.1996 / 15:05:26 / cg"
!

lineNumber
    |nr|

    pc isNil ifTrue:[^0].

    nr := method lineNumberForPC:pc.
    nr isNil ifTrue:[^ 0].
    ^ nr.

    "Created: 1.5.1996 / 15:05:47 / cg"
!

methodClass
    ^ class

    "Created: 1.5.1996 / 15:04:17 / cg"
!

methodHome
    ^ self

    "Created: 1.5.1996 / 15:03:43 / cg"
!

numArgs
    ^ method numArgs

    "Created: 1.5.1996 / 15:04:35 / cg"
!

nvars
    ^ 0

    "Created: 1.5.1996 / 15:05:03 / cg"
!

receiver
    method isStatic ifTrue:[
        ^ method javaClass
    ].
    ^ stack at:frameBase

    "Created: 1.5.1996 / 15:04:03 / cg"
    "Modified: 1.5.1996 / 17:43:17 / cg"
!

selector            
    ^ (method name , method signature) asSymbol "/ signatureName

    "Created: 1.5.1996 / 15:03:03 / cg"
! !

!JavaContext methodsFor:'accessing'!

class:aJavaClass method:aJavaMethod sender:aContext stack:s frameBase:f
    class := aJavaClass.
    method := aJavaMethod.
    sender := aContext.
    stack := s.
    frameBase := f

    "Modified: 1.5.1996 / 17:39:34 / cg"
    "Created: 1.5.1996 / 17:42:27 / cg"
!

method
    ^ method.

    "Created: 1.5.1996 / 15:00:23 / cg"
    "Modified: 1.5.1996 / 15:00:47 / cg"
!

pc
    ^ pc
!

sender
    ^ sender.

    "Modified: 1.5.1996 / 15:00:47 / cg"
    "Created: 1.5.1996 / 15:01:18 / cg"
!

setPC:anInteger
    pc := anInteger
! !

!JavaContext methodsFor:'printing & storing'!

printString
    |mS recCls|

    mS := 'JAVA-' , class name , '::' , method signatureName.

    (recCls := self receiver class) ~~ class ifTrue:[
        ^ recCls name , '>>' , mS
    ].

    ^ mS

    "Created: 1.5.1996 / 15:07:43 / cg"
    "Modified: 1.5.1996 / 17:58:16 / cg"
! !

!JavaContext class methodsFor:'documentation'!

version
    ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaContext.st,v 1.4 1996/05/03 18:54:53 cg Exp $'
! !