Fixes for 'pep', the Java VM in Self

Chris Double chris.double at
Wed Sep 18 09:40:38 UTC 2013

I've done a pull request with some bitrot fixes for 'applications/pep':


These changes allow loading some Java class files that have been
compiled with recent JVM's. Simple test cases work but I've been unable
to get java.lang.System.out to work. This seems to require calling
'initializeSystemClass' and I've added this where I think it should go
but I get an infinite loop when using it. I'm still debugging this but
thought I'd make what works at the moment available.

When testing, ensure that before starting Self you have your CLASSPATH
environment variable set to the location of the Java class library
.class files and the 'objects/applications/pep' directory. Something

    export CLASSPATH=/home/me/self/objects/applications/pep:/home/me/jvm/classes'

I obtained the Java library classes by extracting the contents of
'rt.jar' from a local java installation.

To test 'SimpleTest1' and 'SimpleTest2' make sure they're compiled:

    cd objects/applications/pep
    javac SimpleTest1
    javac SimpleTest2

To load 'pep' in self:

    bootstrap read: 'pep' From: 'applications/pep'

To test SimpleTest1 and SimpleTest2:

    pep tests testSimpleTest1
    pep tests testSimpleTest1

To test an arbitary Java class file:

    pep tests testClassNamed: 'Foo'

To view loaded classes and drill down to see their methods and converted Self code, etc:

    pep loadedClasses class_java_lang_System


More information about the Self-interest mailing list