while (refOffsets != 0) {
size_t rshift = CLZ(refOffsets);
size_t offset = CLASS_OFFSET_FROM_CLZ(rshift);
- Object **ref = BYTE_OFFSET(obj, offset);
+ Object **ref = (Object **)BYTE_OFFSET(obj, offset);
(*visitor)(ref, arg);
refOffsets &= ~(CLASS_HIGH_BIT >> rshift);
}
int i;
for (i = 0; i < clazz->ifieldRefCount; ++i, ++field) {
size_t offset = field->byteOffset;
- Object **ref = BYTE_OFFSET(obj, offset);
+ Object **ref = (Object **)BYTE_OFFSET(obj, offset);
(*visitor)(ref, arg);
}
}
*/
static void visitClassObject(Visitor *visitor, Object *obj, void *arg)
{
- ClassObject *classObj;
- ClassStatus status;
+ ClassObject *asClass;
assert(visitor != NULL);
assert(obj != NULL);
assert(obj->clazz != NULL);
assert(!strcmp(obj->clazz->descriptor, "Ljava/lang/Class;"));
- classObj = (ClassObject *)obj;
(*visitor)(&obj->clazz, arg);
- if (IS_CLASS_FLAG_SET(classObj, CLASS_ISARRAY)) {
- (*visitor)(&classObj->elementClass, arg);
+ asClass = (ClassObject *)obj;
+ if (IS_CLASS_FLAG_SET(asClass, CLASS_ISARRAY)) {
+ (*visitor)(&asClass->elementClass, arg);
}
- status = classObj->status;
- if (status > CLASS_IDX) {
- (*visitor)(&classObj->super, arg);
+ if (asClass->status > CLASS_IDX) {
+ (*visitor)(&asClass->super, arg);
}
- (*visitor)(&classObj->classLoader, arg);
+ (*visitor)(&asClass->classLoader, arg);
visitFields(visitor, obj, arg);
- visitStaticFields(visitor, classObj, arg);
- if (status > CLASS_IDX) {
- visitInterfaces(visitor, classObj, arg);
+ visitStaticFields(visitor, asClass, arg);
+ if (asClass->status > CLASS_IDX) {
+ visitInterfaces(visitor, asClass, arg);
}
}
assert(obj->clazz != NULL);
visitDataObject(visitor, obj, arg);
size_t offset = gDvm.offJavaLangRefReference_referent;
- Object **ref = BYTE_OFFSET(obj, offset);
+ Object **ref = (Object **)BYTE_OFFSET(obj, offset);
(*visitor)(ref, arg);
}