jvm-binary 0.6.1 → 0.7.0
raw patch · 5 files changed
+47/−35 lines, 5 files
Files
- CHANGELOG.md +4/−1
- jvm-binary.cabal +2/−2
- package.yaml +1/−1
- src/Language/JVM/Attribute/StackMapTable.hs +25/−29
- src/Language/JVM/Constant.hs +15/−2
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)