jvm-binary-0.10.0: A library for reading Java class-files
Copyright(c) Christian Gram Kalhauge 2018
LicenseMIT
Maintainerkalhuage@cs.ucla.edu
Safe HaskellNone
LanguageHaskell2010

Language.JVM.ByteCode

Description

 
Synopsis

Documentation

data ByteCode i Source #

ByteCode constains a list of ByteCode instructions and the size of the bytecode. if the ByteCode is in the Low stage then the byte code instructions are annotated with the byte code offsets.

Instances

Instances details
Eq (ByteCode High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (ByteCode High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic (ByteCode High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (ByteCode High) :: Type -> Type #

Generic (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (ByteCode Low) :: Type -> Type #

Methods

from :: ByteCode Low -> Rep (ByteCode Low) x #

to :: Rep (ByteCode Low) x -> ByteCode Low #

Binary (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

NFData (ByteCode High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ByteCode High -> () #

NFData (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ByteCode Low -> () #

type Rep (ByteCode High) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (ByteCode High) = D1 ('MetaData "ByteCode" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "ByteCode" 'PrefixI 'True) (S1 ('MetaSel ('Just "byteCodeSize") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "byteCodeInstructions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector (ByteCodeInst High)))))
type Rep (ByteCode Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (ByteCode Low) = D1 ('MetaData "ByteCode" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "ByteCode" 'PrefixI 'True) (S1 ('MetaSel ('Just "byteCodeSize") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Word32) :*: S1 ('MetaSel ('Just "byteCodeInstructions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector (ByteCodeInst Low)))))

evolve and devolve

evolveOffset :: EvolveM m => OffsetMap -> ByteCodeOffset -> m ByteCodeIndex Source #

Given an OffsetMap turn a offset into a bytecode index

devolveOffset :: DevolveM m => ByteCode Low -> ByteCodeIndex -> m ByteCodeOffset Source #

Given an OffsetMap turn a offset into a bytecode index

class ByteCodeStaged s where Source #

Methods

evolveBC :: EvolveM m => (ByteCodeOffset -> m ByteCodeIndex) -> s Low -> m (s High) Source #

devolveBC :: DevolveM m => (ByteCodeIndex -> m ByteCodeOffset) -> s High -> m (s Low) Source #

Instances

Instances details
ByteCodeStaged ByteCodeInst Source # 
Instance details

Defined in Language.JVM.ByteCode

ByteCodeStaged VerificationTypeInfo Source # 
Instance details

Defined in Language.JVM.Attribute.StackMapTable

ByteCodeStaged StackMapFrameType Source # 
Instance details

Defined in Language.JVM.Attribute.StackMapTable

ByteCodeStaged StackMapTable Source # 
Instance details

Defined in Language.JVM.Attribute.StackMapTable

ByteCodeStaged LineNumberTable Source # 
Instance details

Defined in Language.JVM.Attribute.LineNumberTable

ByteCodeStaged TypeArgumentTarget Source # 
Instance details

Defined in Language.JVM.Attribute.Annotations

ByteCodeStaged LocalvarEntry Source # 
Instance details

Defined in Language.JVM.Attribute.Annotations

ByteCodeStaged CodeTypeAnnotation Source # 
Instance details

Defined in Language.JVM.Attribute.Annotations

ByteCodeStaged ExceptionTable Source # 
Instance details

Defined in Language.JVM.Attribute.Code

ByteCodeStaged m => ByteCodeStaged (RuntimeInvisibleTypeAnnotations m) Source # 
Instance details

Defined in Language.JVM.Attribute.Annotations

ByteCodeStaged m => ByteCodeStaged (RuntimeVisibleTypeAnnotations m) Source # 
Instance details

Defined in Language.JVM.Attribute.Annotations

ByteCodeStaged m => ByteCodeStaged (TypeAnnotation m) Source # 
Instance details

Defined in Language.JVM.Attribute.Annotations

Managing offsets

data ByteCodeInst r Source #

The byte code instruction is mostly used to succinctly read and write an bytecode instruction from a bytestring.

Constructors

ByteCodeInst 

Instances

Instances details
ByteCodeStaged ByteCodeInst Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (ByteCodeInst High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (ByteCodeInst High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic (ByteCodeInst High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (ByteCodeInst High) :: Type -> Type #

Generic (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (ByteCodeInst Low) :: Type -> Type #

Binary (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

NFData (ByteCodeInst High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ByteCodeInst High -> () #

NFData (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ByteCodeInst Low -> () #

type Rep (ByteCodeInst High) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (ByteCodeInst High) = D1 ('MetaData "ByteCodeInst" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "ByteCodeInst" 'PrefixI 'True) (S1 ('MetaSel ('Just "offset") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteCodeOffset) :*: S1 ('MetaSel ('Just "opcode") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ByteCodeOpr High))))
type Rep (ByteCodeInst Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (ByteCodeInst Low) = D1 ('MetaData "ByteCodeInst" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "ByteCodeInst" 'PrefixI 'True) (S1 ('MetaSel ('Just "offset") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ByteCodeOffset) :*: S1 ('MetaSel ('Just "opcode") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ByteCodeOpr Low))))

type ByteCodeRef i = Choice ByteCodeOffset ByteCodeIndex i Source #

A ByteCode reference is either byte code offset in the low stage, and a byte code index in the high state

type ByteCodeOffset = Word16 Source #

The offset in the byte code

type ByteCodeIndex = Int Source #

The index of the byte code.

type OffsetMap = IntMap ByteCodeIndex Source #

The offset map, maps offset to instruction ids.

indexOffset :: ByteCode Low -> ByteCodeIndex -> Maybe ByteCodeOffset Source #

Return the bytecode offset from the bytecode.

offsetIndex :: OffsetMap -> ByteCodeOffset -> Maybe ByteCodeIndex Source #

Given an OffsetMap turn a offset into a bytecode index

offsetMap :: ByteCode Low -> OffsetMap Source #

Given low byte code we can create an OffsetMap

ByteCode Operations

data ByteCodeOpr r Source #

Constructors

ArrayLoad !ArrayType

aaload baload ...

ArrayStore !ArrayType

aastore bastore ...

Push !(BConstant r) 
Load !LocalType !LocalAddress

aload_0, bload_2, iload 5 ...

Store !LocalType !LocalAddress

aload, bload ...

BinaryOpr !BinOpr !ArithmeticType

iadd ...

Neg !ArithmeticType

ineg ...

BitOpr !BitOpr !WordSize

Exclusively on int and long, identified by the word-size

IncrLocal !LocalAddress !IncrementAmount

Only works on ints, increment local 2

Cast !CastOpr

Only valid on different types

CompareLongs 
CompareFloating !Bool !WordSize

Compare two floating values, 2 is if float or double should be used.

If !CmpOpr !OneOrTwo !(ShortRelativeRef r)

compare with 0 if #2 is False, and two ints from the stack if True. the last value is the offset

IfRef !Bool !OneOrTwo !(ShortRelativeRef r)

check if two objects are equal, or not equal. If #2 is True, compare with null.

Goto !(LongRelativeRef r) 
Jsr !(LongRelativeRef r) 
Ret !LocalAddress 
TableSwitch !(LongRelativeRef r) !(SwitchTable r)

a table switch has 2 values a `default` and a SwitchTable

LookupSwitch !(LongRelativeRef r) (Vector (Int32, LongRelativeRef r))

a lookup switch has a `default` value and a list of pairs.

Get !FieldAccess !(Ref AbsFieldId r) 
Put !FieldAccess !(Ref AbsFieldId r) 
Invoke !(Invocation r) 
New !(Ref ClassName r) 
NewArray !(Choice LowNewArrayType NewArrayType r)

the first argument is the number of dimentions of the array that have to be instantiatied. The JType indicates the type of the instantiated array

ArrayLength 
Throw 
CheckCast !(Ref JRefType r) 
InstanceOf !(Ref JRefType r) 
Monitor !Bool

True => Enter, False => Exit

Return !(Maybe LocalType) 
Nop 
Pop !WordSize 
Dup !WordSize 
DupX1 !WordSize 
DupX2 !WordSize 
Swap 

Instances

Instances details
Eq (ByteCodeOpr High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (ByteCodeOpr High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic (ByteCodeOpr High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (ByteCodeOpr High) :: Type -> Type #

Generic (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (ByteCodeOpr Low) :: Type -> Type #

Binary (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

NFData (ByteCodeOpr High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ByteCodeOpr High -> () #

NFData (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ByteCodeOpr Low -> () #

type Rep (ByteCodeOpr High) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (ByteCodeOpr High) = D1 ('MetaData "ByteCodeOpr" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (((((C1 ('MetaCons "ArrayLoad" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArrayType)) :+: C1 ('MetaCons "ArrayStore" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArrayType))) :+: (C1 ('MetaCons "Push" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (BConstant High))) :+: C1 ('MetaCons "Load" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress)))) :+: ((C1 ('MetaCons "Store" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress)) :+: C1 ('MetaCons "BinaryOpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BinOpr) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArithmeticType))) :+: (C1 ('MetaCons "Neg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArithmeticType)) :+: (C1 ('MetaCons "BitOpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BitOpr) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "IncrLocal" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IncrementAmount)))))) :+: (((C1 ('MetaCons "Cast" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CastOpr)) :+: C1 ('MetaCons "CompareLongs" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CompareFloating" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "If" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CmpOpr) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OneOrTwo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ShortRelativeRef High)))))) :+: ((C1 ('MetaCons "IfRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OneOrTwo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ShortRelativeRef High)))) :+: C1 ('MetaCons "Goto" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef High)))) :+: (C1 ('MetaCons "Jsr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef High))) :+: (C1 ('MetaCons "Ret" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress)) :+: C1 ('MetaCons "TableSwitch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef High)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (SwitchTable High)))))))) :+: ((((C1 ('MetaCons "LookupSwitch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef High)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector (Int32, LongRelativeRef High)))) :+: C1 ('MetaCons "Get" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldAccess) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref AbsFieldId High)))) :+: (C1 ('MetaCons "Put" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldAccess) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref AbsFieldId High))) :+: C1 ('MetaCons "Invoke" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Invocation High))))) :+: ((C1 ('MetaCons "New" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref ClassName High))) :+: C1 ('MetaCons "NewArray" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Choice LowNewArrayType NewArrayType High)))) :+: (C1 ('MetaCons "ArrayLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Throw" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CheckCast" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref JRefType High))))))) :+: (((C1 ('MetaCons "InstanceOf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref JRefType High))) :+: C1 ('MetaCons "Monitor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool))) :+: (C1 ('MetaCons "Return" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe LocalType))) :+: C1 ('MetaCons "Nop" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Pop" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "Dup" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize))) :+: (C1 ('MetaCons "DupX1" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: (C1 ('MetaCons "DupX2" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "Swap" 'PrefixI 'False) (U1 :: Type -> Type)))))))
type Rep (ByteCodeOpr Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (ByteCodeOpr Low) = D1 ('MetaData "ByteCodeOpr" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (((((C1 ('MetaCons "ArrayLoad" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArrayType)) :+: C1 ('MetaCons "ArrayStore" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArrayType))) :+: (C1 ('MetaCons "Push" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (BConstant Low))) :+: C1 ('MetaCons "Load" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress)))) :+: ((C1 ('MetaCons "Store" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalType) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress)) :+: C1 ('MetaCons "BinaryOpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BinOpr) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArithmeticType))) :+: (C1 ('MetaCons "Neg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ArithmeticType)) :+: (C1 ('MetaCons "BitOpr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 BitOpr) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "IncrLocal" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 IncrementAmount)))))) :+: (((C1 ('MetaCons "Cast" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CastOpr)) :+: C1 ('MetaCons "CompareLongs" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CompareFloating" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "If" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CmpOpr) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OneOrTwo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ShortRelativeRef Low)))))) :+: ((C1 ('MetaCons "IfRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 OneOrTwo) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (ShortRelativeRef Low)))) :+: C1 ('MetaCons "Goto" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef Low)))) :+: (C1 ('MetaCons "Jsr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef Low))) :+: (C1 ('MetaCons "Ret" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 LocalAddress)) :+: C1 ('MetaCons "TableSwitch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef Low)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (SwitchTable Low)))))))) :+: ((((C1 ('MetaCons "LookupSwitch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (LongRelativeRef Low)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector (Int32, LongRelativeRef Low)))) :+: C1 ('MetaCons "Get" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldAccess) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref AbsFieldId Low)))) :+: (C1 ('MetaCons "Put" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 FieldAccess) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref AbsFieldId Low))) :+: C1 ('MetaCons "Invoke" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Invocation Low))))) :+: ((C1 ('MetaCons "New" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref ClassName Low))) :+: C1 ('MetaCons "NewArray" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Choice LowNewArrayType NewArrayType Low)))) :+: (C1 ('MetaCons "ArrayLength" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Throw" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CheckCast" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref JRefType Low))))))) :+: (((C1 ('MetaCons "InstanceOf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Ref JRefType Low))) :+: C1 ('MetaCons "Monitor" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Bool))) :+: (C1 ('MetaCons "Return" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe LocalType))) :+: C1 ('MetaCons "Nop" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Pop" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "Dup" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize))) :+: (C1 ('MetaCons "DupX1" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: (C1 ('MetaCons "DupX2" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 WordSize)) :+: C1 ('MetaCons "Swap" 'PrefixI 'False) (U1 :: Type -> Type)))))))

type BConstant r = Choice (CConstant r) (Maybe JValue) r Source #

A Wrapper around CConstant.

data CConstant r Source #

Instances

Instances details
Staged CConstant Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

stage :: LabelM m => (forall (s' :: Type -> Type). Staged s' => s' r -> m (s' r')) -> CConstant r -> m (CConstant r') Source #

evolve :: EvolveM m => CConstant Low -> m (CConstant High) Source #

devolve :: DevolveM m => CConstant High -> m (CConstant Low) Source #

Eq (CConstant High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (CConstant Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord (CConstant Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (CConstant High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (CConstant Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic (CConstant High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (CConstant High) :: Type -> Type #

Generic (CConstant Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (CConstant Low) :: Type -> Type #

NFData (CConstant High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: CConstant High -> () #

NFData (CConstant Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: CConstant Low -> () #

type Rep (CConstant High) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (CConstant High) = D1 ('MetaData "CConstant" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((((C1 ('MetaCons "CNull" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CIntM1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CInt0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CInt1" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CInt2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CInt3" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CInt4" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CInt5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CLong0" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "CLong1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CFloat0" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CFloat1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CFloat2" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CDouble0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CDouble1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CByte" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int8)) :+: (C1 ('MetaCons "CShort" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int16)) :+: C1 ('MetaCons "CRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe WordSize)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Ref JValue High))))))))
type Rep (CConstant Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (CConstant Low) = D1 ('MetaData "CConstant" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((((C1 ('MetaCons "CNull" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CIntM1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CInt0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CInt1" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CInt2" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CInt3" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CInt4" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CInt5" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CLong0" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "CLong1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CFloat0" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CFloat1" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CFloat2" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "CDouble0" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CDouble1" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "CByte" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int8)) :+: (C1 ('MetaCons "CShort" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int16)) :+: C1 ('MetaCons "CRef" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe WordSize)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Ref JValue Low))))))))

data OneOrTwo Source #

Constructors

One 
Two 

Instances

Instances details
Bounded OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Enum OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Show OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep OneOrTwo :: Type -> Type #

Methods

from :: OneOrTwo -> Rep OneOrTwo x #

to :: Rep OneOrTwo x -> OneOrTwo #

NFData OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: OneOrTwo -> () #

type Rep OneOrTwo Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep OneOrTwo = D1 ('MetaData "OneOrTwo" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "One" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Two" 'PrefixI 'False) (U1 :: Type -> Type))

data SwitchTable r Source #

Instances

Instances details
Eq (SwitchTable High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (SwitchTable Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord (SwitchTable Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (SwitchTable High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (SwitchTable Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic (SwitchTable High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (SwitchTable High) :: Type -> Type #

Generic (SwitchTable Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (SwitchTable Low) :: Type -> Type #

NFData (SwitchTable High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: SwitchTable High -> () #

NFData (SwitchTable Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: SwitchTable Low -> () #

type Rep (SwitchTable High) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (SwitchTable High) = D1 ('MetaData "SwitchTable" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "SwitchTable" 'PrefixI 'True) (S1 ('MetaSel ('Just "switchLow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int32) :*: S1 ('MetaSel ('Just "switchOffsets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector (LongRelativeRef High)))))
type Rep (SwitchTable Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (SwitchTable Low) = D1 ('MetaData "SwitchTable" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "SwitchTable" 'PrefixI 'True) (S1 ('MetaSel ('Just "switchLow") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int32) :*: S1 ('MetaSel ('Just "switchOffsets") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Vector (LongRelativeRef Low)))))

data FieldAccess Source #

Constructors

FldStatic 
FldField 

Instances

Instances details
Eq FieldAccess Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord FieldAccess Source # 
Instance details

Defined in Language.JVM.ByteCode

Show FieldAccess Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic FieldAccess Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep FieldAccess :: Type -> Type #

NFData FieldAccess Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: FieldAccess -> () #

type Rep FieldAccess Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep FieldAccess = D1 ('MetaData "FieldAccess" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "FldStatic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FldField" 'PrefixI 'False) (U1 :: Type -> Type))

data Invocation r Source #

Constructors

InvkSpecial !(Ref AbsVariableMethodId r)

Variable since 52.0

InvkVirtual !(Ref (InRefType MethodId) r) 
InvkStatic !(Ref AbsVariableMethodId r)

Variable since 52.0

InvkInterface !Word8 !(Ref AbsInterfaceMethodId r)

Should be a positive number

InvkDynamic !(DeepRef InvokeDynamic r) 

Instances

Instances details
Staged Invocation Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

stage :: LabelM m => (forall (s' :: Type -> Type). Staged s' => s' r -> m (s' r')) -> Invocation r -> m (Invocation r') Source #

evolve :: EvolveM m => Invocation Low -> m (Invocation High) Source #

devolve :: DevolveM m => Invocation High -> m (Invocation Low) Source #

Eq (Invocation High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq (Invocation Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord (Invocation Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (Invocation High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Show (Invocation Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic (Invocation High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (Invocation High) :: Type -> Type #

Generic (Invocation Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep (Invocation Low) :: Type -> Type #

NFData (Invocation High) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: Invocation High -> () #

NFData (Invocation Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: Invocation Low -> () #

type Rep (Invocation High) Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep (Invocation Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

type ShortRelativeRef i = Choice Int16 ByteCodeIndex i Source #

A short relative bytecode ref is defined in correspondence with the

type LongRelativeRef i = Choice Int32 ByteCodeIndex i Source #

A Long relative reference. The only reason this exist because the signed nature of int, looses a bit.

data NewArrayType Source #

Constructors

NewArrayType Word8 JType 

Instances

Instances details
Eq NewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord NewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Show NewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic NewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep NewArrayType :: Type -> Type #

NFData NewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: NewArrayType -> () #

type Rep NewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep NewArrayType = D1 ('MetaData "NewArrayType" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "NewArrayType" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Word8) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 JType)))

data LowNewArrayType Source #

Instances

Instances details
Eq LowNewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord LowNewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Show LowNewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic LowNewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep LowNewArrayType :: Type -> Type #

NFData LowNewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: LowNewArrayType -> () #

type Rep LowNewArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Operations

data BinOpr Source #

Constructors

Add 
Sub 
Mul 
Div 
Rem 

Instances

Instances details
Eq BinOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

(==) :: BinOpr -> BinOpr -> Bool #

(/=) :: BinOpr -> BinOpr -> Bool #

Ord BinOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Show BinOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic BinOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep BinOpr :: Type -> Type #

Methods

from :: BinOpr -> Rep BinOpr x #

to :: Rep BinOpr x -> BinOpr #

NFData BinOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: BinOpr -> () #

type Rep BinOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep BinOpr = D1 ('MetaData "BinOpr" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((C1 ('MetaCons "Add" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Sub" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Mul" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Div" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Rem" 'PrefixI 'False) (U1 :: Type -> Type))))

data BitOpr Source #

Constructors

ShL 
ShR 
UShR 
And 
Or 
XOr 

Instances

Instances details
Eq BitOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

(==) :: BitOpr -> BitOpr -> Bool #

(/=) :: BitOpr -> BitOpr -> Bool #

Ord BitOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Show BitOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic BitOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep BitOpr :: Type -> Type #

Methods

from :: BitOpr -> Rep BitOpr x #

to :: Rep BitOpr x -> BitOpr #

NFData BitOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: BitOpr -> () #

type Rep BitOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep BitOpr = D1 ('MetaData "BitOpr" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((C1 ('MetaCons "ShL" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ShR" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "UShR" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "And" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Or" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XOr" 'PrefixI 'False) (U1 :: Type -> Type))))

data CmpOpr Source #

Constructors

CEq 
CNe 
CLt 
CGe 
CGt 
CLe 

Instances

Instances details
Eq CmpOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

(==) :: CmpOpr -> CmpOpr -> Bool #

(/=) :: CmpOpr -> CmpOpr -> Bool #

Ord CmpOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Show CmpOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic CmpOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep CmpOpr :: Type -> Type #

Methods

from :: CmpOpr -> Rep CmpOpr x #

to :: Rep CmpOpr x -> CmpOpr #

NFData CmpOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: CmpOpr -> () #

type Rep CmpOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep CmpOpr = D1 ('MetaData "CmpOpr" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((C1 ('MetaCons "CEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CNe" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CLt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "CGe" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CGt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CLe" 'PrefixI 'False) (U1 :: Type -> Type))))

data CastOpr Source #

Constructors

CastDown SmallArithmeticType

Cast from Int to a smaller type

CastTo ArithmeticType ArithmeticType

Cast from any to any arithmetic type. Cannot be the same type.

Instances

Instances details
Eq CastOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

(==) :: CastOpr -> CastOpr -> Bool #

(/=) :: CastOpr -> CastOpr -> Bool #

Ord CastOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Show CastOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic CastOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep CastOpr :: Type -> Type #

Methods

from :: CastOpr -> Rep CastOpr x #

to :: Rep CastOpr x -> CastOpr #

NFData CastOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: CastOpr -> () #

type Rep CastOpr Source # 
Instance details

Defined in Language.JVM.ByteCode

Type sets

data ArithmeticType Source #

Constructors

MInt 
MLong 
MFloat 
MDouble 

Instances

Instances details
Bounded ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Enum ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Show ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep ArithmeticType :: Type -> Type #

NFData ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ArithmeticType -> () #

type Rep ArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep ArithmeticType = D1 ('MetaData "ArithmeticType" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((C1 ('MetaCons "MInt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MLong" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "MFloat" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MDouble" 'PrefixI 'False) (U1 :: Type -> Type)))

data SmallArithmeticType Source #

Constructors

MByte 
MChar 
MShort 

Instances

Instances details
Bounded SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Enum SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Show SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep SmallArithmeticType :: Type -> Type #

NFData SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: SmallArithmeticType -> () #

type Rep SmallArithmeticType Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep SmallArithmeticType = D1 ('MetaData "SmallArithmeticType" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (C1 ('MetaCons "MByte" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "MChar" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MShort" 'PrefixI 'False) (U1 :: Type -> Type)))

data LocalType Source #

Constructors

LInt 
LLong 
LFloat 
LDouble 
LRef 

Instances

Instances details
Bounded LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Enum LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Eq LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Show LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep LocalType :: Type -> Type #

NFData LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: LocalType -> () #

type Rep LocalType Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep LocalType = D1 ('MetaData "LocalType" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) ((C1 ('MetaCons "LInt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LLong" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LFloat" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LDouble" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LRef" 'PrefixI 'False) (U1 :: Type -> Type))))

data ArrayType Source #

Constructors

AByte 
AChar 
AShort 
AInt 
ALong 
AFloat 
ADouble 
ARef 

Instances

Instances details
Eq ArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Ord ArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Show ArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Generic ArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Associated Types

type Rep ArrayType :: Type -> Type #

NFData ArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

Methods

rnf :: ArrayType -> () #

type Rep ArrayType Source # 
Instance details

Defined in Language.JVM.ByteCode

type Rep ArrayType = D1 ('MetaData "ArrayType" "Language.JVM.ByteCode" "jvm-binary-0.10.0-6UZh5809b0fJPIjalFrBq2" 'False) (((C1 ('MetaCons "AByte" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AChar" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "AShort" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AInt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "ALong" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "AFloat" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ADouble" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ARef" 'PrefixI 'False) (U1 :: Type -> Type))))

Renames

type ByteOffset = Int64 #

An offset, counted in bytes.