Differences From Artifact [c8cb26401f]:
- File
src/runtime/class.m
— part of check-in
[d4cae4c963]
at
2016-07-03 11:24:15
on branch trunk
— runtime: Add class_addMethod()
Also moves out some stuff to functions to be reusable by
class_addMethod(). (user: js, size: 19328) [annotate] [blame] [check-ins using]
To Artifact [9db3a46267]:
- File src/runtime/class.m — part of check-in [c71706db46] at 2016-07-05 19:31:14 on branch trunk — runtime/class.m: Add explicit size_t -> long cast (user: js, size: 19412) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 | Class objc_allocateClassPair(Class superclass, const char *name, size_t extra_bytes) { struct objc_class *cls, *metaclass; Class iter, rootclass = Nil; if ((cls = calloc(1, sizeof(*cls))) == NULL || (metaclass = calloc(1, sizeof(*cls))) == NULL) OBJC_ERROR("Not enough memory to allocate class pair for class " "%s!", name) cls->isa = metaclass; cls->superclass = superclass; cls->name = name; cls->info = OBJC_CLASS_INFO_CLASS; cls->instance_size = (superclass != Nil ? | > > > | | | 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 | Class objc_allocateClassPair(Class superclass, const char *name, size_t extra_bytes) { struct objc_class *cls, *metaclass; Class iter, rootclass = Nil; if (extra_bytes > LONG_MAX) OBJC_ERROR("extra_bytes out of range!") if ((cls = calloc(1, sizeof(*cls))) == NULL || (metaclass = calloc(1, sizeof(*cls))) == NULL) OBJC_ERROR("Not enough memory to allocate class pair for class " "%s!", name) cls->isa = metaclass; cls->superclass = superclass; cls->name = name; cls->info = OBJC_CLASS_INFO_CLASS; cls->instance_size = (superclass != Nil ? superclass->instance_size : 0) + (long)extra_bytes; for (iter = superclass; iter != Nil; iter = iter->superclass) rootclass = iter; metaclass->isa = (rootclass != Nil ? rootclass->isa : cls); metaclass->superclass = (superclass != Nil ? superclass->isa : Nil); metaclass->name = name; metaclass->info = OBJC_CLASS_INFO_CLASS; metaclass->instance_size = (superclass != Nil ? superclass->isa->instance_size : 0) + (long)extra_bytes; return cls; } void objc_registerClassPair(Class cls) { |
︙ | ︙ |