Lines Matching defs:src

195 static void _Block_memmove_default(void *dst, void *src, unsigned long size) {
196 memmove(dst, src, (size_t)size);
199 static void _Block_memmove_gc_broken(void *dest, void *src, unsigned long size) {
201 void **srcp = (void **)src;
221 static void (*_Block_memmove)(void *dest, void *src, unsigned long size) = _Block_memmove_default;
371 struct Block_byref *src = (struct Block_byref *)arg;
373 //printf("_Block_byref_assign_copy called, byref destp %p, src %p, flags %x\n", destp, src, flags);
374 //printf("src dump: %s\n", _Block_byref_dump(src));
375 if (src->forwarding->flags & BLOCK_IS_GC) {
378 else if ((src->forwarding->flags & BLOCK_REFCOUNT_MASK) == 0) {
380 // src points to stack
383 struct Block_byref *copy = (struct Block_byref *)_Block_allocator(src->size, false, isWeak);
384 copy->flags = src->flags | _Byref_flag_initial_value; // non-GC one for caller, one for stack
386 src->forwarding = copy; // patch stack to point to heap copy
387 copy->size = src->size;
391 if (src->flags & BLOCK_HAS_COPY_DISPOSE) {
394 copy->byref_keep = src->byref_keep;
395 copy->byref_destroy = src->byref_destroy;
396 (*src->byref_keep)(copy, src);
402 (void *)&src->byref_keep,
403 src->size - sizeof(struct Block_byref_header));
407 else if ((src->forwarding->flags & BLOCK_NEEDS_FREE) == BLOCK_NEEDS_FREE) {
408 latching_incr_int(&src->forwarding->flags);
411 _Block_assign(src->forwarding, (void **)destp);
688 const char *_Block_byref_dump(struct Block_byref *src) {
691 cp += sprintf(cp, "byref data block %p contents:\n", (void *)src);
692 cp += sprintf(cp, " forwarding: %p\n", (void *)src->forwarding);
693 cp += sprintf(cp, " flags: 0x%x\n", src->flags);
694 cp += sprintf(cp, " size: %d\n", src->size);
695 if (src->flags & BLOCK_HAS_COPY_DISPOSE) {
696 cp += sprintf(cp, " copy helper: %p\n", (void *)(uintptr_t)src->byref_keep);
697 cp += sprintf(cp, " dispose helper: %p\n", (void *)(uintptr_t)src->byref_destroy);