hs-java: upgrade to 0.3.1
[mate.git] / Mate / Strings.hs
index 36b2342eb1f8b1c97f7fb0679921fc32ce33c1c9..f1762b0a5ae1e9790639b69857ebf9bc5e9f9e82 100644 (file)
@@ -1,6 +1,5 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE ForeignFunctionInterface #-}
 #include "debug.h"
 module Mate.Strings (
   getUniqueStringAddr
@@ -14,6 +13,8 @@ import qualified Data.ByteString.Internal as BI
 import Text.Printf
 #endif
 
+import JVM.ClassFile
+
 import Foreign.Ptr
 import Foreign.Marshal.Utils
 import Foreign.Marshal.Array
@@ -25,12 +26,11 @@ import Mate.GarbageAlloc
 
 getUniqueStringAddr :: B.ByteString -> IO Word32
 getUniqueStringAddr str = do
-  smap <- get_stringsmap >>= ptr2stringsmap
+  smap <- getStringMap
   case M.lookup str smap of
     Nothing -> do
       addr <- allocateJavaString str
-      let smap' = M.insert str addr smap
-      stringsmap2ptr smap' >>= set_stringsmap
+      setStringMap $ M.insert str addr smap
       return addr
     Just addr -> return addr
 
@@ -38,7 +38,7 @@ allocateJavaString :: B.ByteString -> IO Word32
 allocateJavaString str = do
   -- TODO(bernhard): is this also true for UTF8 stuff?
   let strlen = fromIntegral $ B.length str
-  arr <- newArray ((map fromIntegral $ B.unpack str) :: [Word8])
+  arr <- newArray ((map fromIntegral $ B.unpack str) :: [Word8])
   -- (+1) for \0
   newstr <- mallocString (strlen + 1)
   BI.memset newstr 0 (fromIntegral $ strlen + 1)