X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=TestGen.hs;h=886751ddc2eb81e9b9a3fb263409aa1508829113;hb=e4964e8a0d74339ed7433082d9c49cde2d7dc1b9;hp=540a7da0d139ae257eea1ba39936679cec3755ce;hpb=5f0e7d26a4a5c125b8f68539505d831352e9515b;p=hs-java.git diff --git a/TestGen.hs b/TestGen.hs index 540a7da..886751d 100644 --- a/TestGen.hs +++ b/TestGen.hs @@ -2,35 +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 - -valueOf :: NameType Method -valueOf = NameType "valueOf" $ MethodSignature [IntType] (Returns Java.Lang.integerClass) - test :: Generate () test = do newMethod [ACC_PUBLIC] "" [] ReturnsVoid $ do + setStackSize 1 + aload_ I0 invokeSpecial Java.Lang.object Java.Lang.objectInit i0 RETURN - newMethod [ACC_PUBLIC, ACC_STATIC] "main" [Array Nothing Java.Lang.stringClass] ReturnsVoid $ do - iconst_5 - invokeStatic "Test" hello - i0 RETURN + hello <- newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do + setStackSize 8 - newMethod [ACC_PUBLIC, ACC_STATIC] "hello" [IntType] ReturnsVoid $ do getStaticField Java.Lang.system Java.IO.out loadString "Здравствуй, мир!" invokeVirtual Java.IO.printStream Java.IO.println @@ -41,12 +32,22 @@ test = do dup iconst_0 iload_ I0 - invokeStatic Java.Lang.integer valueOf + invokeStatic Java.Lang.integer Java.Lang.valueOfInteger aastore invokeVirtual Java.IO.printStream Java.IO.printf pop i0 RETURN + newMethod [ACC_PUBLIC, ACC_STATIC] "main" [arrayOf Java.Lang.stringClass] ReturnsVoid $ do + setStackSize 1 + + iconst_5 + invokeStatic "Test" hello + i0 RETURN + + return () + +testClass :: Class Resolved testClass = generate "Test" test main = do