| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
H2JVM.ConstantPool
Description
Provides a monadic interface to the constant pool. This aims to eliminate the need to manually specify the index of the constant
Synopsis
- data ConstantPoolEntry
- = CPClassEntry ClassInfoType
- | CPFieldRefEntry FieldRef
- | CPMethodRefEntry MethodRef
- | CPInterfaceMethodRefEntry MethodRef
- | CPStringEntry Text
- | CPIntegerEntry Int32
- | CPFloatEntry Float
- | CPLongEntry Int64
- | CPDoubleEntry Double
- | CPNameAndTypeEntry Text Text
- | CPUTF8Entry Text
- | CPMethodHandleEntry MethodHandleEntry
- | CPMethodTypeEntry MethodDescriptor
- | CPInvokeDynamicEntry BootstrapMethod Text MethodDescriptor
- data MethodHandleEntry
- data FieldRef = FieldRef ClassInfoType Text FieldType
- data MethodRef = MethodRef ClassInfoType Text MethodDescriptor
- data BootstrapMethod = BootstrapMethod MethodHandleEntry [BootstrapArgument]
- data BootstrapArgument
- bmArgToCPEntry :: BootstrapArgument -> ConstantPoolEntry
Documentation
data ConstantPoolEntry Source #
High-level, type-safe representation of a constant pool entry This tries to hide indexes as much as possible, instead just allowing the values to be provided directly. These are transformed into the correct indexes when the constant pool is built, which uses a state monad to avoid repeating entries.
Constructors
| CPClassEntry | A class reference |
Fields
| |
| CPFieldRefEntry FieldRef | |
| CPMethodRefEntry MethodRef | |
| CPInterfaceMethodRefEntry MethodRef | |
| CPStringEntry Text | |
| CPIntegerEntry Int32 | |
| CPFloatEntry Float | |
| CPLongEntry Int64 | |
| CPDoubleEntry Double | |
| CPNameAndTypeEntry Text Text | |
| CPUTF8Entry Text | |
| CPMethodHandleEntry MethodHandleEntry | |
| CPMethodTypeEntry MethodDescriptor | |
| CPInvokeDynamicEntry | CONSTANT_InvokeDynamic_info |
Fields
| |
Instances
| Show ConstantPoolEntry Source # | |
Defined in H2JVM.ConstantPool Methods showsPrec :: Int -> ConstantPoolEntry -> ShowS # show :: ConstantPoolEntry -> String # showList :: [ConstantPoolEntry] -> ShowS # | |
| Eq ConstantPoolEntry Source # | |
Defined in H2JVM.ConstantPool Methods (==) :: ConstantPoolEntry -> ConstantPoolEntry -> Bool # (/=) :: ConstantPoolEntry -> ConstantPoolEntry -> Bool # | |
| Ord ConstantPoolEntry Source # | |
Defined in H2JVM.ConstantPool Methods compare :: ConstantPoolEntry -> ConstantPoolEntry -> Ordering # (<) :: ConstantPoolEntry -> ConstantPoolEntry -> Bool # (<=) :: ConstantPoolEntry -> ConstantPoolEntry -> Bool # (>) :: ConstantPoolEntry -> ConstantPoolEntry -> Bool # (>=) :: ConstantPoolEntry -> ConstantPoolEntry -> Bool # max :: ConstantPoolEntry -> ConstantPoolEntry -> ConstantPoolEntry # min :: ConstantPoolEntry -> ConstantPoolEntry -> ConstantPoolEntry # | |
data MethodHandleEntry Source #
A Method Handle type entry in the constant pool (§4.4.8).
Constructors
| MHGetField FieldRef | read field |
| MHGetStatic FieldRef | read static field |
| MHPutField FieldRef | write field |
| MHPutStatic FieldRef | write static field |
| MHInvokeVirtual MethodRef | invoke virtual method |
| MHNewInvokeSpecial MethodRef | invoke special method (e.g. |
| MHInvokeStatic MethodRef | invoke static method |
| MHInvokeSpecial MethodRef | invoke private/super method |
| MHInvokeInterface MethodRef | invoke interface method |
Instances
A reference to a field, consisting of the containing class type, field name, and field type.
Constructors
| FieldRef ClassInfoType Text FieldType |
Instances
| Data FieldRef Source # | |
Defined in H2JVM.ConstantPool Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FieldRef -> c FieldRef # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FieldRef # toConstr :: FieldRef -> Constr # dataTypeOf :: FieldRef -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c FieldRef) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FieldRef) # gmapT :: (forall b. Data b => b -> b) -> FieldRef -> FieldRef # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FieldRef -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FieldRef -> r # gmapQ :: (forall d. Data d => d -> u) -> FieldRef -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> FieldRef -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FieldRef -> m FieldRef # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldRef -> m FieldRef # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FieldRef -> m FieldRef # | |
| Show FieldRef Source # | |
| Eq FieldRef Source # | |
| Ord FieldRef Source # | |
Defined in H2JVM.ConstantPool | |
| Pretty FieldRef Source # | |
A reference to a method, consisting of the containing class type, method name, and descriptor signature.
Constructors
| MethodRef | |
Fields
| |
Instances
| Data MethodRef Source # | |
Defined in H2JVM.ConstantPool Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MethodRef -> c MethodRef # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c MethodRef # toConstr :: MethodRef -> Constr # dataTypeOf :: MethodRef -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c MethodRef) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c MethodRef) # gmapT :: (forall b. Data b => b -> b) -> MethodRef -> MethodRef # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MethodRef -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MethodRef -> r # gmapQ :: (forall d. Data d => d -> u) -> MethodRef -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> MethodRef -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> MethodRef -> m MethodRef # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> MethodRef -> m MethodRef # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> MethodRef -> m MethodRef # | |
| Show MethodRef Source # | |
| Eq MethodRef Source # | |
| Ord MethodRef Source # | |
| Pretty MethodRef Source # | |
data BootstrapMethod Source #
A Bootstrap Method specification, used in invokedynamic call sites (§4.7.23).
Constructors
| BootstrapMethod MethodHandleEntry [BootstrapArgument] | Construct a bootstrap method referencing a method handle and its static arguments. |
Instances
data BootstrapArgument Source #
A static argument for a bootstrap method.
Constructors
| BMClassArg ClassInfoType | A Class reference argument. |
| BMStringArg Text | A String constant argument. |
| BMIntArg Int32 | An integer constant argument. |
| BMMethodArg MethodDescriptor | A Method type descriptor argument. |
| BMMethodHandleArg MethodHandleEntry | A Method handle argument. |
Instances
bmArgToCPEntry :: BootstrapArgument -> ConstantPoolEntry Source #
Convert a bootstrap argument to its equivalent constant pool entry.