[llvm-commits] [test-suite] r115505 - in /test-suite/trunk/SingleSource/UnitTests/ObjC: Makefile print-class-info-x86-32.m print-class-info-x86-32.reference_output print-class-info-x86-64.m print-class-info-x86-64.reference_output

Daniel Dunbar daniel at zuster.org
Mon Oct 4 07:57:59 PDT 2010


Author: ddunbar
Date: Mon Oct  4 09:57:59 2010
New Revision: 115505

URL: http://llvm.org/viewvc/llvm-project?rev=115505&view=rev
Log:
Remove print-class-info tests, they aren't very useful and are too tied to other
platform details (specific Foundation version, etc.)

Removed:
    test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.m
    test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.reference_output
    test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.m
    test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.reference_output
Modified:
    test-suite/trunk/SingleSource/UnitTests/ObjC/Makefile

Modified: test-suite/trunk/SingleSource/UnitTests/ObjC/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ObjC/Makefile?rev=115505&r1=115504&r2=115505&view=diff
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/ObjC/Makefile (original)
+++ test-suite/trunk/SingleSource/UnitTests/ObjC/Makefile Mon Oct  4 09:57:59 2010
@@ -8,13 +8,6 @@
 LDFLAGS += -lobjc -framework Foundation
 PROGRAM_REQUIRED_TO_EXIT_OK := 1
 
-ifneq ($(ARCH),x86)
-PROGRAMS_TO_SKIP += print-class-info-x86-32
-endif
-ifneq ($(ARCH),x86_64)
-PROGRAMS_TO_SKIP += print-class-info-x86-64
-endif
-
 # This is a known gcc / llvm-gcc miscompilation fixed in clang.
 ifdef CC_UNDER_TEST_IS_LLVM_GCC
 EXEC_XFAILS = dot-syntax-2

Removed: test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.m
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.m?rev=115504&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.m (original)
+++ test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.m (removed)
@@ -1,422 +0,0 @@
-#include <Foundation/NSObject.h>
-#include <objc/runtime.h>
-#include <stdio.h>
-#include <stdlib.h>
-
- at protocol UnusedProtocol
-+(void) makeWaffles;
- at end
-
- at protocol P2
- at end
-
- at protocol P <P2>
- at required
-+(void) requiredProtocolClassMethod;
--(void) requiredProtocolInstanceMethod;
- at optional
-+(void) optionalProtocolClassMethod;
--(void) optionalProtocolInstanceMethod;
-
- at required
- at property int requiredProtocolProperty;
- at optional
- at property int optionalProtocolProperty; // XXX this is not actually
-                                        // optional in Obj-C 2? or
-                                        // maybe just in old ABI?
- at end
-
- at protocol CategoryProtocol
-+(void) categoryClassMethod;
--(void) categoryInstanceMethod;
- at end
-
- at interface A : NSObject <P>  {
- at private
-  int privateVar;
- at protected
-  int protectedVar;
- at public
-  int publicVar;
-  __weak id weakVar;
-  __strong id strongVar;
-  
-  int halfDynamicA, halfDynamicB;
-}
-
- at property(assign) int requiredProtocolProperty;
- at property(assign) int optionalProtocolProperty;
-
- at property(assign) int Ptest_a;
- at property(copy) id Ptest_b;
- at property(retain) id Ptest_c;
-
- at property(getter=iGetThings) int things;
- at property(setter=iSetOtherThings:) int otherThings;
-
- at property(assign) int dynamicNotReally;
- at property(assign) int halfDynamicA;
- at property(assign) int halfDynamicB;
-
-+(void) classMethod;
--(void) instanceMethod;
- at end
-
- at interface A ()
-+(void) extendedClassMethod;
--(void) extendedInstanceMethod;
-+(void) requiredProtocolClassMethod;
--(void) requiredProtocolInstanceMethod;
- at end
-
- at implementation A
- at dynamic Ptest_a, Ptest_b, Ptest_c;
- at dynamic things, otherThings;
-
- at dynamic dynamicNotReally;
--(int) dynamicNotReally {};
--(void) dynamicNotReally: (int) arg {};
-
- at synthesize halfDynamicA;
--(int) halfDynamicA {};
-
- at synthesize halfDynamicB;
--(void) halfDynamicB: (int) arg {};
-
- at synthesize requiredProtocolProperty = privateVar;
-#ifdef ABI2
- at synthesize optionalProtocolProperty = someRandomVar;
-#else
- at synthesize optionalProtocolProperty = publicVar;
-#endif
-
-+(void) classMethod {
-  printf("I am a class method\n");
-}
--(void) instanceMethod {
-  printf("I am an instance method\n");
-}
-
-+(void) requiredProtocolClassMethod {
-  printf("I am a required protocol class method\n");
-}
-
--(void) requiredProtocolInstanceMethod {
-  printf("I am a required protocol instance method\n");
-}
-
-+(void) extendedClassMethod {
-  printf("I am an extended class method\n");
-}
--(void) extendedInstanceMethod {
-  printf("I am an extended instance method\n");
-}
- at end
-
- at interface A ( A_Category ) <CategoryProtocol>
-+(void) categoryClassMethod;
--(void) categoryInstanceMethod;
-
- at property(assign) int categoryProperty;
- at end
-
- at implementation A ( A_Category )
- at dynamic categoryProperty;
-
-+(void) categoryClassMethod {
-}
--(void) categoryInstanceMethod {
-}
- at end
-
-/***/
-
-int ivar_cmp(const void *av, const void *bv) {
-  const Ivar *a = av;
-  const Ivar *b = bv;
-  return strcmp(ivar_getName(*a), ivar_getName(*b));
-}
-
-int methodDescription_cmp(const void *av, const void *bv) {
-  const struct objc_method_description *a = av;
-  const struct objc_method_description *b = bv;
-  return strcmp(sel_getName(a->name), sel_getName(b->name));
-}
-
-int method_cmp(const void *av, const void *bv) {
-  const Method *a = av;
-  const Method *b = bv;
-  return strcmp(method_getName(*a), method_getName(*b));
-}
-
-int property_cmp(const void *av, const void *bv) {
-  const objc_property_t *a = av;
-  const objc_property_t *b = bv;
-  return strcmp(property_getName(*a), property_getName(*b));
-}
-
-int protocol_cmp(const void *av, const void *bv) {
-  Protocol * const *a = av;
-  Protocol * const *b = bv;
-  return strcmp(protocol_getName(*a), protocol_getName(*b));
-}
-
-void sort_ivars(Ivar *ivars, unsigned numIvars) {
-  qsort(ivars, numIvars, sizeof(*ivars), ivar_cmp);
-}
-
-void sort_methodDescriptions(struct objc_method_description *methods, unsigned numMethods) {
-  qsort(methods, numMethods, sizeof(*methods), methodDescription_cmp);
-}
-
-void sort_methods(Method *methods, unsigned numMethods) {
-  unsigned i;
-  qsort(methods, numMethods, sizeof(*methods), method_cmp);
-}
-
-void sort_properties(objc_property_t *properties, unsigned numProperties) {
-  qsort(properties, numProperties, sizeof(*properties), property_cmp);
-}
-
-void sort_protocols(Protocol **protocols, unsigned numProtocols) {
-  qsort(protocols, numProtocols, sizeof(*protocols), protocol_cmp);
-}
-
-/***/
-
-static int indent = 0;
-#define PRINT1(e0,t0) printf("%*s" #e0 ": %" #t0 "\n", indent*2, "", e0)
-#define PRINT2(e0,t0,e1,t1) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 "\n", indent*2, "", e0, e1)
-#define PRINT3(e0,t0,e1,t1,e2,t2) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 ", " #e2 ": %" #t2 "\n", indent*2, "", e0, e1, e2)
-#define PRINT4(e0,t0,e1,t1,e2,t2,e3,t3) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 ", " #e2 ": %" #t2 ", " #e3 ": %" #t3 "\n", indent*2, "", e0, e1, e2, e3)
-#define PRINT5(e0,t0,e1,t1,e2,t2,e3,t3,e4,t4) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 ", " #e2 ": %" #t2 ", " #e3 ": %" #t3 ", " #e4 ": %" #t4 "\n", indent*2, "", e0, e1, e2, e3, e4)
-void printInfo(Class c, int printData) {
-  unsigned i;
-
-  ++indent;
-  PRINT1(c != 0, d);
-  PRINT1(class_getName(c), s);
-  PRINT1(object_getClassName(c), s);
-  PRINT1(objc_getClass(class_getName(c)) == c, d);
-  PRINT1(class_conformsToProtocol(c, @protocol(P)), d);
-  
-  unsigned numIvars;
-  Ivar *ivars = class_copyIvarList(c, &numIvars);
-  sort_ivars(ivars, numIvars);
-  PRINT1(numIvars, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numIvars; ++i) {
-      Ivar ivar = ivars[i];
-      PRINT2(i, d, ivar_getName(ivar), s);
-      PRINT2(i, d, ivar_getOffset(ivar), d);
-      PRINT2(i, d, ivar_getTypeEncoding(ivar), s);
-      PRINT2(i, d, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar, d);
-    }
-    --indent;
-  }
-
-  unsigned numMethods;
-  Method *methods = class_copyMethodList(c, &numMethods);
-  sort_methods(methods, numMethods);
-  PRINT1(numMethods, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numMethods; ++i) {
-      Method method = methods[i];
-      unsigned j, numArgs;
-      PRINT2(i, d, sel_getName(method_getName(method)), s);
-      PRINT2(i, d, class_respondsToSelector(c, method_getName(method)), d);
-      PRINT2(i, d, !strcmp(method_getName(method),sel_getName(method_getName(method))), d);
-      PRINT2(i, d, method_getName(method) == sel_getUid((char*) method_getName(method)), d);
-      PRINT2(i, d, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method, d);
-      PRINT2(i, d, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method, d);
-      PRINT2(i, d, numArgs = method_getNumberOfArguments(method), d);    
-      PRINT2(i, d, method_copyReturnType(method), s);
-      for (j=0; j<numArgs; ++j) {
-        PRINT3(i, d, j, d, method_copyArgumentType(method, j), s);
-      }      
-      PRINT2(i, d, method_getTypeEncoding(method), s);
-    }
-    --indent;
-  }
-
-  unsigned numProperties;
-  objc_property_t *properties = class_copyPropertyList(c, &numProperties);
-  sort_properties(properties, numProperties);
-  PRINT1(numProperties, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numProperties; ++i) {
-      objc_property_t property = properties[i];
-      PRINT2(i, d, property_getName(property), s);
-      PRINT2(i, d, property_getAttributes(property), s);
-      PRINT2(i, d, class_getProperty(c, property_getName(property)) == property, d);
-    }
-    --indent;
-  }
-
-  unsigned numProtocols;
-  Protocol **protocols = class_copyProtocolList(c, &numProtocols);
-  sort_protocols(protocols, numProtocols);
-  PRINT1(numProtocols, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numProtocols; ++i) {
-      Protocol *protocol = protocols[i];
-      unsigned j;
-
-      PRINT2(i, d, protocol_getName(protocol), s);
-      PRINT2(i, d, objc_getProtocol(protocol_getName(protocol))==protocol, d); 
-
-      unsigned isRequired;
-      unsigned isInstance;
-      for (isRequired = 0; isRequired < 2; ++isRequired) {
-        for (isInstance = 0; isInstance < 2; ++isInstance) {
-          unsigned numProtocolMethods;
-          struct objc_method_description *methods = protocol_copyMethodDescriptionList(protocol, 
-                                                                                       isRequired,
-                                                                                       isInstance,
-                                                                                       &numProtocolMethods);
-          sort_methodDescriptions(methods, numProtocolMethods);
-          PRINT4(i, d, isRequired, d, isInstance, d, numProtocolMethods, d);
-          for (j=0; j<numProtocolMethods; ++j) {
-            PRINT3(i, d, j, d, sel_getName(methods[j].name), s);
-            PRINT3(i, d, j, d, methods[j].types, s);
-          }
-        }
-      }
-      unsigned numProperties;
-      objc_property_t *properties = protocol_copyPropertyList(protocol, &numProperties);
-      sort_properties(properties, numProperties);
-      PRINT2(i, d, numProperties, d);
-      ++indent;
-      for (j=0; j<numProperties; ++j) {
-        objc_property_t property = properties[j];
-        PRINT3(i, d, j, d, property_getName(property), s);
-        PRINT3(i, d, j, d, property_getAttributes(property), s);
-        for (isRequired = 0; isRequired < 2; ++isRequired)
-          for (isInstance = 0; isInstance < 2; ++isInstance)
-            PRINT5(i, d, j, d, isRequired, d, isInstance, d, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property, d);
-      }
-      --indent;
-
-      unsigned numSubProtocols;
-      Protocol **subProtocols = protocol_copyProtocolList(protocol, &numSubProtocols);
-      sort_protocols(subProtocols, numSubProtocols);
-      PRINT2(i, d, numSubProtocols, d);
-      ++indent;
-      for (j=0; j<numSubProtocols; ++j) {
-        Protocol *subProtocol = subProtocols[j];
-        PRINT3(i, d, j, d, protocol_getName(protocol), s);
-      } 
-      --indent;      
-    }
-    --indent;
-  }
- 
-  PRINT1((int) class_getInstanceSize(c), d);
-
-  PRINT1(class_getIvarLayout(c), s);
-
-  PRINT1(class_getSuperclass(c) != 0, d);
-
-  Class s = class_getSuperclass(c);
-  if (s) {
-    printInfo(s, 0);
-  }
-
-  PRINT1(class_getVersion(c), d);
-
-  PRINT1(class_getWeakIvarLayout(c), s);
-
-  --indent;
-}
-
-// class_getClassVariable
-// class_getMethodImplementation
-// class_getMethodImplementation_stret
-// class_setIvarLayout
-// class_setSuperclass
-// class_setVersion
-// class_setWeakIvarLayout
-
-// method_exchangeImplementations
-// method_getArgumentType
-// method_getReturnType
-// method_getTypeEncoding
-// method_setImplementation
-
-// objc_allocateClassPair
-// objc_copyProtocolList
-// objc_duplicateClass
-// objc_getFutureClass
-// objc_lookupClass
-// objc_msgSend
-// objc_msgSendSuper
-// objc_msgSendSuper_stret
-// objc_msgSend_fpret
-// objc_msgSend_stret
-// objc_registerClassPair
-// objc_setFutureClass
-
-// object_copy
-// object_dispose
-// object_getIndexedIvars
-// object_getInstanceVariable
-// object_getIvar
-// object_setClass
-// object_setInstanceVariable
-// object_setIvar
-
-// protocol_conformsToProtocol
-// protocol_getMethodDescription
-// protocol_getProperty
-// protocol_isEqual
-
-// sel_isEqual
-// sel_registerName
-
-// class_addMethod
-// class_addProtocol
-// class_createInstance
-
-unsigned Verbose = 0;
-
-int main() {
-  unsigned i;
-
-  printf("-- A class --\n");
-  printInfo([ A class], 1);
-  printf("-- A metaclass --\n");
-  PRINT1(object_getClass([A class]) == objc_getMetaClass("A"), d);
-  printInfo(objc_getMetaClass("A"), 1);
-
-  unsigned numObjCProtocols;
-  Protocol **protocols = objc_copyProtocolList(&numObjCProtocols);
-  PRINT1(numObjCProtocols, d);
-  if (Verbose) {
-    ++indent;
-    for (i=0; i<numObjCProtocols; ++i) {
-      Protocol *protocol = protocols[i];
-      PRINT2(i, d, protocol_getName(protocol), s);
-    }
-    --indent;
-  }
-
-  unsigned numClasses = objc_getClassList(0, 0);
-  Class *classes = calloc(numClasses, sizeof(*classes));
-  objc_getClassList(classes, numClasses * sizeof(*classes));
-  PRINT1(numClasses, d);
-  if (Verbose) {
-    for (i=0; i<numClasses; ++i) {
-      PRINT2(i, d, class_getName(classes[i]), s);
-    }
-  }
-
-  return 0;
-}
-
-// rc && echo "--gcc--" && gcc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out && echo "--ccc--" && ccc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out
-// rc && echo "--gcc--" && gcc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out && echo "--ccc--" && ccc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out && ../TestRunner.sh print-class-info.m
-// rc && ../TestRunner.sh print-class-info.m

Removed: test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.reference_output?rev=115504&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.reference_output (original)
+++ test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-32.reference_output (removed)
@@ -1,450 +0,0 @@
--- A class --
-  c != 0: 1
-  class_getName(c): A
-  object_getClassName(c): A
-  objc_getClass(class_getName(c)) == c: 1
-  class_conformsToProtocol(c, @protocol(P)): 1
-  numIvars: 7
-    i: 0, ivar_getName(ivar): halfDynamicA
-    i: 0, ivar_getOffset(ivar): 24
-    i: 0, ivar_getTypeEncoding(ivar): i
-    i: 0, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 1, ivar_getName(ivar): halfDynamicB
-    i: 1, ivar_getOffset(ivar): 28
-    i: 1, ivar_getTypeEncoding(ivar): i
-    i: 1, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 2, ivar_getName(ivar): privateVar
-    i: 2, ivar_getOffset(ivar): 4
-    i: 2, ivar_getTypeEncoding(ivar): i
-    i: 2, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 3, ivar_getName(ivar): protectedVar
-    i: 3, ivar_getOffset(ivar): 8
-    i: 3, ivar_getTypeEncoding(ivar): i
-    i: 3, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 4, ivar_getName(ivar): publicVar
-    i: 4, ivar_getOffset(ivar): 12
-    i: 4, ivar_getTypeEncoding(ivar): i
-    i: 4, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 5, ivar_getName(ivar): strongVar
-    i: 5, ivar_getOffset(ivar): 20
-    i: 5, ivar_getTypeEncoding(ivar): @
-    i: 5, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 6, ivar_getName(ivar): weakVar
-    i: 6, ivar_getOffset(ivar): 16
-    i: 6, ivar_getTypeEncoding(ivar): @
-    i: 6, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-  numMethods: 15
-    i: 0, sel_getName(method_getName(method)): categoryInstanceMethod
-    i: 0, class_respondsToSelector(c, method_getName(method)): 1
-    i: 0, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 0, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 0, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 0, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 0, numArgs = method_getNumberOfArguments(method): 2
-    i: 0, method_copyReturnType(method): v
-    i: 0, j: 0, method_copyArgumentType(method, j): @
-    i: 0, j: 1, method_copyArgumentType(method, j): :
-    i: 0, method_getTypeEncoding(method): v8 at 0:4
-    i: 1, sel_getName(method_getName(method)): dynamicNotReally
-    i: 1, class_respondsToSelector(c, method_getName(method)): 1
-    i: 1, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 1, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 1, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 1, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 1, numArgs = method_getNumberOfArguments(method): 2
-    i: 1, method_copyReturnType(method): i
-    i: 1, j: 0, method_copyArgumentType(method, j): @
-    i: 1, j: 1, method_copyArgumentType(method, j): :
-    i: 1, method_getTypeEncoding(method): i8 at 0:4
-    i: 2, sel_getName(method_getName(method)): dynamicNotReally:
-    i: 2, class_respondsToSelector(c, method_getName(method)): 1
-    i: 2, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 2, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 2, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 2, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 2, numArgs = method_getNumberOfArguments(method): 3
-    i: 2, method_copyReturnType(method): v
-    i: 2, j: 0, method_copyArgumentType(method, j): @
-    i: 2, j: 1, method_copyArgumentType(method, j): :
-    i: 2, j: 2, method_copyArgumentType(method, j): i
-    i: 2, method_getTypeEncoding(method): v12 at 0:4i8
-    i: 3, sel_getName(method_getName(method)): extendedInstanceMethod
-    i: 3, class_respondsToSelector(c, method_getName(method)): 1
-    i: 3, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 3, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 3, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 3, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 3, numArgs = method_getNumberOfArguments(method): 2
-    i: 3, method_copyReturnType(method): v
-    i: 3, j: 0, method_copyArgumentType(method, j): @
-    i: 3, j: 1, method_copyArgumentType(method, j): :
-    i: 3, method_getTypeEncoding(method): v8 at 0:4
-    i: 4, sel_getName(method_getName(method)): halfDynamicA
-    i: 4, class_respondsToSelector(c, method_getName(method)): 1
-    i: 4, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 4, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 4, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 4, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 4, numArgs = method_getNumberOfArguments(method): 2
-    i: 4, method_copyReturnType(method): i
-    i: 4, j: 0, method_copyArgumentType(method, j): @
-    i: 4, j: 1, method_copyArgumentType(method, j): :
-    i: 4, method_getTypeEncoding(method): i8 at 0:4
-    i: 5, sel_getName(method_getName(method)): halfDynamicB
-    i: 5, class_respondsToSelector(c, method_getName(method)): 1
-    i: 5, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 5, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 5, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 5, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 5, numArgs = method_getNumberOfArguments(method): 2
-    i: 5, method_copyReturnType(method): i
-    i: 5, j: 0, method_copyArgumentType(method, j): @
-    i: 5, j: 1, method_copyArgumentType(method, j): :
-    i: 5, method_getTypeEncoding(method): i8 at 0:4
-    i: 6, sel_getName(method_getName(method)): halfDynamicB:
-    i: 6, class_respondsToSelector(c, method_getName(method)): 1
-    i: 6, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 6, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 6, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 6, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 6, numArgs = method_getNumberOfArguments(method): 3
-    i: 6, method_copyReturnType(method): v
-    i: 6, j: 0, method_copyArgumentType(method, j): @
-    i: 6, j: 1, method_copyArgumentType(method, j): :
-    i: 6, j: 2, method_copyArgumentType(method, j): i
-    i: 6, method_getTypeEncoding(method): v12 at 0:4i8
-    i: 7, sel_getName(method_getName(method)): instanceMethod
-    i: 7, class_respondsToSelector(c, method_getName(method)): 1
-    i: 7, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 7, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 7, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 7, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 7, numArgs = method_getNumberOfArguments(method): 2
-    i: 7, method_copyReturnType(method): v
-    i: 7, j: 0, method_copyArgumentType(method, j): @
-    i: 7, j: 1, method_copyArgumentType(method, j): :
-    i: 7, method_getTypeEncoding(method): v8 at 0:4
-    i: 8, sel_getName(method_getName(method)): optionalProtocolProperty
-    i: 8, class_respondsToSelector(c, method_getName(method)): 1
-    i: 8, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 8, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 8, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 8, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 8, numArgs = method_getNumberOfArguments(method): 2
-    i: 8, method_copyReturnType(method): i
-    i: 8, j: 0, method_copyArgumentType(method, j): @
-    i: 8, j: 1, method_copyArgumentType(method, j): :
-    i: 8, method_getTypeEncoding(method): i8 at 0:4
-    i: 9, sel_getName(method_getName(method)): requiredProtocolInstanceMethod
-    i: 9, class_respondsToSelector(c, method_getName(method)): 1
-    i: 9, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 9, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 9, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 9, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 9, numArgs = method_getNumberOfArguments(method): 2
-    i: 9, method_copyReturnType(method): v
-    i: 9, j: 0, method_copyArgumentType(method, j): @
-    i: 9, j: 1, method_copyArgumentType(method, j): :
-    i: 9, method_getTypeEncoding(method): v8 at 0:4
-    i: 10, sel_getName(method_getName(method)): requiredProtocolProperty
-    i: 10, class_respondsToSelector(c, method_getName(method)): 1
-    i: 10, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 10, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 10, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 10, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 10, numArgs = method_getNumberOfArguments(method): 2
-    i: 10, method_copyReturnType(method): i
-    i: 10, j: 0, method_copyArgumentType(method, j): @
-    i: 10, j: 1, method_copyArgumentType(method, j): :
-    i: 10, method_getTypeEncoding(method): i8 at 0:4
-    i: 11, sel_getName(method_getName(method)): setHalfDynamicA:
-    i: 11, class_respondsToSelector(c, method_getName(method)): 1
-    i: 11, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 11, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 11, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 11, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 11, numArgs = method_getNumberOfArguments(method): 3
-    i: 11, method_copyReturnType(method): v
-    i: 11, j: 0, method_copyArgumentType(method, j): @
-    i: 11, j: 1, method_copyArgumentType(method, j): :
-    i: 11, j: 2, method_copyArgumentType(method, j): i
-    i: 11, method_getTypeEncoding(method): v12 at 0:4i8
-    i: 12, sel_getName(method_getName(method)): setHalfDynamicB:
-    i: 12, class_respondsToSelector(c, method_getName(method)): 1
-    i: 12, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 12, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 12, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 12, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 12, numArgs = method_getNumberOfArguments(method): 3
-    i: 12, method_copyReturnType(method): v
-    i: 12, j: 0, method_copyArgumentType(method, j): @
-    i: 12, j: 1, method_copyArgumentType(method, j): :
-    i: 12, j: 2, method_copyArgumentType(method, j): i
-    i: 12, method_getTypeEncoding(method): v12 at 0:4i8
-    i: 13, sel_getName(method_getName(method)): setOptionalProtocolProperty:
-    i: 13, class_respondsToSelector(c, method_getName(method)): 1
-    i: 13, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 13, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 13, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 13, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 13, numArgs = method_getNumberOfArguments(method): 3
-    i: 13, method_copyReturnType(method): v
-    i: 13, j: 0, method_copyArgumentType(method, j): @
-    i: 13, j: 1, method_copyArgumentType(method, j): :
-    i: 13, j: 2, method_copyArgumentType(method, j): i
-    i: 13, method_getTypeEncoding(method): v12 at 0:4i8
-    i: 14, sel_getName(method_getName(method)): setRequiredProtocolProperty:
-    i: 14, class_respondsToSelector(c, method_getName(method)): 1
-    i: 14, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 14, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 14, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 14, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 14, numArgs = method_getNumberOfArguments(method): 3
-    i: 14, method_copyReturnType(method): v
-    i: 14, j: 0, method_copyArgumentType(method, j): @
-    i: 14, j: 1, method_copyArgumentType(method, j): :
-    i: 14, j: 2, method_copyArgumentType(method, j): i
-    i: 14, method_getTypeEncoding(method): v12 at 0:4i8
-  numProperties: 11
-    i: 0, property_getName(property): Ptest_a
-    i: 0, property_getAttributes(property): Ti,D
-    i: 0, class_getProperty(c, property_getName(property)) == property: 1
-    i: 1, property_getName(property): Ptest_b
-    i: 1, property_getAttributes(property): T@,C,D
-    i: 1, class_getProperty(c, property_getName(property)) == property: 1
-    i: 2, property_getName(property): Ptest_c
-    i: 2, property_getAttributes(property): T@,&,D
-    i: 2, class_getProperty(c, property_getName(property)) == property: 1
-    i: 3, property_getName(property): categoryProperty
-    i: 3, property_getAttributes(property): Ti,D
-    i: 3, class_getProperty(c, property_getName(property)) == property: 1
-    i: 4, property_getName(property): dynamicNotReally
-    i: 4, property_getAttributes(property): Ti,D
-    i: 4, class_getProperty(c, property_getName(property)) == property: 1
-    i: 5, property_getName(property): halfDynamicA
-    i: 5, property_getAttributes(property): Ti,VhalfDynamicA
-    i: 5, class_getProperty(c, property_getName(property)) == property: 1
-    i: 6, property_getName(property): halfDynamicB
-    i: 6, property_getAttributes(property): Ti,VhalfDynamicB
-    i: 6, class_getProperty(c, property_getName(property)) == property: 1
-    i: 7, property_getName(property): optionalProtocolProperty
-    i: 7, property_getAttributes(property): Ti,VpublicVar
-    i: 7, class_getProperty(c, property_getName(property)) == property: 1
-    i: 8, property_getName(property): otherThings
-    i: 8, property_getAttributes(property): Ti,D,SiSetOtherThings:
-    i: 8, class_getProperty(c, property_getName(property)) == property: 1
-    i: 9, property_getName(property): requiredProtocolProperty
-    i: 9, property_getAttributes(property): Ti,VprivateVar
-    i: 9, class_getProperty(c, property_getName(property)) == property: 1
-    i: 10, property_getName(property): things
-    i: 10, property_getAttributes(property): Ti,D,GiGetThings
-    i: 10, class_getProperty(c, property_getName(property)) == property: 1
-  numProtocols: 2
-    i: 0, protocol_getName(protocol): CategoryProtocol
-    i: 0, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 0, isRequired: 0, isInstance: 0, numProtocolMethods: 0
-    i: 0, isRequired: 0, isInstance: 1, numProtocolMethods: 0
-    i: 0, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryClassMethod
-    i: 0, j: 0, methods[j].types: v8 at 0:4
-    i: 0, isRequired: 1, isInstance: 1, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryInstanceMethod
-    i: 0, j: 0, methods[j].types: v8 at 0:4
-    i: 0, numProperties: 0
-    i: 0, numSubProtocols: 0
-    i: 1, protocol_getName(protocol): P
-    i: 1, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 1, isRequired: 0, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, isRequired: 0, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, j: 1, sel_getName(methods[j].name): optionalProtocolProperty
-    i: 1, j: 1, methods[j].types: i8 at 0:4
-    i: 1, j: 2, sel_getName(methods[j].name): setOptionalProtocolProperty:
-    i: 1, j: 2, methods[j].types: v12 at 0:4i8
-    i: 1, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, isRequired: 1, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, j: 1, sel_getName(methods[j].name): requiredProtocolProperty
-    i: 1, j: 1, methods[j].types: i8 at 0:4
-    i: 1, j: 2, sel_getName(methods[j].name): setRequiredProtocolProperty:
-    i: 1, j: 2, methods[j].types: v12 at 0:4i8
-    i: 1, numProperties: 2
-      i: 1, j: 0, property_getName(property): optionalProtocolProperty
-      i: 1, j: 0, property_getAttributes(property): Ti
-      i: 1, j: 0, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-      i: 1, j: 1, property_getName(property): requiredProtocolProperty
-      i: 1, j: 1, property_getAttributes(property): Ti
-      i: 1, j: 1, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-    i: 1, numSubProtocols: 1
-      i: 1, j: 0, protocol_getName(protocol): P
-  (int) class_getInstanceSize(c): 32
-  class_getIvarLayout(c): (null)
-  class_getSuperclass(c) != 0: 1
-    c != 0: 1
-    class_getName(c): NSObject
-    object_getClassName(c): NSObject
-    objc_getClass(class_getName(c)) == c: 1
-    class_conformsToProtocol(c, @protocol(P)): 0
-    numIvars: 1
-    numMethods: 216
-    numProperties: 0
-    numProtocols: 1
-    (int) class_getInstanceSize(c): 4
-    class_getIvarLayout(c): (null)
-    class_getSuperclass(c) != 0: 0
-    class_getVersion(c): 0
-    class_getWeakIvarLayout(c): (null)
-  class_getVersion(c): 0
-  class_getWeakIvarLayout(c): (null)
--- A metaclass --
-object_getClass([A class]) == objc_getMetaClass("A"): 1
-  c != 0: 1
-  class_getName(c): A
-  object_getClassName(c): NSObject
-  objc_getClass(class_getName(c)) == c: 0
-  class_conformsToProtocol(c, @protocol(P)): 1
-  numIvars: 0
-  numMethods: 4
-    i: 0, sel_getName(method_getName(method)): categoryClassMethod
-    i: 0, class_respondsToSelector(c, method_getName(method)): 1
-    i: 0, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 0, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 0, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 0, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 0, numArgs = method_getNumberOfArguments(method): 2
-    i: 0, method_copyReturnType(method): v
-    i: 0, j: 0, method_copyArgumentType(method, j): @
-    i: 0, j: 1, method_copyArgumentType(method, j): :
-    i: 0, method_getTypeEncoding(method): v8 at 0:4
-    i: 1, sel_getName(method_getName(method)): classMethod
-    i: 1, class_respondsToSelector(c, method_getName(method)): 1
-    i: 1, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 1, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 1, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 1, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 1, numArgs = method_getNumberOfArguments(method): 2
-    i: 1, method_copyReturnType(method): v
-    i: 1, j: 0, method_copyArgumentType(method, j): @
-    i: 1, j: 1, method_copyArgumentType(method, j): :
-    i: 1, method_getTypeEncoding(method): v8 at 0:4
-    i: 2, sel_getName(method_getName(method)): extendedClassMethod
-    i: 2, class_respondsToSelector(c, method_getName(method)): 1
-    i: 2, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 2, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 2, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 2, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 2, numArgs = method_getNumberOfArguments(method): 2
-    i: 2, method_copyReturnType(method): v
-    i: 2, j: 0, method_copyArgumentType(method, j): @
-    i: 2, j: 1, method_copyArgumentType(method, j): :
-    i: 2, method_getTypeEncoding(method): v8 at 0:4
-    i: 3, sel_getName(method_getName(method)): requiredProtocolClassMethod
-    i: 3, class_respondsToSelector(c, method_getName(method)): 1
-    i: 3, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 3, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 3, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 3, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 3, numArgs = method_getNumberOfArguments(method): 2
-    i: 3, method_copyReturnType(method): v
-    i: 3, j: 0, method_copyArgumentType(method, j): @
-    i: 3, j: 1, method_copyArgumentType(method, j): :
-    i: 3, method_getTypeEncoding(method): v8 at 0:4
-  numProperties: 0
-  numProtocols: 2
-    i: 0, protocol_getName(protocol): CategoryProtocol
-    i: 0, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 0, isRequired: 0, isInstance: 0, numProtocolMethods: 0
-    i: 0, isRequired: 0, isInstance: 1, numProtocolMethods: 0
-    i: 0, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryClassMethod
-    i: 0, j: 0, methods[j].types: v8 at 0:4
-    i: 0, isRequired: 1, isInstance: 1, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryInstanceMethod
-    i: 0, j: 0, methods[j].types: v8 at 0:4
-    i: 0, numProperties: 0
-    i: 0, numSubProtocols: 0
-    i: 1, protocol_getName(protocol): P
-    i: 1, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 1, isRequired: 0, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, isRequired: 0, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, j: 1, sel_getName(methods[j].name): optionalProtocolProperty
-    i: 1, j: 1, methods[j].types: i8 at 0:4
-    i: 1, j: 2, sel_getName(methods[j].name): setOptionalProtocolProperty:
-    i: 1, j: 2, methods[j].types: v12 at 0:4i8
-    i: 1, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, isRequired: 1, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v8 at 0:4
-    i: 1, j: 1, sel_getName(methods[j].name): requiredProtocolProperty
-    i: 1, j: 1, methods[j].types: i8 at 0:4
-    i: 1, j: 2, sel_getName(methods[j].name): setRequiredProtocolProperty:
-    i: 1, j: 2, methods[j].types: v12 at 0:4i8
-    i: 1, numProperties: 2
-      i: 1, j: 0, property_getName(property): optionalProtocolProperty
-      i: 1, j: 0, property_getAttributes(property): Ti
-      i: 1, j: 0, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-      i: 1, j: 1, property_getName(property): requiredProtocolProperty
-      i: 1, j: 1, property_getAttributes(property): Ti
-      i: 1, j: 1, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-    i: 1, numSubProtocols: 1
-      i: 1, j: 0, protocol_getName(protocol): P
-  (int) class_getInstanceSize(c): 48
-  class_getIvarLayout(c): (null)
-  class_getSuperclass(c) != 0: 1
-    c != 0: 1
-    class_getName(c): NSObject
-    object_getClassName(c): NSObject
-    objc_getClass(class_getName(c)) == c: 0
-    class_conformsToProtocol(c, @protocol(P)): 0
-    numIvars: 12
-    numMethods: 85
-    numProperties: 0
-    numProtocols: 1
-    (int) class_getInstanceSize(c): 48
-    class_getIvarLayout(c): (null)
-    class_getSuperclass(c) != 0: 1
-      c != 0: 1
-      class_getName(c): NSObject
-      object_getClassName(c): NSObject
-      objc_getClass(class_getName(c)) == c: 1
-      class_conformsToProtocol(c, @protocol(P)): 0
-      numIvars: 1
-      numMethods: 216
-      numProperties: 0
-      numProtocols: 1
-      (int) class_getInstanceSize(c): 4
-      class_getIvarLayout(c): (null)
-      class_getSuperclass(c) != 0: 0
-      class_getVersion(c): 0
-      class_getWeakIvarLayout(c): (null)
-    class_getVersion(c): 7
-    class_getWeakIvarLayout(c): (null)
-  class_getVersion(c): 7
-  class_getWeakIvarLayout(c): (null)
-numObjCProtocols: 21
-numClasses: 529
-exit 0

Removed: test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.m
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.m?rev=115504&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.m (original)
+++ test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.m (removed)
@@ -1,422 +0,0 @@
-#include <Foundation/NSObject.h>
-#include <objc/runtime.h>
-#include <stdio.h>
-#include <stdlib.h>
-
- at protocol UnusedProtocol
-+(void) makeWaffles;
- at end
-
- at protocol P2
- at end
-
- at protocol P <P2>
- at required
-+(void) requiredProtocolClassMethod;
--(void) requiredProtocolInstanceMethod;
- at optional
-+(void) optionalProtocolClassMethod;
--(void) optionalProtocolInstanceMethod;
-
- at required
- at property int requiredProtocolProperty;
- at optional
- at property int optionalProtocolProperty; // XXX this is not actually
-                                        // optional in Obj-C 2? or
-                                        // maybe just in old ABI?
- at end
-
- at protocol CategoryProtocol
-+(void) categoryClassMethod;
--(void) categoryInstanceMethod;
- at end
-
- at interface A : NSObject <P>  {
- at private
-  int privateVar;
- at protected
-  int protectedVar;
- at public
-  int publicVar;
-  __weak id weakVar;
-  __strong id strongVar;
-  
-  int halfDynamicA, halfDynamicB;
-}
-
- at property(assign) int requiredProtocolProperty;
- at property(assign) int optionalProtocolProperty;
-
- at property(assign) int Ptest_a;
- at property(copy) id Ptest_b;
- at property(retain) id Ptest_c;
-
- at property(getter=iGetThings) int things;
- at property(setter=iSetOtherThings:) int otherThings;
-
- at property(assign) int dynamicNotReally;
- at property(assign) int halfDynamicA;
- at property(assign) int halfDynamicB;
-
-+(void) classMethod;
--(void) instanceMethod;
- at end
-
- at interface A ()
-+(void) extendedClassMethod;
--(void) extendedInstanceMethod;
-+(void) requiredProtocolClassMethod;
--(void) requiredProtocolInstanceMethod;
- at end
-
- at implementation A
- at dynamic Ptest_a, Ptest_b, Ptest_c;
- at dynamic things, otherThings;
-
- at dynamic dynamicNotReally;
--(int) dynamicNotReally {};
--(void) dynamicNotReally: (int) arg {};
-
- at synthesize halfDynamicA;
--(int) halfDynamicA {};
-
- at synthesize halfDynamicB;
--(void) halfDynamicB: (int) arg {};
-
- at synthesize requiredProtocolProperty = privateVar;
-#ifdef ABI2
- at synthesize optionalProtocolProperty = someRandomVar;
-#else
- at synthesize optionalProtocolProperty = publicVar;
-#endif
-
-+(void) classMethod {
-  printf("I am a class method\n");
-}
--(void) instanceMethod {
-  printf("I am an instance method\n");
-}
-
-+(void) requiredProtocolClassMethod {
-  printf("I am a required protocol class method\n");
-}
-
--(void) requiredProtocolInstanceMethod {
-  printf("I am a required protocol instance method\n");
-}
-
-+(void) extendedClassMethod {
-  printf("I am an extended class method\n");
-}
--(void) extendedInstanceMethod {
-  printf("I am an extended instance method\n");
-}
- at end
-
- at interface A ( A_Category ) <CategoryProtocol>
-+(void) categoryClassMethod;
--(void) categoryInstanceMethod;
-
- at property(assign) int categoryProperty;
- at end
-
- at implementation A ( A_Category )
- at dynamic categoryProperty;
-
-+(void) categoryClassMethod {
-}
--(void) categoryInstanceMethod {
-}
- at end
-
-/***/
-
-int ivar_cmp(const void *av, const void *bv) {
-  const Ivar *a = av;
-  const Ivar *b = bv;
-  return strcmp(ivar_getName(*a), ivar_getName(*b));
-}
-
-int methodDescription_cmp(const void *av, const void *bv) {
-  const struct objc_method_description *a = av;
-  const struct objc_method_description *b = bv;
-  return strcmp(sel_getName(a->name), sel_getName(b->name));
-}
-
-int method_cmp(const void *av, const void *bv) {
-  const Method *a = av;
-  const Method *b = bv;
-  return strcmp(method_getName(*a), method_getName(*b));
-}
-
-int property_cmp(const void *av, const void *bv) {
-  const objc_property_t *a = av;
-  const objc_property_t *b = bv;
-  return strcmp(property_getName(*a), property_getName(*b));
-}
-
-int protocol_cmp(const void *av, const void *bv) {
-  Protocol * const *a = av;
-  Protocol * const *b = bv;
-  return strcmp(protocol_getName(*a), protocol_getName(*b));
-}
-
-void sort_ivars(Ivar *ivars, unsigned numIvars) {
-  qsort(ivars, numIvars, sizeof(*ivars), ivar_cmp);
-}
-
-void sort_methodDescriptions(struct objc_method_description *methods, unsigned numMethods) {
-  qsort(methods, numMethods, sizeof(*methods), methodDescription_cmp);
-}
-
-void sort_methods(Method *methods, unsigned numMethods) {
-  unsigned i;
-  qsort(methods, numMethods, sizeof(*methods), method_cmp);
-}
-
-void sort_properties(objc_property_t *properties, unsigned numProperties) {
-  qsort(properties, numProperties, sizeof(*properties), property_cmp);
-}
-
-void sort_protocols(Protocol **protocols, unsigned numProtocols) {
-  qsort(protocols, numProtocols, sizeof(*protocols), protocol_cmp);
-}
-
-/***/
-
-static int indent = 0;
-#define PRINT1(e0,t0) printf("%*s" #e0 ": %" #t0 "\n", indent*2, "", e0)
-#define PRINT2(e0,t0,e1,t1) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 "\n", indent*2, "", e0, e1)
-#define PRINT3(e0,t0,e1,t1,e2,t2) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 ", " #e2 ": %" #t2 "\n", indent*2, "", e0, e1, e2)
-#define PRINT4(e0,t0,e1,t1,e2,t2,e3,t3) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 ", " #e2 ": %" #t2 ", " #e3 ": %" #t3 "\n", indent*2, "", e0, e1, e2, e3)
-#define PRINT5(e0,t0,e1,t1,e2,t2,e3,t3,e4,t4) printf("%*s" #e0 ": %" #t0 ", " #e1 ": %" #t1 ", " #e2 ": %" #t2 ", " #e3 ": %" #t3 ", " #e4 ": %" #t4 "\n", indent*2, "", e0, e1, e2, e3, e4)
-void printInfo(Class c, int printData) {
-  unsigned i;
-
-  ++indent;
-  PRINT1(c != 0, d);
-  PRINT1(class_getName(c), s);
-  PRINT1(object_getClassName(c), s);
-  PRINT1(objc_getClass(class_getName(c)) == c, d);
-  PRINT1(class_conformsToProtocol(c, @protocol(P)), d);
-  
-  unsigned numIvars;
-  Ivar *ivars = class_copyIvarList(c, &numIvars);
-  sort_ivars(ivars, numIvars);
-  PRINT1(numIvars, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numIvars; ++i) {
-      Ivar ivar = ivars[i];
-      PRINT2(i, d, ivar_getName(ivar), s);
-      PRINT2(i, d, ivar_getOffset(ivar), d);
-      PRINT2(i, d, ivar_getTypeEncoding(ivar), s);
-      PRINT2(i, d, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar, d);
-    }
-    --indent;
-  }
-
-  unsigned numMethods;
-  Method *methods = class_copyMethodList(c, &numMethods);
-  sort_methods(methods, numMethods);
-  PRINT1(numMethods, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numMethods; ++i) {
-      Method method = methods[i];
-      unsigned j, numArgs;
-      PRINT2(i, d, sel_getName(method_getName(method)), s);
-      PRINT2(i, d, class_respondsToSelector(c, method_getName(method)), d);
-      PRINT2(i, d, !strcmp(method_getName(method),sel_getName(method_getName(method))), d);
-      PRINT2(i, d, method_getName(method) == sel_getUid((char*) method_getName(method)), d);
-      PRINT2(i, d, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method, d);
-      PRINT2(i, d, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method, d);
-      PRINT2(i, d, numArgs = method_getNumberOfArguments(method), d);    
-      PRINT2(i, d, method_copyReturnType(method), s);
-      for (j=0; j<numArgs; ++j) {
-        PRINT3(i, d, j, d, method_copyArgumentType(method, j), s);
-      }      
-      PRINT2(i, d, method_getTypeEncoding(method), s);
-    }
-    --indent;
-  }
-
-  unsigned numProperties;
-  objc_property_t *properties = class_copyPropertyList(c, &numProperties);
-  sort_properties(properties, numProperties);
-  PRINT1(numProperties, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numProperties; ++i) {
-      objc_property_t property = properties[i];
-      PRINT2(i, d, property_getName(property), s);
-      PRINT2(i, d, property_getAttributes(property), s);
-      PRINT2(i, d, class_getProperty(c, property_getName(property)) == property, d);
-    }
-    --indent;
-  }
-
-  unsigned numProtocols;
-  Protocol **protocols = class_copyProtocolList(c, &numProtocols);
-  sort_protocols(protocols, numProtocols);
-  PRINT1(numProtocols, d);
-  if (printData) {
-    ++indent;
-    for (i=0; i<numProtocols; ++i) {
-      Protocol *protocol = protocols[i];
-      unsigned j;
-
-      PRINT2(i, d, protocol_getName(protocol), s);
-      PRINT2(i, d, objc_getProtocol(protocol_getName(protocol))==protocol, d); 
-
-      unsigned isRequired;
-      unsigned isInstance;
-      for (isRequired = 0; isRequired < 2; ++isRequired) {
-        for (isInstance = 0; isInstance < 2; ++isInstance) {
-          unsigned numProtocolMethods;
-          struct objc_method_description *methods = protocol_copyMethodDescriptionList(protocol, 
-                                                                                       isRequired,
-                                                                                       isInstance,
-                                                                                       &numProtocolMethods);
-          sort_methodDescriptions(methods, numProtocolMethods);
-          PRINT4(i, d, isRequired, d, isInstance, d, numProtocolMethods, d);
-          for (j=0; j<numProtocolMethods; ++j) {
-            PRINT3(i, d, j, d, sel_getName(methods[j].name), s);
-            PRINT3(i, d, j, d, methods[j].types, s);
-          }
-        }
-      }
-      unsigned numProperties;
-      objc_property_t *properties = protocol_copyPropertyList(protocol, &numProperties);
-      sort_properties(properties, numProperties);
-      PRINT2(i, d, numProperties, d);
-      ++indent;
-      for (j=0; j<numProperties; ++j) {
-        objc_property_t property = properties[j];
-        PRINT3(i, d, j, d, property_getName(property), s);
-        PRINT3(i, d, j, d, property_getAttributes(property), s);
-        for (isRequired = 0; isRequired < 2; ++isRequired)
-          for (isInstance = 0; isInstance < 2; ++isInstance)
-            PRINT5(i, d, j, d, isRequired, d, isInstance, d, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property, d);
-      }
-      --indent;
-
-      unsigned numSubProtocols;
-      Protocol **subProtocols = protocol_copyProtocolList(protocol, &numSubProtocols);
-      sort_protocols(subProtocols, numSubProtocols);
-      PRINT2(i, d, numSubProtocols, d);
-      ++indent;
-      for (j=0; j<numSubProtocols; ++j) {
-        Protocol *subProtocol = subProtocols[j];
-        PRINT3(i, d, j, d, protocol_getName(protocol), s);
-      } 
-      --indent;      
-    }
-    --indent;
-  }
- 
-  PRINT1((int) class_getInstanceSize(c), d);
-
-  PRINT1(class_getIvarLayout(c), s);
-
-  PRINT1(class_getSuperclass(c) != 0, d);
-
-  Class s = class_getSuperclass(c);
-  if (s) {
-    printInfo(s, 0);
-  }
-
-  PRINT1(class_getVersion(c), d);
-
-  PRINT1(class_getWeakIvarLayout(c), s);
-
-  --indent;
-}
-
-// class_getClassVariable
-// class_getMethodImplementation
-// class_getMethodImplementation_stret
-// class_setIvarLayout
-// class_setSuperclass
-// class_setVersion
-// class_setWeakIvarLayout
-
-// method_exchangeImplementations
-// method_getArgumentType
-// method_getReturnType
-// method_getTypeEncoding
-// method_setImplementation
-
-// objc_allocateClassPair
-// objc_copyProtocolList
-// objc_duplicateClass
-// objc_getFutureClass
-// objc_lookupClass
-// objc_msgSend
-// objc_msgSendSuper
-// objc_msgSendSuper_stret
-// objc_msgSend_fpret
-// objc_msgSend_stret
-// objc_registerClassPair
-// objc_setFutureClass
-
-// object_copy
-// object_dispose
-// object_getIndexedIvars
-// object_getInstanceVariable
-// object_getIvar
-// object_setClass
-// object_setInstanceVariable
-// object_setIvar
-
-// protocol_conformsToProtocol
-// protocol_getMethodDescription
-// protocol_getProperty
-// protocol_isEqual
-
-// sel_isEqual
-// sel_registerName
-
-// class_addMethod
-// class_addProtocol
-// class_createInstance
-
-unsigned Verbose = 0;
-
-int main() {
-  unsigned i;
-
-  printf("-- A class --\n");
-  printInfo([ A class], 1);
-  printf("-- A metaclass --\n");
-  PRINT1(object_getClass([A class]) == objc_getMetaClass("A"), d);
-  printInfo(objc_getMetaClass("A"), 1);
-
-  unsigned numObjCProtocols;
-  Protocol **protocols = objc_copyProtocolList(&numObjCProtocols);
-  PRINT1(numObjCProtocols, d);
-  if (Verbose) {
-    ++indent;
-    for (i=0; i<numObjCProtocols; ++i) {
-      Protocol *protocol = protocols[i];
-      PRINT2(i, d, protocol_getName(protocol), s);
-    }
-    --indent;
-  }
-
-  unsigned numClasses = objc_getClassList(0, 0);
-  Class *classes = calloc(numClasses, sizeof(*classes));
-  objc_getClassList(classes, numClasses * sizeof(*classes));
-  PRINT1(numClasses, d);
-  if (Verbose) {
-    for (i=0; i<numClasses; ++i) {
-      PRINT2(i, d, class_getName(classes[i]), s);
-    }
-  }
-
-  return 0;
-}
-
-// rc && echo "--gcc--" && gcc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out && echo "--ccc--" && ccc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out
-// rc && echo "--gcc--" && gcc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out && echo "--ccc--" && ccc -fnext-runtime print-class-info.m -lobjc -framework Foundation && ./a.out && ../TestRunner.sh print-class-info.m
-// rc && ../TestRunner.sh print-class-info.m

Removed: test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.reference_output?rev=115504&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.reference_output (original)
+++ test-suite/trunk/SingleSource/UnitTests/ObjC/print-class-info-x86-64.reference_output (removed)
@@ -1,450 +0,0 @@
--- A class --
-  c != 0: 1
-  class_getName(c): A
-  object_getClassName(c): A
-  objc_getClass(class_getName(c)) == c: 1
-  class_conformsToProtocol(c, @protocol(P)): 1
-  numIvars: 7
-    i: 0, ivar_getName(ivar): halfDynamicA
-    i: 0, ivar_getOffset(ivar): 40
-    i: 0, ivar_getTypeEncoding(ivar): i
-    i: 0, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 1, ivar_getName(ivar): halfDynamicB
-    i: 1, ivar_getOffset(ivar): 44
-    i: 1, ivar_getTypeEncoding(ivar): i
-    i: 1, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 2, ivar_getName(ivar): privateVar
-    i: 2, ivar_getOffset(ivar): 8
-    i: 2, ivar_getTypeEncoding(ivar): i
-    i: 2, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 3, ivar_getName(ivar): protectedVar
-    i: 3, ivar_getOffset(ivar): 12
-    i: 3, ivar_getTypeEncoding(ivar): i
-    i: 3, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 4, ivar_getName(ivar): publicVar
-    i: 4, ivar_getOffset(ivar): 16
-    i: 4, ivar_getTypeEncoding(ivar): i
-    i: 4, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 5, ivar_getName(ivar): strongVar
-    i: 5, ivar_getOffset(ivar): 32
-    i: 5, ivar_getTypeEncoding(ivar): @
-    i: 5, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-    i: 6, ivar_getName(ivar): weakVar
-    i: 6, ivar_getOffset(ivar): 24
-    i: 6, ivar_getTypeEncoding(ivar): @
-    i: 6, class_getInstanceVariable(c, ivar_getName(ivar)) == ivar: 1
-  numMethods: 15
-    i: 0, sel_getName(method_getName(method)): categoryInstanceMethod
-    i: 0, class_respondsToSelector(c, method_getName(method)): 1
-    i: 0, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 0, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 0, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 0, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 0, numArgs = method_getNumberOfArguments(method): 2
-    i: 0, method_copyReturnType(method): v
-    i: 0, j: 0, method_copyArgumentType(method, j): @
-    i: 0, j: 1, method_copyArgumentType(method, j): :
-    i: 0, method_getTypeEncoding(method): v16 at 0:8
-    i: 1, sel_getName(method_getName(method)): dynamicNotReally
-    i: 1, class_respondsToSelector(c, method_getName(method)): 1
-    i: 1, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 1, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 1, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 1, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 1, numArgs = method_getNumberOfArguments(method): 2
-    i: 1, method_copyReturnType(method): i
-    i: 1, j: 0, method_copyArgumentType(method, j): @
-    i: 1, j: 1, method_copyArgumentType(method, j): :
-    i: 1, method_getTypeEncoding(method): i16 at 0:8
-    i: 2, sel_getName(method_getName(method)): dynamicNotReally:
-    i: 2, class_respondsToSelector(c, method_getName(method)): 1
-    i: 2, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 2, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 2, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 2, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 2, numArgs = method_getNumberOfArguments(method): 3
-    i: 2, method_copyReturnType(method): v
-    i: 2, j: 0, method_copyArgumentType(method, j): @
-    i: 2, j: 1, method_copyArgumentType(method, j): :
-    i: 2, j: 2, method_copyArgumentType(method, j): i
-    i: 2, method_getTypeEncoding(method): v20 at 0:8i16
-    i: 3, sel_getName(method_getName(method)): extendedInstanceMethod
-    i: 3, class_respondsToSelector(c, method_getName(method)): 1
-    i: 3, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 3, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 3, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 3, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 3, numArgs = method_getNumberOfArguments(method): 2
-    i: 3, method_copyReturnType(method): v
-    i: 3, j: 0, method_copyArgumentType(method, j): @
-    i: 3, j: 1, method_copyArgumentType(method, j): :
-    i: 3, method_getTypeEncoding(method): v16 at 0:8
-    i: 4, sel_getName(method_getName(method)): halfDynamicA
-    i: 4, class_respondsToSelector(c, method_getName(method)): 1
-    i: 4, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 4, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 4, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 4, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 4, numArgs = method_getNumberOfArguments(method): 2
-    i: 4, method_copyReturnType(method): i
-    i: 4, j: 0, method_copyArgumentType(method, j): @
-    i: 4, j: 1, method_copyArgumentType(method, j): :
-    i: 4, method_getTypeEncoding(method): i16 at 0:8
-    i: 5, sel_getName(method_getName(method)): halfDynamicB
-    i: 5, class_respondsToSelector(c, method_getName(method)): 1
-    i: 5, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 5, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 5, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 5, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 5, numArgs = method_getNumberOfArguments(method): 2
-    i: 5, method_copyReturnType(method): i
-    i: 5, j: 0, method_copyArgumentType(method, j): @
-    i: 5, j: 1, method_copyArgumentType(method, j): :
-    i: 5, method_getTypeEncoding(method): i16 at 0:8
-    i: 6, sel_getName(method_getName(method)): halfDynamicB:
-    i: 6, class_respondsToSelector(c, method_getName(method)): 1
-    i: 6, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 6, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 6, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 6, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 6, numArgs = method_getNumberOfArguments(method): 3
-    i: 6, method_copyReturnType(method): v
-    i: 6, j: 0, method_copyArgumentType(method, j): @
-    i: 6, j: 1, method_copyArgumentType(method, j): :
-    i: 6, j: 2, method_copyArgumentType(method, j): i
-    i: 6, method_getTypeEncoding(method): v20 at 0:8i16
-    i: 7, sel_getName(method_getName(method)): instanceMethod
-    i: 7, class_respondsToSelector(c, method_getName(method)): 1
-    i: 7, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 7, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 7, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 7, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 7, numArgs = method_getNumberOfArguments(method): 2
-    i: 7, method_copyReturnType(method): v
-    i: 7, j: 0, method_copyArgumentType(method, j): @
-    i: 7, j: 1, method_copyArgumentType(method, j): :
-    i: 7, method_getTypeEncoding(method): v16 at 0:8
-    i: 8, sel_getName(method_getName(method)): optionalProtocolProperty
-    i: 8, class_respondsToSelector(c, method_getName(method)): 1
-    i: 8, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 8, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 8, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 8, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 8, numArgs = method_getNumberOfArguments(method): 2
-    i: 8, method_copyReturnType(method): i
-    i: 8, j: 0, method_copyArgumentType(method, j): @
-    i: 8, j: 1, method_copyArgumentType(method, j): :
-    i: 8, method_getTypeEncoding(method): i16 at 0:8
-    i: 9, sel_getName(method_getName(method)): requiredProtocolInstanceMethod
-    i: 9, class_respondsToSelector(c, method_getName(method)): 1
-    i: 9, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 9, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 9, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 9, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 9, numArgs = method_getNumberOfArguments(method): 2
-    i: 9, method_copyReturnType(method): v
-    i: 9, j: 0, method_copyArgumentType(method, j): @
-    i: 9, j: 1, method_copyArgumentType(method, j): :
-    i: 9, method_getTypeEncoding(method): v16 at 0:8
-    i: 10, sel_getName(method_getName(method)): requiredProtocolProperty
-    i: 10, class_respondsToSelector(c, method_getName(method)): 1
-    i: 10, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 10, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 10, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 10, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 10, numArgs = method_getNumberOfArguments(method): 2
-    i: 10, method_copyReturnType(method): i
-    i: 10, j: 0, method_copyArgumentType(method, j): @
-    i: 10, j: 1, method_copyArgumentType(method, j): :
-    i: 10, method_getTypeEncoding(method): i16 at 0:8
-    i: 11, sel_getName(method_getName(method)): setHalfDynamicA:
-    i: 11, class_respondsToSelector(c, method_getName(method)): 1
-    i: 11, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 11, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 11, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 11, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 11, numArgs = method_getNumberOfArguments(method): 3
-    i: 11, method_copyReturnType(method): v
-    i: 11, j: 0, method_copyArgumentType(method, j): @
-    i: 11, j: 1, method_copyArgumentType(method, j): :
-    i: 11, j: 2, method_copyArgumentType(method, j): i
-    i: 11, method_getTypeEncoding(method): v20 at 0:8i16
-    i: 12, sel_getName(method_getName(method)): setHalfDynamicB:
-    i: 12, class_respondsToSelector(c, method_getName(method)): 1
-    i: 12, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 12, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 12, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 12, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 12, numArgs = method_getNumberOfArguments(method): 3
-    i: 12, method_copyReturnType(method): v
-    i: 12, j: 0, method_copyArgumentType(method, j): @
-    i: 12, j: 1, method_copyArgumentType(method, j): :
-    i: 12, j: 2, method_copyArgumentType(method, j): i
-    i: 12, method_getTypeEncoding(method): v20 at 0:8i16
-    i: 13, sel_getName(method_getName(method)): setOptionalProtocolProperty:
-    i: 13, class_respondsToSelector(c, method_getName(method)): 1
-    i: 13, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 13, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 13, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 13, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 13, numArgs = method_getNumberOfArguments(method): 3
-    i: 13, method_copyReturnType(method): v
-    i: 13, j: 0, method_copyArgumentType(method, j): @
-    i: 13, j: 1, method_copyArgumentType(method, j): :
-    i: 13, j: 2, method_copyArgumentType(method, j): i
-    i: 13, method_getTypeEncoding(method): v20 at 0:8i16
-    i: 14, sel_getName(method_getName(method)): setRequiredProtocolProperty:
-    i: 14, class_respondsToSelector(c, method_getName(method)): 1
-    i: 14, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 14, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 14, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 0
-    i: 14, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 14, numArgs = method_getNumberOfArguments(method): 3
-    i: 14, method_copyReturnType(method): v
-    i: 14, j: 0, method_copyArgumentType(method, j): @
-    i: 14, j: 1, method_copyArgumentType(method, j): :
-    i: 14, j: 2, method_copyArgumentType(method, j): i
-    i: 14, method_getTypeEncoding(method): v20 at 0:8i16
-  numProperties: 11
-    i: 0, property_getName(property): Ptest_a
-    i: 0, property_getAttributes(property): Ti,D
-    i: 0, class_getProperty(c, property_getName(property)) == property: 1
-    i: 1, property_getName(property): Ptest_b
-    i: 1, property_getAttributes(property): T@,C,D
-    i: 1, class_getProperty(c, property_getName(property)) == property: 1
-    i: 2, property_getName(property): Ptest_c
-    i: 2, property_getAttributes(property): T@,&,D
-    i: 2, class_getProperty(c, property_getName(property)) == property: 1
-    i: 3, property_getName(property): categoryProperty
-    i: 3, property_getAttributes(property): Ti,D
-    i: 3, class_getProperty(c, property_getName(property)) == property: 1
-    i: 4, property_getName(property): dynamicNotReally
-    i: 4, property_getAttributes(property): Ti,D
-    i: 4, class_getProperty(c, property_getName(property)) == property: 1
-    i: 5, property_getName(property): halfDynamicA
-    i: 5, property_getAttributes(property): Ti,VhalfDynamicA
-    i: 5, class_getProperty(c, property_getName(property)) == property: 1
-    i: 6, property_getName(property): halfDynamicB
-    i: 6, property_getAttributes(property): Ti,VhalfDynamicB
-    i: 6, class_getProperty(c, property_getName(property)) == property: 1
-    i: 7, property_getName(property): optionalProtocolProperty
-    i: 7, property_getAttributes(property): Ti,VpublicVar
-    i: 7, class_getProperty(c, property_getName(property)) == property: 1
-    i: 8, property_getName(property): otherThings
-    i: 8, property_getAttributes(property): Ti,D,SiSetOtherThings:
-    i: 8, class_getProperty(c, property_getName(property)) == property: 1
-    i: 9, property_getName(property): requiredProtocolProperty
-    i: 9, property_getAttributes(property): Ti,VprivateVar
-    i: 9, class_getProperty(c, property_getName(property)) == property: 1
-    i: 10, property_getName(property): things
-    i: 10, property_getAttributes(property): Ti,D,GiGetThings
-    i: 10, class_getProperty(c, property_getName(property)) == property: 1
-  numProtocols: 2
-    i: 0, protocol_getName(protocol): CategoryProtocol
-    i: 0, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 0, isRequired: 0, isInstance: 0, numProtocolMethods: 0
-    i: 0, isRequired: 0, isInstance: 1, numProtocolMethods: 0
-    i: 0, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryClassMethod
-    i: 0, j: 0, methods[j].types: v16 at 0:8
-    i: 0, isRequired: 1, isInstance: 1, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryInstanceMethod
-    i: 0, j: 0, methods[j].types: v16 at 0:8
-    i: 0, numProperties: 0
-    i: 0, numSubProtocols: 0
-    i: 1, protocol_getName(protocol): P
-    i: 1, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 1, isRequired: 0, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, isRequired: 0, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, j: 1, sel_getName(methods[j].name): optionalProtocolProperty
-    i: 1, j: 1, methods[j].types: i16 at 0:8
-    i: 1, j: 2, sel_getName(methods[j].name): setOptionalProtocolProperty:
-    i: 1, j: 2, methods[j].types: v20 at 0:8i16
-    i: 1, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, isRequired: 1, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, j: 1, sel_getName(methods[j].name): requiredProtocolProperty
-    i: 1, j: 1, methods[j].types: i16 at 0:8
-    i: 1, j: 2, sel_getName(methods[j].name): setRequiredProtocolProperty:
-    i: 1, j: 2, methods[j].types: v20 at 0:8i16
-    i: 1, numProperties: 2
-      i: 1, j: 0, property_getName(property): optionalProtocolProperty
-      i: 1, j: 0, property_getAttributes(property): Ti
-      i: 1, j: 0, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-      i: 1, j: 1, property_getName(property): requiredProtocolProperty
-      i: 1, j: 1, property_getAttributes(property): Ti
-      i: 1, j: 1, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-    i: 1, numSubProtocols: 1
-      i: 1, j: 0, protocol_getName(protocol): P
-  (int) class_getInstanceSize(c): 48
-  class_getIvarLayout(c): (null)
-  class_getSuperclass(c) != 0: 1
-    c != 0: 1
-    class_getName(c): NSObject
-    object_getClassName(c): NSObject
-    objc_getClass(class_getName(c)) == c: 1
-    class_conformsToProtocol(c, @protocol(P)): 0
-    numIvars: 1
-    numMethods: 216
-    numProperties: 0
-    numProtocols: 1
-    (int) class_getInstanceSize(c): 8
-    class_getIvarLayout(c): (null)
-    class_getSuperclass(c) != 0: 0
-    class_getVersion(c): 0
-    class_getWeakIvarLayout(c): (null)
-  class_getVersion(c): 0
-  class_getWeakIvarLayout(c): (null)
--- A metaclass --
-object_getClass([A class]) == objc_getMetaClass("A"): 1
-  c != 0: 1
-  class_getName(c): A
-  object_getClassName(c): NSObject
-  objc_getClass(class_getName(c)) == c: 0
-  class_conformsToProtocol(c, @protocol(P)): 1
-  numIvars: 0
-  numMethods: 4
-    i: 0, sel_getName(method_getName(method)): categoryClassMethod
-    i: 0, class_respondsToSelector(c, method_getName(method)): 1
-    i: 0, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 0, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 0, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 0, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 0, numArgs = method_getNumberOfArguments(method): 2
-    i: 0, method_copyReturnType(method): v
-    i: 0, j: 0, method_copyArgumentType(method, j): @
-    i: 0, j: 1, method_copyArgumentType(method, j): :
-    i: 0, method_getTypeEncoding(method): v16 at 0:8
-    i: 1, sel_getName(method_getName(method)): classMethod
-    i: 1, class_respondsToSelector(c, method_getName(method)): 1
-    i: 1, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 1, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 1, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 1, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 1, numArgs = method_getNumberOfArguments(method): 2
-    i: 1, method_copyReturnType(method): v
-    i: 1, j: 0, method_copyArgumentType(method, j): @
-    i: 1, j: 1, method_copyArgumentType(method, j): :
-    i: 1, method_getTypeEncoding(method): v16 at 0:8
-    i: 2, sel_getName(method_getName(method)): extendedClassMethod
-    i: 2, class_respondsToSelector(c, method_getName(method)): 1
-    i: 2, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 2, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 2, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 2, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 2, numArgs = method_getNumberOfArguments(method): 2
-    i: 2, method_copyReturnType(method): v
-    i: 2, j: 0, method_copyArgumentType(method, j): @
-    i: 2, j: 1, method_copyArgumentType(method, j): :
-    i: 2, method_getTypeEncoding(method): v16 at 0:8
-    i: 3, sel_getName(method_getName(method)): requiredProtocolClassMethod
-    i: 3, class_respondsToSelector(c, method_getName(method)): 1
-    i: 3, !strcmp(method_getName(method),sel_getName(method_getName(method))): 1
-    i: 3, method_getName(method) == sel_getUid((char*) method_getName(method)): 1
-    i: 3, class_getClassMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 3, class_getInstanceMethod(c, sel_getUid((char*) method_getName(method))) == method: 1
-    i: 3, numArgs = method_getNumberOfArguments(method): 2
-    i: 3, method_copyReturnType(method): v
-    i: 3, j: 0, method_copyArgumentType(method, j): @
-    i: 3, j: 1, method_copyArgumentType(method, j): :
-    i: 3, method_getTypeEncoding(method): v16 at 0:8
-  numProperties: 0
-  numProtocols: 2
-    i: 0, protocol_getName(protocol): CategoryProtocol
-    i: 0, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 0, isRequired: 0, isInstance: 0, numProtocolMethods: 0
-    i: 0, isRequired: 0, isInstance: 1, numProtocolMethods: 0
-    i: 0, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryClassMethod
-    i: 0, j: 0, methods[j].types: v16 at 0:8
-    i: 0, isRequired: 1, isInstance: 1, numProtocolMethods: 1
-    i: 0, j: 0, sel_getName(methods[j].name): categoryInstanceMethod
-    i: 0, j: 0, methods[j].types: v16 at 0:8
-    i: 0, numProperties: 0
-    i: 0, numSubProtocols: 0
-    i: 1, protocol_getName(protocol): P
-    i: 1, objc_getProtocol(protocol_getName(protocol))==protocol: 1
-    i: 1, isRequired: 0, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, isRequired: 0, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): optionalProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, j: 1, sel_getName(methods[j].name): optionalProtocolProperty
-    i: 1, j: 1, methods[j].types: i16 at 0:8
-    i: 1, j: 2, sel_getName(methods[j].name): setOptionalProtocolProperty:
-    i: 1, j: 2, methods[j].types: v20 at 0:8i16
-    i: 1, isRequired: 1, isInstance: 0, numProtocolMethods: 1
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolClassMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, isRequired: 1, isInstance: 1, numProtocolMethods: 3
-    i: 1, j: 0, sel_getName(methods[j].name): requiredProtocolInstanceMethod
-    i: 1, j: 0, methods[j].types: v16 at 0:8
-    i: 1, j: 1, sel_getName(methods[j].name): requiredProtocolProperty
-    i: 1, j: 1, methods[j].types: i16 at 0:8
-    i: 1, j: 2, sel_getName(methods[j].name): setRequiredProtocolProperty:
-    i: 1, j: 2, methods[j].types: v20 at 0:8i16
-    i: 1, numProperties: 2
-      i: 1, j: 0, property_getName(property): optionalProtocolProperty
-      i: 1, j: 0, property_getAttributes(property): Ti
-      i: 1, j: 0, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 0, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-      i: 1, j: 1, property_getName(property): requiredProtocolProperty
-      i: 1, j: 1, property_getAttributes(property): Ti
-      i: 1, j: 1, isRequired: 0, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 0, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 0, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 0
-      i: 1, j: 1, isRequired: 1, isInstance: 1, protocol_getProperty(protocol, property_getName(property), isRequired, isInstance) == property: 1
-    i: 1, numSubProtocols: 1
-      i: 1, j: 0, protocol_getName(protocol): P
-  (int) class_getInstanceSize(c): 40
-  class_getIvarLayout(c): (null)
-  class_getSuperclass(c) != 0: 1
-    c != 0: 1
-    class_getName(c): NSObject
-    object_getClassName(c): NSObject
-    objc_getClass(class_getName(c)) == c: 0
-    class_conformsToProtocol(c, @protocol(P)): 0
-    numIvars: 0
-    numMethods: 85
-    numProperties: 0
-    numProtocols: 1
-    (int) class_getInstanceSize(c): 40
-    class_getIvarLayout(c): (null)
-    class_getSuperclass(c) != 0: 1
-      c != 0: 1
-      class_getName(c): NSObject
-      object_getClassName(c): NSObject
-      objc_getClass(class_getName(c)) == c: 1
-      class_conformsToProtocol(c, @protocol(P)): 0
-      numIvars: 1
-      numMethods: 216
-      numProperties: 0
-      numProtocols: 1
-      (int) class_getInstanceSize(c): 8
-      class_getIvarLayout(c): (null)
-      class_getSuperclass(c) != 0: 0
-      class_getVersion(c): 0
-      class_getWeakIvarLayout(c): (null)
-    class_getVersion(c): 7
-    class_getWeakIvarLayout(c): (null)
-  class_getVersion(c): 7
-  class_getWeakIvarLayout(c): (null)
-numObjCProtocols: 21
-numClasses: 528
-exit 0





More information about the llvm-commits mailing list