--- a/Java.st Fri Feb 06 00:33:06 1998 +0000
+++ b/Java.st Fri Feb 06 01:56:01 1998 +0000
@@ -690,21 +690,21 @@
self flushClasses.
ObjectMemory allObjectsDo:[:someObject |
- someObject isBehavior ifTrue:[
- someObject isJavaClass ifTrue:[
- someObject setConstantPool:nil.
- someObject setInterfaces:nil.
- someObject setMethodDictionary:(MethodDictionary new).
-someObject fullName printCR.
- ]
- ].
- (someObject isMemberOf:JavaMethod) ifTrue:[
- someObject setJavaClass:nil.
- someObject setExceptionTable:nil.
- ].
- (someObject isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
- someObject constantPool:nil
- ].
+ someObject isBehavior ifTrue:[
+ someObject isJavaClass ifTrue:[
+ someObject setConstantPool:nil.
+ someObject setInterfaces:nil.
+ someObject setMethodDictionary:(MethodDictionary new).
+'JAVA [info]: flushing ' print. someObject fullName printCR.
+ ]
+ ].
+ (someObject isMemberOf:JavaMethod) ifTrue:[
+ someObject setJavaClass:nil.
+ someObject setExceptionTable:nil.
+ ].
+ (someObject isMemberOf:JavaUnresolvedClassConstant) ifTrue:[
+ someObject constantPool:nil
+ ].
].
self flushClasses
@@ -712,7 +712,7 @@
Java flushAllJavaResources
"
- "Modified: 7.4.1997 / 16:49:23 / cg"
+ "Modified: / 6.2.1998 / 02:25:16 / cg"
!
flushClasses
@@ -1041,6 +1041,6 @@
!Java class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/Java.st,v 1.60 1998/02/05 11:13:14 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/Java.st,v 1.61 1998/02/06 01:56:01 cg Exp $'
! !
Java initialize!
--- a/JavaClassReader.st Fri Feb 06 00:33:06 1998 +0000
+++ b/JavaClassReader.st Fri Feb 06 01:56:01 1998 +0000
@@ -156,11 +156,11 @@
]
].
- ('JAVA: no file found for: ' , clsName) infoPrintCR.
+ ('JAVA [info]: no file found for: ' , clsName) infoPrintCR.
^ nil
"Modified: / 14.8.1997 / 11:38:42 / stefan"
- "Modified: / 27.1.1998 / 21:59:29 / cg"
+ "Modified: / 6.2.1998 / 02:20:48 / cg"
!
loadFile:aFilename
@@ -336,29 +336,30 @@
|inStream javaClass|
Silent ifFalse:[
- 'reading ' print. aFilename print. ' ...' printNL.
+ 'reading ' print. aFilename print. ' ...' printNL.
].
inStream := aFilename asFilename readStream.
inStream isNil ifTrue:[
- ('no file: ' , aFilename) printCR.
- self halt.
- ^ nil
+ ('JAVA [info]: no file: ' , aFilename) printCR.
+ self halt.
+ ^ nil
].
javaClass := self new readStream:inStream ignoring:classesBeingLoaded.
javaClass notNil ifTrue:[
- javaClass setBinaryFilePath:(inStream pathName).
+ javaClass setBinaryFilePath:(inStream pathName).
].
inStream close.
AbsolutelySilent ifFalse:[
- ' ... loaded ' print. javaClass displayString printNL.
+ ' ... loaded ' print. javaClass displayString printNL.
].
^ javaClass
- "Created: 15.4.1996 / 14:58:53 / cg"
+ "Created: / 15.4.1996 / 14:58:53 / cg"
+ "Modified: / 6.2.1998 / 02:20:58 / cg"
!
readStream:aStream
@@ -1415,6 +1416,6 @@
!JavaClassReader class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.55 1998/01/27 21:04:33 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaClassReader.st,v 1.56 1998/02/06 01:55:46 cg Exp $'
! !
JavaClassReader initialize!
--- a/JavaEmbeddedFrameView.st Fri Feb 06 00:33:06 1998 +0000
+++ b/JavaEmbeddedFrameView.st Fri Feb 06 01:56:01 1998 +0000
@@ -234,13 +234,13 @@
(appletThread notNil
and:[appletThread isDead not])ifTrue:[
- 'EmbeddedAppletFrame [info]: send APPLET_STOP ...' infoPrintCR.
+"/ 'EmbeddedAppletFrame [info]: send APPLET_STOP ...' infoPrintCR.
self appletSTOP.
- 'EmbeddedAppletFrame [info]: send APPLET_DESTROY ...' infoPrintCR.
+"/ 'EmbeddedAppletFrame [info]: send APPLET_DESTROY ...' infoPrintCR.
self appletDESTROY.
- 'EmbeddedAppletFrame [info]: send APPLET_DISPOSE ...' infoPrintCR.
+"/ 'EmbeddedAppletFrame [info]: send APPLET_DISPOSE ...' infoPrintCR.
self appletDISPOSE.
"/
@@ -267,7 +267,7 @@
].
appletThread := nil
- "Modified: / 5.2.1998 / 12:10:01 / cg"
+ "Modified: / 6.2.1998 / 02:19:18 / cg"
! !
!JavaEmbeddedFrameView methodsFor:'initialize / release'!
@@ -424,5 +424,5 @@
!JavaEmbeddedFrameView class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaEmbeddedFrameView.st,v 1.6 1998/02/05 11:10:33 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaEmbeddedFrameView.st,v 1.7 1998/02/06 01:55:31 cg Exp $'
! !
--- a/JavaVM.st Fri Feb 06 00:33:06 1998 +0000
+++ b/JavaVM.st Fri Feb 06 01:56:01 1998 +0000
@@ -1218,7 +1218,9 @@
]
] ifFalse:[
"/ post a configuration event
- 'need event' printCR.
+ EventTrace == true ifTrue:[
+ 'JAVA: configure: need event' printCR.
+ ]
].
view origin:x@y extent:ext.
].
@@ -1226,7 +1228,7 @@
^ nil
"Created: / 4.1.1998 / 18:00:52 / cg"
- "Modified: / 27.1.1998 / 21:38:48 / cg"
+ "Modified: / 6.2.1998 / 01:45:46 / cg"
!
createdWindowsView:aView for:aJavaPeer
@@ -2398,9 +2400,9 @@
name := nativeContext argAt:1.
name := Java as_ST_String:name.
- ('JAVA: findSystemClass0 for ' , name , ' loader is ' , loader displayString) infoPrintCR.
+"/ ('JAVA: findSystemClass0 for ' , name , ' loader is ' , loader displayString) infoPrintCR.
loader class == (Java classForName:'java.util.SystemClassLoader') ifTrue:[
- Java classForName:name.
+ Java classForName:name.
].
"/ JavaClassReader classLoaderQuerySignal answer:nil "loader"
@@ -2414,18 +2416,18 @@
"/ self halt:'class: ' , name , ' not found.'.
"/ self internalError:'class: ' , name , ' not found.'.
- self
- throwExceptionClassName:'java.lang.ClassNotFoundException'
- withMessage:'class: ' , name , ' not found.'.
- ^ nil
- ].
-
- 'JAVA: findSystemClass0 - loaded: ' infoPrint. class fullName infoPrintCR.
+ self
+ throwExceptionClassName:'java.lang.ClassNotFoundException'
+ withMessage:'class: ' , name , ' not found.'.
+ ^ nil
+ ].
+
+"/ 'JAVA: findSystemClass0 - loaded: ' infoPrint. class fullName infoPrintCR.
jClass := self javaClassObjectForClass:class.
^ jClass
"Created: / 5.1.1998 / 02:53:04 / cg"
- "Modified: / 23.1.1998 / 17:47:30 / cg"
+ "Modified: / 6.2.1998 / 02:16:50 / cg"
!
_ClassLoader_getSystemResourceAsStream0:nativeContext
@@ -3370,14 +3372,16 @@
jThread := nativeContext receiver.
stProcess := JavaVM stProcessForJavaThread:jThread.
stProcess isNil ifTrue:[
- ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
- ^ 0 "FALSE"
+ ThreadTrace == true ifTrue:[
+ ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
+ ].
+ ^ 0 "FALSE"
].
stProcess isDead ifTrue:[^ 0 "FALSE"].
^ 1 "TRUE"
"Created: / 5.1.1998 / 02:03:51 / cg"
- "Modified: / 8.1.1998 / 01:07:03 / cg"
+ "Modified: / 6.2.1998 / 02:15:01 / cg"
!
_Thread_isInterrupted:nativeContext
@@ -3409,13 +3413,15 @@
jThread := nativeContext receiver.
stProcess := JavaVM stProcessForJavaThread:jThread.
stProcess isNil ifTrue:[
- ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
- ^ nil "void"
+ ThreadTrace == true ifTrue:[
+ ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
+ ].
+ ^ nil "void"
].
stProcess resume
- "Modified: / 8.1.1998 / 00:14:43 / cg"
"Created: / 8.1.1998 / 01:06:27 / cg"
+ "Modified: / 6.2.1998 / 02:15:08 / cg"
!
_Thread_setPriority0:nativeMethodContext
@@ -3426,17 +3432,19 @@
prio := nativeMethodContext argAt:1.
p isNil ifTrue:[
- 'JAVA [info]: no process yet (in setPriority)' infoPrintCR.
- ^ nil
+ ThreadTrace == true ifTrue:[
+ 'JAVA [info]: no process yet (in setPriority)' infoPrintCR.
+ ].
+ ^ nil
].
ThreadTrace ifTrue:[
- 'JAVA [info]: setPrio: ' print. t print. ' pri= ' print. prio print. ' p= ' print. p printNL.
+ 'JAVA [info]: setPrio: ' print. t print. ' pri= ' print. prio print. ' p= ' print. p printNL.
].
^ nil
"Created: / 2.1.1998 / 19:05:55 / cg"
- "Modified: / 2.1.1998 / 22:38:20 / cg"
+ "Modified: / 6.2.1998 / 02:28:18 / cg"
!
_Thread_sleep:nativeContext
@@ -3536,30 +3544,34 @@
stProcess := JavaVM stProcessForJavaThread:jThread.
stProcess isNil ifTrue:[
- ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
- ^ nil "void"
+ ThreadTrace == true ifTrue:[
+ ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
+ ].
+ ^ nil "void"
].
death := nativeContext argAt:1.
stProcess
- interruptWith:[
- JavaVM javaExceptionSignal handle:[:ex |
- Processor activeProcess terminate
- ] do:[
- ('JAVA: thread exit: ' , jThread displayString) infoPrintNL.
- jThread perform:#'exit()V'.
- self throwException:death.
- ]
- ].
+ interruptWith:[
+ JavaVM javaExceptionSignal handle:[:ex |
+ Processor activeProcess terminate
+ ] do:[
+ ThreadTrace == true ifTrue:[
+ ('JAVA: thread exit: ' , jThread displayString) infoPrintNL.
+ ].
+ jThread perform:#'exit()V'.
+ self throwException:death.
+ ]
+ ].
stProcess resume.
[stProcess isDead] whileFalse:[
- stProcess resume.
- Delay waitForSeconds:0.1
+ stProcess resume.
+ Delay waitForSeconds:0.1
].
stProcess terminate
"Created: / 8.1.1998 / 13:11:17 / cg"
- "Modified: / 9.1.1998 / 03:49:45 / cg"
+ "Modified: / 6.2.1998 / 02:18:15 / cg"
!
_Thread_suspend0:nativeContext
@@ -3570,13 +3582,15 @@
jThread := nativeContext receiver.
stProcess := JavaVM stProcessForJavaThread:jThread.
stProcess isNil ifTrue:[
- ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
- ^ nil "void"
+ ThreadTrace == true ifTrue:[
+ ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
+ ].
+ ^ nil "void"
].
stProcess suspend
"Created: / 8.1.1998 / 01:05:49 / cg"
- "Modified: / 8.1.1998 / 01:06:36 / cg"
+ "Modified: / 6.2.1998 / 02:15:23 / cg"
!
_Thread_yield:nativeContext
@@ -3587,17 +3601,19 @@
jThread := nativeContext receiver.
stProcess := JavaVM stProcessForJavaThread:jThread.
stProcess isNil ifTrue:[
- ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
- ^ nil "void"
+ ThreadTrace == true ifTrue:[
+ ('JAVA: no stProcess for javaThread: ' , jThread displayString) printNL.
+ ].
+ ^ nil "void"
].
stProcess == Processor activeProcess ifTrue:[
- Processor yield.
+ Processor yield.
] ifFalse:[
- self halt.
+ self halt.
].
"Created: / 5.1.1998 / 02:03:51 / cg"
- "Modified: / 8.1.1998 / 01:06:41 / cg"
+ "Modified: / 6.2.1998 / 02:15:29 / cg"
!
_Throwable_fillInStackTrace:nativeContext
@@ -4163,11 +4179,11 @@
|id|
id := nativeContext argAt:1.
-'JAVA: MozillaAppletContext_pMochaOnLoad: ' print. id printNL.
+"/ 'JAVA: MozillaAppletContext_pMochaOnLoad: ' print. id printNL.
^ nil
- "Modified: / 21.8.1997 / 16:40:45 / cg"
"Created: / 6.1.1998 / 20:37:13 / cg"
+ "Modified: / 6.2.1998 / 02:13:09 / cg"
!
_MozillaAppletContext_pShowStatus:nativeContext
@@ -4398,12 +4414,12 @@
imgRep := nativeContext receiver.
bool := nativeContext argAt:1.
"/ self halt.
- 'JAVA: ImageRepresentation_finish ignored for now' infoPrintCR.
+"/ 'JAVA: ImageRepresentation_finish ignored for now' infoPrintCR.
^ 1 "/ true
"Created: / 8.1.1998 / 00:11:40 / cg"
- "Modified: / 13.1.1998 / 13:41:35 / cg"
+ "Modified: / 6.2.1998 / 02:12:54 / cg"
!
_ImageRepresentation_imageDraw:nativeContext
@@ -4519,8 +4535,9 @@
!
_ImageRepresentation_setBytePixels:nativeContext
- |imgRep x y w h clrModel bytes i1 i2
- img depth cmap rgbMap opaque transparentColorIndex|
+ |imgRep x y w h clrModel bytes offs i2
+ img depth cmap rgbMap opaque transparentColorIndex
+ scanLineWidth nBytes srcIdx dstIdx|
imgRep := nativeContext receiver.
x := nativeContext argAt:1.
@@ -4529,54 +4546,63 @@
h := nativeContext argAt:4.
clrModel := nativeContext argAt:5.
bytes := nativeContext argAt:6.
- i1 := nativeContext argAt:7. "/ offset ??
- i2 := nativeContext argAt:8. "/ scanLineWidth ??
-
-"/ self halt.
+ offs := nativeContext argAt:7. "/ offset ??
+ scanLineWidth := nativeContext argAt:8.
depth := clrModel instVarNamed:'pixel_bits'.
(clrModel instVarNamed:'map_size') ~~ 0 ifTrue:[
- rgbMap := clrModel instVarNamed:'rgb'.
- cmap := Array new:rgbMap size.
- rgbMap
- keysAndValuesDo:[:idx :rgb |
- cmap at:idx put:(Color rgbValue:(rgb bitAnd:16rFFFFFF))
- ].
+ rgbMap := clrModel instVarNamed:'rgb'.
+ cmap := Array new:rgbMap size.
+ rgbMap
+ keysAndValuesDo:[:idx :rgb |
+ cmap at:idx put:(Color rgbValue:(rgb bitAnd:16rFFFFFF))
+ ].
].
opaque := (clrModel instVarNamed:'opaque') ~~ 0.
opaque ifFalse:[
- transparentColorIndex := clrModel instVarNamed:'transparent_index'
+ transparentColorIndex := clrModel instVarNamed:'transparent_index'
].
img := imgRep instVarNamed:'pData'.
(img isNil or:[img == 0]) ifTrue:[
- img := Image width:w height:h depth:depth fromArray:bytes.
- cmap notNil ifTrue:[
- img colorMap:cmap.
- img photometric:#palette
- ].
- opaque ifFalse:[
- img mask:(ImageReader
- buildMaskFromColor:transparentColorIndex
- for:bytes
- width:w
- height:h)
- ].
-
- imgRep instVarNamed:'pData' put:img.
+ (offs ~~ 0 or:[scanLineWidth ~~ w]) ifTrue:[
+ nBytes := ByteArray new:w*h.
+ srcIdx := offs+1.
+ dstIdx := 1.
+ 1 to:h do:[:y |
+ nBytes replaceFrom:dstIdx to:(dstIdx+w-1) with:bytes startingAt:srcIdx.
+ srcIdx := srcIdx + scanLineWidth.
+ dstIdx := dstIdx + w.
+ ].
+ bytes := nBytes.
+ ].
+ img := Image width:w height:h depth:depth fromArray:bytes.
+ cmap notNil ifTrue:[
+ img colorMap:cmap.
+ img photometric:#palette
+ ].
+ opaque ifFalse:[
+ img mask:(ImageReader
+ buildMaskFromColor:transparentColorIndex
+ for:bytes
+ width:w
+ height:h)
+ ].
+
+ imgRep instVarNamed:'pData' put:img.
] ifFalse:[
- self halt.
+ self halt.
].
^ 1.
"Created: / 7.1.1998 / 22:31:46 / cg"
- "Modified: / 14.1.1998 / 14:51:44 / cg"
+ "Modified: / 6.2.1998 / 02:50:13 / cg"
!
_ImageRepresentation_setIntPixels:nativeContext
- |imgRep x y w h clrModel ints i1 i2
+ |imgRep x y w h clrModel ints offs scanLineWidth
img depth cmap rgbMap opaque transparentColorIndex
bytes srcIdx dstIdx val red green blue|
@@ -4587,9 +4613,9 @@
h := nativeContext argAt:4.
clrModel := nativeContext argAt:5.
ints := nativeContext argAt:6.
- i1 := nativeContext argAt:7. "/ offset ??
- i2 := nativeContext argAt:8. "/ scanLineWidth ??
-
+ offs := nativeContext argAt:7. "/ offset ??
+ scanLineWidth := nativeContext argAt:8. "/ scanLineWidth ??
+self halt.
opaque := false.
depth := clrModel instVarNamed:'pixel_bits'.
@@ -4628,7 +4654,7 @@
dstIdx := dstIdx + 3.
srcIdx := srcIdx + 1.
].
- srcIdx := srcIdx + (i2 - w).
+ srcIdx := srcIdx + (scanLineWidth - w).
].
img := Depth24Image width:w height:h depth:24 fromArray:bytes.
] ifFalse:[
@@ -4656,7 +4682,7 @@
^ 1.
"Created: / 1.2.1998 / 17:38:47 / cg"
- "Modified: / 6.2.1998 / 00:52:39 / cg"
+ "Modified: / 6.2.1998 / 02:37:35 / cg"
!
_OffScreenImageSource_sendPixels:nativeContext
@@ -5176,12 +5202,12 @@
|view|
view := self viewForWPeer:nativeContext.
-'getFocus - ' print. view displayString printCR.
+"/ 'getFocus - ' print. view displayString printCR.
view getKeyboardFocus
"Created: / 7.1.1998 / 22:30:03 / cg"
- "Modified: / 16.1.1998 / 14:42:32 / cg"
+ "Modified: / 6.2.1998 / 02:22:17 / cg"
!
_WComponentPeer_reshape:nativeContext
@@ -5474,7 +5500,9 @@
ifTrue:[
((frame := jFrame instVarAt:pDataIdx) notNil
and:[frame ~~ 0]) ifTrue:[
- 'JAVA: targetFrame view already created: ' infoPrintCR.
+ WindowCreationTrace == true ifTrue:[
+ 'JAVA: targetFrame view already created: ' infoPrintCR.
+ ].
"/ sigh; pData was renamed to pNativeWidget in jdk1.2 ...
pDataIdx := jFramePeer class instVarOffsetOf:'pNativeWidget'.
pDataIdx isNil ifTrue:[
@@ -5488,8 +5516,10 @@
].
(frame notNil and:[frame ~~ 0]) ifTrue:[
- 'JAVA: frame view already created: ' infoPrint.
- jFramePeer class name infoPrintCR.
+ WindowCreationTrace == true ifTrue:[
+ 'JAVA: frame view already created: ' infoPrint.
+ jFramePeer class name infoPrintCR.
+ ].
] ifFalse:[
frame := StandardSystemView new.
self createdWindowsView:frame for:jFramePeer.
@@ -5502,7 +5532,7 @@
].
"Created: / 4.1.1998 / 17:56:39 / cg"
- "Modified: / 27.1.1998 / 21:35:15 / cg"
+ "Modified: / 6.2.1998 / 02:29:00 / cg"
!
_WFramePeer_setMenuBar0:nativeContext
@@ -6988,7 +7018,7 @@
^ Array with:jEv1 with:jEv2.
].
(type == #'focusIn') ifTrue:[
-'focusIn' printCR.
+"/ 'focusIn' printCR.
jComponentEventClass := Java classForName:'java.awt.event.FocusEvent'.
id := (jComponentEventClass instVarNamed:'FOCUS_GAINED').
jEv := jComponentEventClass newCleared "basicNew".
@@ -6996,7 +7026,7 @@
^ Array with:jEv.
].
(type == #'focusOut') ifTrue:[
-'focusOut' printCR.
+"/ 'focusOut' printCR.
jComponentEventClass := Java classForName:'java.awt.event.FocusEvent'.
id := (jComponentEventClass instVarNamed:'FOCUS_LOST').
jEv := jComponentEventClass newCleared "basicNew".
@@ -7004,7 +7034,7 @@
^ Array with:jEv.
].
(type == #'mapped') ifTrue:[
-'mapped' printCR.
+"/ 'mapped' printCR.
jComponentEventClass := Java classForName:'java.awt.event.ComponentEvent'.
id := (jComponentEventClass instVarNamed:'COMPONENT_SHOWN').
"/ x := eventArgs at:1.
@@ -7014,7 +7044,7 @@
^ Array with:jEv.
].
(type == #'unmapped') ifTrue:[
-'unmapped' printCR.
+"/ 'unmapped' printCR.
jComponentEventClass := Java classForName:'java.awt.event.ComponentEvent'.
id := (jComponentEventClass instVarNamed:'COMPONENT_HIDDEN').
"/ x := eventArgs at:1.
@@ -7035,7 +7065,7 @@
^ nil.
"Created: / 6.1.1998 / 20:38:58 / cg"
- "Modified: / 24.1.1998 / 19:17:04 / cg"
+ "Modified: / 6.2.1998 / 02:22:43 / cg"
!
doWindowsEventThread
@@ -7231,7 +7261,9 @@
].
"/ post it (them) to the event queue
-'postEvent to Java ...' printCR.
+ EventTrace == true ifTrue:[
+ 'postEvent to Java ...' printCR.
+ ].
jWToolKit class
invoke:#'postEvent(Ljava/awt/AWTEvent;)V'
with:jEv.
@@ -7240,12 +7272,12 @@
^ false
"Created: / 6.1.1998 / 20:36:36 / cg"
- "Modified: / 5.2.1998 / 11:18:13 / cg"
+ "Modified: / 6.2.1998 / 01:45:08 / cg"
! !
!JavaVM class methodsFor:'documentation'!
version
- ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaVM.st,v 1.20 1998/02/06 00:33:06 cg Exp $'
+ ^ '$Header: /home/jv/Projects/SmalltalkX/repositories/cvs/stx/libjava/JavaVM.st,v 1.21 1998/02/06 01:55:03 cg Exp $'
! !
JavaVM initialize!