From fe32ff391c03f3418b9621acb90c3345306461a9 Mon Sep 17 00:00:00 2001 From: Bernhard Urban Date: Thu, 26 Apr 2012 17:42:34 +0200 Subject: [PATCH] tests: don't use `pop' hack anymore, but System.out.printf \o/ --- Makefile | 54 ++++++++++++++---------------- Mate/X86CodeGen.hs | 7 +--- tests/AbsurdlyHuge.java | 67 ++++++++++++++++--------------------- tests/ArgumentPassing1.java | 4 +-- tests/Array1.java | 4 +-- tests/CallConv1.java | 6 +--- tests/CallConv2.java | 6 +--- tests/CallConv3.java | 8 ++--- tests/DifferentClass1.java | 4 +-- tests/Fac.java | 18 ++++------ tests/Fib.java | 9 ++--- tests/Instance1.java | 5 ++- tests/Instance2.java | 2 +- tests/Instance3.java | 4 +-- tests/Instance4.java | 19 ----------- tests/Instance5.java | 21 ------------ tests/Integer1.java | 2 +- tests/Native1.java | 18 ---------- tests/Native2.java | 2 +- tests/Native3.java | 2 +- tests/Static1.java | 2 +- tests/Static2.java | 2 +- tests/Static3.java | 3 +- tests/Static4.java | 6 ++-- tests/Static5.java | 5 ++- tests/Static6.java | 2 +- tests/Static7.java | 3 +- tests/Static8.java | 6 ++-- tests/Strings1.java | 12 +++---- tests/Test.java | 11 ------ tests/While.java | 5 +++ 31 files changed, 108 insertions(+), 211 deletions(-) delete mode 100644 tests/Instance4.java delete mode 100644 tests/Instance5.java delete mode 100644 tests/Native1.java delete mode 100644 tests/Test.java diff --git a/Makefile b/Makefile index 87aca3b..0f3f55c 100644 --- a/Makefile +++ b/Makefile @@ -18,57 +18,55 @@ GHC_LD := -optl-Xlinker -optl-x all: mate $(CLASS_FILES) test: mate $(CLASS_FILES) - ./$< tests/Fib | grep mainresult + ./$< tests/While | grep -e "^result" + @printf "should be: 0x%08x 0x%08x\n" 0x19 0x19 + ./$< tests/Fib | grep -e "^result" @printf "should be: 0x%08x\n" 0x2ac2 - ./$< tests/Fac | grep mainresult + ./$< tests/Fac | grep -e "^result" @printf "should be: 0x%08x\n" 0x63e1a - ./$< tests/ArgumentPassing1 | grep mainresult + ./$< tests/ArgumentPassing1 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x92 $$(((0 - 0x1337) & 0xffffffff)) - ./$< tests/DifferentClass1 | grep mainresult + ./$< tests/DifferentClass1 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 8 13 - ./$< tests/Native1 | egrep -i -e '^printsomething: ' - @printf "should be: woot 0x%08x 0x%08x woot 0x%08x\n" 0x1337 0x1338 0x15a5 - ./$< tests/Static1 | grep mainresult + ./$< tests/Static1 | grep -e "^result" @printf "should be: 0x%08x\n" 0x33 - ./$< tests/Static2 | grep mainresult + ./$< tests/Static2 | grep -e "^result" @printf "should be: 0x%08x\n" 0x55 - ./$< tests/Static3 | grep mainresult + ./$< tests/Static3 | grep -e "^result" @printf "should be: 0x%08x\n" 0x6dd - ./$< tests/Static4 | grep mainresult + ./$< tests/Static4 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x33 0x77 - ./$< tests/Static5 | grep mainresult + ./$< tests/Static5 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x33 0x33 - ./$< tests/Static6 | grep mainresult + ./$< tests/Static6 | grep -e "^result" @printf "should be: 0x%08x\n" 0x33 - ./$< tests/Static7 | grep mainresult + ./$< tests/Static7 | grep -e "^result" @printf "should be: 0x%08x\n" $$((0x1337 + 0x555)) - ./$< tests/Static8 | grep mainresult + ./$< tests/Static8 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x33 $$((0x1337 + 0x555)) - ./$< tests/CallConv1 | grep mainresult + ./$< tests/CallConv1 | grep -e "^result" @printf "should be: 0x%08x\n" 0x1337 - ./$< tests/CallConv2 | grep mainresult + ./$< tests/CallConv2 | grep -e "^result" @printf "should be: 0x%08x\n" 0x1337 - ./$< tests/CallConv3 | grep mainresult + ./$< tests/CallConv3 | grep -e "^result" @printf "should be: 0x%08x 0x%08x 0x%08x 0x%08x\n" 0x1000 0x300 0x30 0x7 - ./$< tests/Instance1 | grep mainresult + ./$< tests/Instance1 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x55 0x11 - ./$< tests/Instance2 | grep mainresult + ./$< tests/Instance2 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x198 0x22 - ./$< tests/Instance3 | grep mainresult + ./$< tests/Instance3 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x33 0x44 - ./$< tests/Instance4 | grep mainresult - @printf "should be: 0x%08x 0x%08x\n" 0x1337 0x1337 - ./$< tests/Native2 | grep "printstream" + ./$< tests/Native2 | grep -e "^result" @printf "should be: 0x%08x\n" 0x1337 - ./$< tests/Native3 | egrep -e "^Hello World" + ./$< tests/Native3 | egrep -e "^result" @printf "should be: %s\n" "Hello World" - ./$< tests/Strings1 | egrep -c -e "^okay :-\)" + ./$< tests/Strings1 | egrep -c -e "^result" @printf "should be: %d\n" 3 - ./$< tests/Array1 | grep "printstream" + ./$< tests/Array1 | grep -e "^result" @printf "should be: 0x%08x 0x%08x\n" 0x264 0x8 - ./$< tests/Integer1 | grep mainresult + ./$< tests/Integer1 | grep -e "^result" @printf "should be: 0x%08x\n" 0x1337 - ./$< tests/VarArgs1 | grep mainresult + ./$< tests/VarArgs1 | grep -e "^result" %.class: %.java $(JAVAC) $< diff --git a/Mate/X86CodeGen.hs b/Mate/X86CodeGen.hs index 1eb9057..00e9303 100644 --- a/Mate/X86CodeGen.hs +++ b/Mate/X86CodeGen.hs @@ -226,12 +226,7 @@ emitFromBB method cls hmap = do emit' insn = emit insn >> return Nothing emit :: J.Instruction -> CodeGen e s () - emit POP = do -- print dropped value - calladdr <- getCurrentOffset - -- '5' is the size of the `call' instruction ( + immediate) - let w32_calladdr = 5 + calladdr - let trapaddr = (fromIntegral getaddr :: Word32) - call (trapaddr - w32_calladdr) + emit POP = do -- dropp value add esp (4 :: Word32) emit DUP = push (Disp 0, esp) emit AASTORE = emit IASTORE diff --git a/tests/AbsurdlyHuge.java b/tests/AbsurdlyHuge.java index ba1707d..78cb7a3 100644 --- a/tests/AbsurdlyHuge.java +++ b/tests/AbsurdlyHuge.java @@ -1,41 +1,30 @@ -public class AbsurdlyHuge -{ -public static int absurdlyHuge(int x) -{ -for(int i=0;i