#include "cycript.hpp"
-#include "ObjectiveC/Internal.hpp"
+#include <cmath>
+
+#include <map>
+#include <set>
+
+#include <dlfcn.h>
+
+#ifdef __APPLE__
+#include <malloc/malloc.h>
+#include <mach/mach.h>
+#endif
#include <objc/message.h>
#include <objc/runtime.h>
-#include <Foundation/Foundation.h>
-
#ifdef __APPLE__
#include <CoreFoundation/CoreFoundation.h>
#include <JavaScriptCore/JSStringRefCF.h>
#endif
-#ifdef __APPLE__
-#include <malloc/malloc.h>
-#include <mach/mach.h>
-#endif
+#include <Foundation/Foundation.h>
#include "Code.hpp"
#include "Error.hpp"
#include "String.hpp"
#include "Execute.hpp"
-#include <cmath>
-#include <map>
-#include <set>
-
-#include <dlfcn.h>
+#include "ObjectiveC/Internal.hpp"
#define CYObjectiveTry_ { \
try
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]));