debug: use #ifdef guards
[mate.git] / Mate / Utilities.hs
index 2d755ccf4c3385f6ceeec382e184c99ce6abafb2..05220fce5447d5ded8ae15e72e91d51c57293b03 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Mate.Utilities where
 
@@ -24,10 +25,18 @@ buildMethodID cls idx = MethodInfo (ntName nt) rc (ntSignature nt)
   where
   (CMethod rc nt) = (constsPool cls) M.! idx
 
-buildFieldID :: Class Resolved -> Word16 -> StaticFieldInfo
-buildFieldID cls idx = StaticFieldInfo rc (ntName fnt)
+buildStaticFieldID :: Class Resolved -> Word16 -> StaticFieldInfo
+buildStaticFieldID cls idx = StaticFieldInfo rc (ntName fnt)
   where (CField rc fnt) = (constsPool cls) M.! idx
 
+buildFieldOffset :: Class Resolved -> Word16 -> (B.ByteString, B.ByteString)
+buildFieldOffset cls idx = (rc, ntName fnt)
+  where (CField rc fnt) = (constsPool cls) M.! idx
+
+buildClassID :: Class Resolved -> Word16 -> B.ByteString
+buildClassID cls idx = cl
+  where (CClass cl) = (constsPool cls) M.! idx
+
 methodGetArgsCount :: Class Resolved -> Word16 -> Word32
 methodGetArgsCount cls idx = fromIntegral $ length args
   where
@@ -39,6 +48,7 @@ methodHaveReturnValue :: Class Resolved -> Word16 -> Bool
 methodHaveReturnValue cls idx = case ret of
     ReturnsVoid -> False;
     (Returns IntType) -> True;
+    (Returns (ObjectType _)) -> True;
     _ -> error "methodHaveReturnValue: todo"
   where
   (CMethod _ nt) = (constsPool cls) M.! idx