CACAO
stackmap.hpp
Go to the documentation of this file.
1 /* src/vm/stackmap.hpp - class attribute StackMapTable
2 
3  Copyright (C) 2006, 2007, 2008
4  CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5 
6  This file is part of CACAO.
7 
8  This program is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License as
10  published by the Free Software Foundation; either version 2, or (at
11  your option) any later version.
12 
13  This program is distributed in the hope that it will be useful, but
14  WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program; if not, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  02110-1301, USA.
22 
23 */
24 
25 
26 #ifndef STACKMAP_HPP_
27 #define STACKMAP_HPP_ 1
28 
29 /* forward typedefs ***********************************************************/
30 
31 typedef struct stack_map_t stack_map_t;
35 typedef struct chop_frame_t chop_frame_t;
38 typedef struct full_frame_t full_frame_t;
39 
50 
51 
52 #include "config.h"
53 #include "vm/types.hpp"
54 
55 struct methodinfo;
56 
57 namespace cacao { struct ClassBuffer; }
58 
59 /* verification_type_info *****************************************************/
60 
61 #define ITEM_Top 0
62 #define ITEM_Integer 1
63 #define ITEM_Float 2
64 #define ITEM_Double 3
65 #define ITEM_Long 4
66 #define ITEM_Null 5
67 #define ITEM_UninitializedThis 6
68 #define ITEM_Object 7
69 #define ITEM_Uninitialized 8
70 
73 };
74 
77 };
78 
81 };
82 
85 };
86 
89 };
90 
93 };
94 
97 };
98 
102 };
103 
107 };
108 
120 };
121 
122 
123 /* stack_map_t ****************************************************************/
124 
125 struct stack_map_t {
130 };
131 
132 
133 /* same_locals_1_stack_item_frame_t *******************************************/
134 
138 };
139 
140 
141 /* same_locals_1_stack_item_frame_extended_t **********************************/
142 
147 };
148 
149 
150 /* chop_frame_t ***************************************************************/
151 
152 struct chop_frame_t {
155 };
156 
157 
158 /* same_frame_extended_t ******************************************************/
159 
163 };
164 
165 
166 /* append_frame_t *************************************************************/
167 
172 };
173 
174 
175 /* full_frame_t ***************************************************************/
176 
177 struct full_frame_t {
184 };
185 
186 
187 /* stack_map_frame_t **********************************************************/
188 
189 #define FRAME_TYPE_SAME 63 /* 0-63 */
190 #define FRAME_TYPE_SAME_LOCALS_1_STACK_ITEM 127 /* 0-127 */
191 #define FRAME_TYPE_RESERVED 246 /* 128-246 */
192 #define FRAME_TYPE_SAME_LOCALS_1_STACK_ITEM_EXTENDED 247 /* 247 */
193 #define FRAME_TYPE_CHOP 250 /* 248-250 */
194 #define FRAME_TYPE_SAME_FRAME_EXTENDED 251 /* 251 */
195 #define FRAME_TYPE_APPEND 254 /* 252-254 */
196 #define FRAME_TYPE_FULL_FRAME 255 /* 255 */
197 
206 };
207 
208 /* function prototypes ********************************************************/
209 
211 
212 #endif // STACKMAP_HPP_
213 
214 
215 /*
216  * These are local overrides for various environment variables in Emacs.
217  * Please do not remove this and leave it at the end of the file, where
218  * Emacs will automagically detect them.
219  * ---------------------------------------------------------------------
220  * Local variables:
221  * mode: c++
222  * indent-tabs-mode: t
223  * c-basic-offset: 4
224  * tab-width: 4
225  * End:
226  * vim:noexpandtab:sw=4:ts=4:
227  */
verification_type_info_t stack[1]
Definition: stackmap.hpp:146
same_locals_1_stack_item_frame_extended_t same_locals_1_stack_item_frame_extended
Definition: stackmap.hpp:201
stack_map_frame_t * entries
Definition: stackmap.hpp:129
same_frame_extended_t same_frame_extended
Definition: stackmap.hpp:203
verification_type_info_t * stack
Definition: stackmap.hpp:183
uint8_t u1
Definition: types.hpp:40
append_frame_t append_frame
Definition: stackmap.hpp:204
u2 attribute_name_index
Definition: stackmap.hpp:126
same_locals_1_stack_item_frame_t same_locals_1_stack_item_frame
Definition: stackmap.hpp:200
Float_variable_info_t Float_variable_info
Definition: stackmap.hpp:113
Null_variable_info_t Null_variable_info
Definition: stackmap.hpp:116
verification_type_info_t stack[1]
Definition: stackmap.hpp:137
bool stackmap_load_attribute_stackmaptable(ClassBuffer &cb, methodinfo *m)
Definition: stackmap.cpp:405
Object_variable_info_t Object_variable_info
Definition: stackmap.hpp:118
uint16_t u2
Definition: types.hpp:43
full_frame_t full_frame
Definition: stackmap.hpp:205
Integer_variable_info_t Integer_variable_info
Definition: stackmap.hpp:112
verification_type_info_t * locals
Definition: stackmap.hpp:171
u4 attribute_length
Definition: stackmap.hpp:127
Double_variable_info_t Double_variable_info
Definition: stackmap.hpp:115
u2 number_of_stack_items
Definition: stackmap.hpp:182
uint32_t u4
Definition: types.hpp:46
chop_frame_t chop_frame
Definition: stackmap.hpp:202
Uninitialized_variable_info_t Uninitialized_variable_info
Definition: stackmap.hpp:119
UninitializedThis_variable_info_t UninitializedThis_variable_info
Definition: stackmap.hpp:117
u2 number_of_entries
Definition: stackmap.hpp:128
u2 number_of_locals
Definition: stackmap.hpp:180
Top_variable_info_t Top_variable_info
Definition: stackmap.hpp:111
verification_type_info_t * locals
Definition: stackmap.hpp:181
Long_variable_info_t Long_variable_info
Definition: stackmap.hpp:114