packages feed

jvm-binary 0.6.1 → 0.7.0

raw patch · 5 files changed

+47/−35 lines, 5 files

Files

CHANGELOG.md view
@@ -1,7 +1,10 @@ # Change log -## Version 0.7.0 (PENDING)+## Version 0.8.0 (PENDING) +## Version 0.7.0 +- Create instances for InClass+- Fixed bad encoding of VerificationTypeInfo  ## Version 0.6.1 - Fix a mistake in anewarray
jvm-binary.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 17d1d11b12a950bbd9f3da13a3c7afa3e69c6e165b50365e4a0aff52bc3fe075+-- hash: 66f9e829b672a9a2b77a10d9248e3a98ba13cdf0b8422506f9cb9ffd4858b5eb  name:           jvm-binary-version:        0.6.1+version:        0.7.0 synopsis:       A library for reading Java class-files description:    A library for reading Java class-files. category:       Language, Java, JVM
package.yaml view
@@ -1,5 +1,5 @@ name: jvm-binary-version: '0.6.1'+version: '0.7.0' author: Christian Gram Kalhauge maintainer: Christian Gram Kalhauge <kalhauge@cs.ucla.edu> synopsis: A library for reading Java class-files
src/Language/JVM/Attribute/StackMapTable.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving  #-} {-# LANGUAGE TemplateHaskell     #-}+{-# LANGUAGE LambdaCase          #-} {-| Module      : Language.JVM.Attribute.StackMapTable Copyright   : (c) Christian Gram Kalhauge, 2018@@ -42,6 +43,7 @@ import           Language.JVM.ByteCode import           Language.JVM.Constant import           Language.JVM.Staged+import           Language.JVM.Type import           Language.JVM.Utils  -- | 'StackMapTable' is an Attribute.@@ -112,9 +114,8 @@         = fail $ "Unknown frame type '0x" ++ showHex ft "'"     framegetter -  put (StackMapFrame off frame) = do+  put (StackMapFrame off frame) =     case frame of-       SameFrame         | off <= 63 ->             putWord8 (fromIntegral off)@@ -152,7 +153,6 @@         put ls1         put ls2 --- TODO: Fix that ClassName can be an array. -- | The types info of the stack map frame. data VerificationTypeInfo r   = VTTop@@ -162,36 +162,33 @@   | VTDouble   | VTNull   | VTUninitializedThis-  | VTObject (Ref ClassName r)+  | VTObject (Ref JRefType r)   | VTUninitialized !Word16   instance Binary (VerificationTypeInfo Low) where-  get = do-    tag <- getWord8-    case tag of-      0 -> pure VTTop-      1 -> pure VTInteger-      2 -> pure VTFloat-      3 -> pure VTLong-      4 -> pure VTDouble-      5 -> pure VTNull-      6 -> pure VTUninitializedThis-      7 -> VTObject <$> get-      8 -> VTUninitialized <$> get-      _ -> fail $ "Unexpected tag : '0x" ++ showHex tag "'"+  get = getWord8 >>= \case+    0 -> pure VTTop+    1 -> pure VTInteger+    2 -> pure VTFloat+    3 -> pure VTLong+    4 -> pure VTDouble+    5 -> pure VTNull+    6 -> pure VTUninitializedThis+    7 -> VTObject <$> get+    8 -> VTUninitialized <$> get+    tag -> fail $ "Unexpected tag : '0x" ++ showHex tag "'" -  put a = do-    case a of-      VTTop               -> putWord8 0-      VTInteger           -> putWord8 1-      VTFloat             -> putWord8 2-      VTLong              -> putWord8 3-      VTDouble            -> putWord8 4-      VTNull              -> putWord8 5-      VTUninitializedThis -> putWord8 6-      VTObject s          -> do putWord8 7; put s-      VTUninitialized s   -> do putWord8 8; put s+  put = \case+    VTTop               -> putWord8 0+    VTInteger           -> putWord8 1+    VTFloat             -> putWord8 2+    VTLong              -> putWord8 3+    VTDouble            -> putWord8 4+    VTNull              -> putWord8 5+    VTUninitializedThis -> putWord8 6+    VTObject s          -> do putWord8 7; put s+    VTUninitialized s   -> do putWord8 8; put s  instance ByteCodeStaged StackMapTable where   evolveBC f (StackMapTable ls) =@@ -255,7 +252,6 @@     case x of       VTObject a -> VTObject <$> link a       a         -> return $ unsafeCoerce a-  $(deriveBaseWithBinary ''StackMapTable) $(deriveBase ''StackMapFrame)
src/Language/JVM/Constant.hs view
@@ -107,6 +107,19 @@   , inClassId   :: !(Ref a r)   } +deriving instance Show a                 => Show (InClass a High)+deriving instance Eq a                   => Eq (InClass a High)+deriving instance Ord a                  => Ord (InClass a High)+deriving instance Generic a              => Generic (InClass a High)+deriving instance (Generic a, NFData a)  => NFData (InClass a High)++deriving instance Eq (InClass a Low)+deriving instance Ord (InClass a Low)+deriving instance Show (InClass a Low)+deriving instance NFData (InClass a Low)+deriving instance Generic (InClass a Low)+deriving instance Binary (InClass a Low)+ -- | A method id in a class. type AbsMethodId = InClass MethodId @@ -448,8 +461,8 @@ $(deriveBase ''MethodHandleInterface) $(deriveBaseWithBinary ''InvokeDynamic) -$(deriveBaseWithBinary ''AbsMethodId)-$(deriveBaseWithBinary ''AbsFieldId)+-- $(deriveBaseWithBinary ''AbsMethodId)+-- $(deriveBaseWithBinary ''AbsFieldId) $(deriveBaseWithBinary ''AbsInterfaceMethodId) $(deriveBaseWithBinary ''AbsVariableMethodId)