id self(internal->GetValue());
const char *name(CYPoolCString(pool, context, property));
-#ifdef __arm64__
- if (strcmp(name, "isa") == 0)
- return CYCastJSValue(context, object_getClass(self));
-#endif
-
if (objc_ivar *ivar = object_getInstanceVariable(self, name, NULL)) {
ptrdiff_t offset(ivar_getOffset(ivar));
void *data(reinterpret_cast<uint8_t *>(self) + offset);
uintptr_t mask((1 << length) - 1);
return CYCastJSValue(context, (field >> shift) & mask);
} else {
+#if defined(__APPLE__) && defined(__LP64__)
+ // XXX: maybe do even more verifications here
+ if (strcmp(name, "isa") == 0)
+ return CYCastJSValue(context, object_getClass(self));
+#endif
+
auto type(new(pool) Type_privateData(encoding));
return CYFromFFI(context, type->type_, type->GetFFI(), data);
}
continue;
uintptr_t *pointers(reinterpret_cast<uintptr_t *>(data));
-#ifdef __arm64__
+#if defined(__APPLE__) && defined(__LP64__)
Class isa(reinterpret_cast<Class>(pointers[0] & 0x1fffffff8));
#else
Class isa(reinterpret_cast<Class>(pointers[0]));