X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=TestGen.hs;h=69786e995f988129d64905da5aace54b351d769b;hb=d47b4af2d4cf72352782e8c88a6e03670ca15737;hp=a42fa052c64ee8e058ad68b17c4707dc13eb3315;hpb=0efcccbb68402feefe2aed7d0d0f091c18f97f14;p=hs-java.git diff --git a/TestGen.hs b/TestGen.hs index a42fa05..69786e9 100644 --- a/TestGen.hs +++ b/TestGen.hs @@ -2,27 +2,26 @@ import qualified Data.ByteString.Lazy as B -import JVM.Types import JVM.ClassFile import JVM.Converter import JVM.Assembler -import JVM.Generator -import JVM.Generator.Instructions +import JVM.Builder import qualified Java.Lang import qualified Java.IO -hello :: NameType Method -hello = NameType "hello" $ MethodSignature [IntType] ReturnsVoid - test :: Generate () test = do newMethod [ACC_PUBLIC] "" [] ReturnsVoid $ do + setStackSize 1 + aload_ I0 invokeSpecial Java.Lang.object Java.Lang.objectInit i0 RETURN hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do + setStackSize 8 + getStaticField Java.Lang.system Java.IO.out loadString "Здравствуй, мир!" invokeVirtual Java.IO.printStream Java.IO.println @@ -39,13 +38,16 @@ test = do pop i0 RETURN - newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do + newMethod [ACC_PUBLIC, ACC_STATIC] "main" [arrayOf Java.Lang.stringClass] ReturnsVoid $ do + setStackSize 1 + iconst_5 invokeStatic "Test" hello i0 RETURN return () +testClass :: Class Direct testClass = generate "Test" test main = do