Home | History | Annotate | Download | only in BlocksRuntime

Lines Matching refs:flags

285 static void *_Block_copy_internal(const void *arg, const int flags) {
287 const bool wantsOne = (WANTS_ONE & flags) == WANTS_ONE;
289 //printf("_Block_copy_internal(%p, %x)\n", arg, flags);
295 if (aBlock->flags & BLOCK_NEEDS_FREE) {
297 latching_incr_int(&aBlock->flags);
300 else if (aBlock->flags & BLOCK_IS_GC) {
302 if (wantsOne && ((latching_incr_int(&aBlock->flags) & BLOCK_REFCOUNT_MASK) == 1)) {
308 else if (aBlock->flags & BLOCK_IS_GLOBAL) {
318 result->flags &= ~(BLOCK_REFCOUNT_MASK); // XXX not needed
319 result->flags |= BLOCK_NEEDS_FREE | 1;
321 if (result->flags & BLOCK_HAS_COPY_DISPOSE) {
330 unsigned long int flags = aBlock->flags;
331 bool hasCTOR = (flags & BLOCK_HAS_CTOR) != 0;
337 flags &= ~(BLOCK_NEEDS_FREE|BLOCK_REFCOUNT_MASK); // XXX not needed
339 flags |= BLOCK_IS_GC | 1;
341 flags |= BLOCK_IS_GC;
342 result->flags = flags;
343 if (flags & BLOCK_HAS_COPY_DISPOSE) {
368 static void _Block_byref_assign_copy(void *dest, const void *arg, const int flags) {
372 //printf("_Block_byref_assign_copy called, byref destp %p, src %p, flags %x\n", destp, src, flags);
374 if (src->forwarding->flags & BLOCK_IS_GC) {
377 else if ((src->forwarding->flags & BLOCK_REFCOUNT_MASK) == 0) {
380 bool isWeak = ((flags & (BLOCK_FIELD_IS_BYREF|BLOCK_FIELD_IS_WEAK)) == (BLOCK_FIELD_IS_BYREF|BLOCK_FIELD_IS_WEAK));
383 copy->flags = src->flags | _Byref_flag_initial_value; // non-GC one for caller, one for stack
390 if (src->flags & BLOCK_HAS_COPY_DISPOSE) {
406 else if ((src->forwarding->flags & BLOCK_NEEDS_FREE) == BLOCK_NEEDS_FREE) {
407 latching_incr_int(&src->forwarding->flags);
421 //printf("_Block_byref_release %p called, flags are %x\n", shared_struct, shared_struct->flags);
424 if ((shared_struct->flags & BLOCK_NEEDS_FREE) == 0) {
427 refcount = shared_struct->flags & BLOCK_REFCOUNT_MASK;
431 else if ((latching_decr_int(&shared_struct->flags) & BLOCK_REFCOUNT_MASK) == 0) {
433 if (shared_struct->flags & BLOCK_HAS_COPY_DISPOSE) {
463 newCount = latching_decr_int(&aBlock->flags) & BLOCK_REFCOUNT_MASK;
466 if (aBlock->flags & BLOCK_IS_GC) {
472 else if (aBlock->flags & BLOCK_NEEDS_FREE) {
473 if (aBlock->flags & BLOCK_HAS_COPY_DISPOSE)(*aBlock->descriptor->dispose)(aBlock);
476 else if (aBlock->flags & BLOCK_IS_GLOBAL) {
491 if (aBlock->flags & BLOCK_IS_GC) {
536 The flags parameter of _Block_object_assign and _Block_object_dispose is set to
560 void _Block_object_assign(void *destAddr, const void *object, const int flags) {
561 //printf("_Block_object_assign(*%p, %p, %x)\n", destAddr, object, flags);
562 if ((flags & BLOCK_BYREF_CALLER) == BLOCK_BYREF_CALLER) {
563 if ((flags & BLOCK_FIELD_IS_WEAK) == BLOCK_FIELD_IS_WEAK) {
571 else if ((flags & BLOCK_FIELD_IS_BYREF) == BLOCK_FIELD_IS_BYREF) {
573 // flags will indicate if it holds a __weak reference and needs a special isa
574 _Block_byref_assign_copy(destAddr, object, flags);
577 else if ((flags & BLOCK_FIELD_IS_BLOCK) == BLOCK_FIELD_IS_BLOCK) {
579 _Block_assign(_Block_copy_internal(object, flags), destAddr);
582 else if ((flags & BLOCK_FIELD_IS_OBJECT) == BLOCK_FIELD_IS_OBJECT) {
593 void _Block_object_dispose(const void *object, const int flags) {
594 //printf("_Block_object_dispose(%p, %x)\n", object, flags);
595 if (flags & BLOCK_FIELD_IS_BYREF) {
599 else if ((flags & (BLOCK_FIELD_IS_BLOCK|BLOCK_BYREF_CALLER)) == BLOCK_FIELD_IS_BLOCK) {
604 else if ((flags & (BLOCK_FIELD_IS_WEAK|BLOCK_FIELD_IS_BLOCK|BLOCK_BYREF_CALLER)) == BLOCK_FIELD_IS_OBJECT) {
628 if (! (closure->flags & BLOCK_HAS_DESCRIPTOR)) {
654 cp += sprintf(cp, "flags:");
655 if (closure->flags & BLOCK_HAS_DESCRIPTOR) {
658 if (closure->flags & BLOCK_NEEDS_FREE) {
661 if (closure->flags & BLOCK_IS_GC) {
664 if (closure->flags & BLOCK_HAS_COPY_DISPOSE) {
667 if (closure->flags & BLOCK_HAS_CTOR) {
670 cp += sprintf(cp, "\nrefcount: %u\n", closure->flags & BLOCK_REFCOUNT_MASK);
678 if (closure->flags & BLOCK_HAS_COPY_DISPOSE) {
692 cp += sprintf(cp, " flags: 0x%x\n", src->flags);
694 if (src->flags & BLOCK_HAS_COPY_DISPOSE) {