166 // This macro generates a VMStructEntry line for a static field |
166 // This macro generates a VMStructEntry line for a static field |
167 #define GENERATE_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
167 #define GENERATE_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
168 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, &typeName::fieldName }, |
168 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, &typeName::fieldName }, |
169 |
169 |
170 // This macro generates a VMStructEntry line for a static pointer volatile field, |
170 // This macro generates a VMStructEntry line for a static pointer volatile field, |
171 // e.g.: "static ObjectMonitor * volatile gBlockList;" |
171 // e.g.: "static ObjectMonitor * volatile g_block_list;" |
172 #define GENERATE_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
172 #define GENERATE_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
173 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, (void *)&typeName::fieldName }, |
173 { QUOTE(typeName), QUOTE(fieldName), QUOTE(type), 1, 0, (void *)&typeName::fieldName }, |
174 |
174 |
175 // This macro generates a VMStructEntry line for an unchecked |
175 // This macro generates a VMStructEntry line for an unchecked |
176 // nonstatic field, in which the size of the type is also specified. |
176 // nonstatic field, in which the size of the type is also specified. |
200 // This macro checks the type of a static VMStructEntry by comparing pointer types |
200 // This macro checks the type of a static VMStructEntry by comparing pointer types |
201 #define CHECK_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
201 #define CHECK_STATIC_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
202 {type* dummy = &typeName::fieldName; } |
202 {type* dummy = &typeName::fieldName; } |
203 |
203 |
204 // This macro checks the type of a static pointer volatile VMStructEntry by comparing pointer types, |
204 // This macro checks the type of a static pointer volatile VMStructEntry by comparing pointer types, |
205 // e.g.: "static ObjectMonitor * volatile gBlockList;" |
205 // e.g.: "static ObjectMonitor * volatile g_block_list;" |
206 #define CHECK_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
206 #define CHECK_STATIC_PTR_VOLATILE_VM_STRUCT_ENTRY(typeName, fieldName, type) \ |
207 {type volatile * dummy = &typeName::fieldName; } |
207 {type volatile * dummy = &typeName::fieldName; } |
208 |
208 |
209 // This macro ensures the type of a field and its containing type are |
209 // This macro ensures the type of a field and its containing type are |
210 // present in the type table. The assertion string is shorter than |
210 // present in the type table. The assertion string is shorter than |