jvm-binary-0.8.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

Contents

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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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.8.0-HpvPbNkzsQo844TuM02sMI" 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
ByteCodeStaged ByteCodeInst Source # 
Instance details

Defined in Language.JVM.ByteCode

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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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.8.0-HpvPbNkzsQo844TuM02sMI" 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 !(DeepRef (InClass FieldId) r) 
Put !FieldAccess !(DeepRef (InClass FieldId) r) 
Invoke !(Invocation r) 
New !(Choice (RefType Low) JRefType r) 
ArrayLength 
Throw 
CheckCast !(Ref ClassName r) 
InstanceOf !(Ref ClassName r) 
Monitor !Bool

True => Enter, False => Exit

Return !(Maybe LocalType) 
Nop 
Pop WordSize 
Dup WordSize 
DupX1 WordSize 
DupX2 WordSize 
Swap 
Instances
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 Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

data CConstant r Source #

Instances
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.8.0-HpvPbNkzsQo844TuM02sMI" 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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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.8.0-HpvPbNkzsQo844TuM02sMI" False) (C1 (MetaCons "One" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "Two" PrefixI False) (U1 :: Type -> Type))

data SwitchTable r Source #

Constructors

SwitchTable 

Fields

Instances
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 Low) Source # 
Instance details

Defined in Language.JVM.ByteCode

data FieldAccess Source #

Constructors

FldStatic 
FldField 
Instances
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.8.0-HpvPbNkzsQo844TuM02sMI" False) (C1 (MetaCons "FldStatic" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "FldField" PrefixI False) (U1 :: Type -> Type))

data Invocation r Source #

Instances
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

Operations

data BinOpr Source #

Constructors

Add 
Sub 
Mul 
Div 
Rem 
Instances
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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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
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.8.0-HpvPbNkzsQo844TuM02sMI" 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.