JVM
constantpool.h
Go to the documentation of this file.
1 #ifndef CONSTANTPOOL_H
2 #define CONSTANTPOOL_H
3 
4 typedef struct cp_info cp_info;
5 
6 #include <stdint.h>
7 #include "javaclass.h"
8 
9 struct cp_info {
10 
11  uint8_t tag;
12 
13  union {
14 
15  struct {
16  uint16_t name_index;
17  } Class;
18 
19  struct {
20  uint16_t string_index;
21  } String;
22 
23  struct {
24  uint16_t class_index;
26  } Fieldref;
27 
28  struct {
29  uint16_t class_index;
30  uint16_t name_and_type_index;
31  } Methodref;
32 
33  struct {
34  uint16_t class_index;
35  uint16_t name_and_type_index;
37 
38  struct {
39  uint16_t name_index;
40  uint16_t descriptor_index;
41  } NameAndType;
42 
43  struct {
44  uint32_t value;
45  } Integer;
46 
47  struct {
48  uint32_t bytes;
49  } Float;
50 
51  struct {
52  uint32_t high;
53  uint32_t low;
54  } Long;
55 
56  struct {
57  uint32_t high;
58  uint32_t low;
59  } Double;
60 
61  struct {
62  uint16_t length;
63  uint8_t* bytes;
64  } Utf8;
65 
66  };
67 
68 };
69 
82 
83  // Compatibility with Java 8
87 };
88 
89 const char* decodeTag(uint8_t tag);
90 char readConstantPoolEntry(JavaClass* jc, cp_info* entry);
92 
93 #endif // CONSTANTPOOL_H
Definition: constantpool.h:86
const char * decodeTag(uint8_t tag)
Decodes ConstantPoolTag enumeration elements.
Definition: constantpool.c:290
struct cp_info::@0::@7 NameAndType
struct cp_info::@0::@8 Integer
uint16_t descriptor_index
Definition: constantpool.h:40
Definition: constantpool.h:85
uint8_t * bytes
Definition: constantpool.h:63
uint16_t name_index
Definition: constantpool.h:16
uint32_t bytes
Definition: constantpool.h:48
struct cp_info::@0::@3 String
uint32_t high
Definition: constantpool.h:52
Definition: constantpool.h:9
Definition: constantpool.h:71
struct cp_info::@0::@9 Float
void printConstantPool(JavaClass *jc)
Function to print all the constants from the constant pool of the class file.
Definition: constantpool.c:427
struct cp_info::@0::@11 Double
Definition: constantpool.h:75
struct cp_info::@0::@4 Fieldref
Definition: constantpool.h:77
struct cp_info::@0::@2 Class
uint32_t value
Definition: constantpool.h:44
char readConstantPoolEntry(JavaClass *jc, cp_info *entry)
Reads a cp_info from the file.
Definition: constantpool.c:221
uint16_t string_index
Definition: constantpool.h:20
Definition: constantpool.h:84
Definition: constantpool.h:74
struct cp_info::@0::@10 Long
struct cp_info::@0::@5 Methodref
Definition: constantpool.h:73
struct cp_info::@0::@12 Utf8
struct cp_info::@0::@6 InterfaceMethodref
uint16_t length
Definition: constantpool.h:62
Definition: constantpool.h:72
Definition: constantpool.h:81
uint16_t name_and_type_index
Definition: constantpool.h:25
Definition: javaclass.h:96
Definition: constantpool.h:78
Definition: constantpool.h:79
ConstantPoolTag
Definition: constantpool.h:70
uint8_t tag
Definition: constantpool.h:11
uint16_t class_index
Definition: constantpool.h:24
Definition: constantpool.h:76
uint32_t low
Definition: constantpool.h:53
Definition: constantpool.h:80