Skip to content

Commit f6bdf9b

Browse files
committed
Revert TLSF asan
1 parent 8bc592b commit f6bdf9b

File tree

1 file changed

+1
-79
lines changed

1 file changed

+1
-79
lines changed

core/mem/tlsf/tlsf_internal.odin

Lines changed: 1 addition & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
package mem_tlsf
1111

1212
import "base:intrinsics"
13-
import "base:sanitizer"
1413
import "base:runtime"
1514

1615
// log2 of number of linear subdivisions of block sizes.
@@ -156,8 +155,6 @@ pool_add :: proc(control: ^Allocator, pool: []u8) -> (err: Error) {
156155
block_set_used(next)
157156
block_set_prev_free(next)
158157

159-
sanitizer.address_poison(pool)
160-
161158
return
162159
}
163160

@@ -379,74 +376,47 @@ resize_non_zeroed :: proc(control: ^Allocator, ptr: rawptr, old_size, new_size:
379376

380377
@(private, require_results)
381378
block_size :: proc "contextless" (block: ^Block_Header) -> (size: uint) {
382-
sanitizer.address_unpoison(block)
383-
defer sanitizer.address_poison(block)
384-
385379
return block.size &~ (BLOCK_HEADER_FREE | BLOCK_HEADER_PREV_FREE)
386380
}
387381

388382
@(private)
389383
block_set_size :: proc "contextless" (block: ^Block_Header, size: uint) {
390-
sanitizer.address_unpoison(block)
391-
defer sanitizer.address_poison(block)
392-
393384
old_size := block.size
394385
block.size = size | (old_size & (BLOCK_HEADER_FREE | BLOCK_HEADER_PREV_FREE))
395386
}
396387

397388
@(private, require_results)
398389
block_is_last :: proc "contextless" (block: ^Block_Header) -> (is_last: bool) {
399-
sanitizer.address_unpoison(block)
400-
defer sanitizer.address_poison(block)
401-
402390
return block_size(block) == 0
403391
}
404392

405393
@(private, require_results)
406394
block_is_free :: proc "contextless" (block: ^Block_Header) -> (is_free: bool) {
407-
sanitizer.address_unpoison(block)
408-
defer sanitizer.address_poison(block)
409-
410395
return (block.size & BLOCK_HEADER_FREE) == BLOCK_HEADER_FREE
411396
}
412397

413398
@(private)
414399
block_set_free :: proc "contextless" (block: ^Block_Header) {
415-
sanitizer.address_unpoison(block)
416-
defer sanitizer.address_poison(block)
417-
418400
block.size |= BLOCK_HEADER_FREE
419401
}
420402

421403
@(private)
422404
block_set_used :: proc "contextless" (block: ^Block_Header) {
423-
sanitizer.address_unpoison(block)
424-
defer sanitizer.address_poison(block)
425-
426405
block.size &~= BLOCK_HEADER_FREE
427406
}
428407

429408
@(private, require_results)
430409
block_is_prev_free :: proc "contextless" (block: ^Block_Header) -> (is_prev_free: bool) {
431-
sanitizer.address_unpoison(block)
432-
defer sanitizer.address_poison(block)
433-
434410
return (block.size & BLOCK_HEADER_PREV_FREE) == BLOCK_HEADER_PREV_FREE
435411
}
436412

437413
@(private)
438414
block_set_prev_free :: proc "contextless" (block: ^Block_Header) {
439-
sanitizer.address_unpoison(block)
440-
defer sanitizer.address_poison(block)
441-
442415
block.size |= BLOCK_HEADER_PREV_FREE
443416
}
444417

445418
@(private)
446419
block_set_prev_used :: proc "contextless" (block: ^Block_Header) {
447-
sanitizer.address_unpoison(block)
448-
defer sanitizer.address_poison(block)
449-
450420
block.size &~= BLOCK_HEADER_PREV_FREE
451421
}
452422

@@ -475,41 +445,25 @@ offset_to_block_backwards :: proc(ptr: rawptr, size: uint) -> (block: ^Block_Hea
475445
@(private, require_results)
476446
block_prev :: proc(block: ^Block_Header) -> (prev: ^Block_Header) {
477447
assert(block_is_prev_free(block), "previous block must be free")
478-
479-
sanitizer.address_unpoison(block)
480-
defer sanitizer.address_poison(block)
481-
482448
return block.prev_phys_block
483449
}
484450

485451
// Return location of next existing block.
486452
@(private, require_results)
487453
block_next :: proc(block: ^Block_Header) -> (next: ^Block_Header) {
488-
sanitizer.address_unpoison(block)
489-
defer sanitizer.address_poison(block)
490-
491454
return offset_to_block(block_to_ptr(block), block_size(block) - BLOCK_HEADER_OVERHEAD)
492455
}
493456

494457
// Link a new block with its physical neighbor, return the neighbor.
495458
@(private, require_results)
496459
block_link_next :: proc(block: ^Block_Header) -> (next: ^Block_Header) {
497-
sanitizer.address_unpoison(block)
498-
defer sanitizer.address_poison(block)
499-
500460
next = block_next(block)
501-
sanitizer.address_unpoison(next)
502-
defer sanitizer.address_poison(next)
503-
504461
next.prev_phys_block = block
505462
return
506463
}
507464

508465
@(private)
509466
block_mark_as_free :: proc(block: ^Block_Header) {
510-
sanitizer.address_unpoison(block)
511-
defer sanitizer.address_poison(block)
512-
513467
// Link the block to the next block, first.
514468
next := block_link_next(block)
515469
block_set_prev_free(next)
@@ -518,9 +472,6 @@ block_mark_as_free :: proc(block: ^Block_Header) {
518472

519473
@(private)
520474
block_mark_as_used :: proc(block: ^Block_Header) {
521-
sanitizer.address_unpoison(block)
522-
defer sanitizer.address_poison(block)
523-
524475
next := block_next(block)
525476
block_set_prev_used(next)
526477
block_set_used(block)
@@ -611,9 +562,6 @@ mapping_search :: proc(size: uint) -> (fl, sl: i32) {
611562

612563
@(private, require_results)
613564
search_suitable_block :: proc(control: ^Allocator, fli, sli: ^i32) -> (block: ^Block_Header) {
614-
sanitizer.address_unpoison(block)
615-
defer sanitizer.address_poison(block)
616-
617565
// First, search for a block in the list associated with the given fl/sl index.
618566
fl := fli^; sl := sli^
619567

@@ -641,9 +589,6 @@ search_suitable_block :: proc(control: ^Allocator, fli, sli: ^i32) -> (block: ^B
641589
// Remove a free block from the free list.
642590
@(private)
643591
remove_free_block :: proc(control: ^Allocator, block: ^Block_Header, fl: i32, sl: i32) {
644-
sanitizer.address_unpoison(block)
645-
defer sanitizer.address_poison(block)
646-
647592
prev := block.prev_free
648593
next := block.next_free
649594
assert(prev != nil, "prev_free can not be nil")
@@ -670,9 +615,6 @@ remove_free_block :: proc(control: ^Allocator, block: ^Block_Header, fl: i32, sl
670615
// Insert a free block into the free block list.
671616
@(private)
672617
insert_free_block :: proc(control: ^Allocator, block: ^Block_Header, fl: i32, sl: i32) {
673-
sanitizer.address_unpoison(block)
674-
defer sanitizer.address_poison(block)
675-
676618
current := control.blocks[fl][sl]
677619
assert(current != nil, "free lists cannot have a nil entry")
678620
assert(block != nil, "cannot insert a nil entry into the free list")
@@ -691,37 +633,25 @@ insert_free_block :: proc(control: ^Allocator, block: ^Block_Header, fl: i32, sl
691633
// Remove a given block from the free list.
692634
@(private)
693635
block_remove :: proc(control: ^Allocator, block: ^Block_Header) {
694-
sanitizer.address_unpoison(block)
695-
defer sanitizer.address_poison(block)
696-
697636
fl, sl := mapping_insert(block_size(block))
698637
remove_free_block(control, block, fl, sl)
699638
}
700639

701640
// Insert a given block into the free list.
702641
@(private)
703642
block_insert :: proc(control: ^Allocator, block: ^Block_Header) {
704-
sanitizer.address_unpoison(block)
705-
defer sanitizer.address_poison(block)
706-
707643
fl, sl := mapping_insert(block_size(block))
708644
insert_free_block(control, block, fl, sl)
709645
}
710646

711647
@(private, require_results)
712648
block_can_split :: proc(block: ^Block_Header, size: uint) -> (can_split: bool) {
713-
sanitizer.address_unpoison(block)
714-
defer sanitizer.address_poison(block)
715-
716649
return block_size(block) >= size_of(Block_Header) + size
717650
}
718651

719652
// Split a block into two, the second of which is free.
720653
@(private, require_results)
721654
block_split :: proc(block: ^Block_Header, size: uint) -> (remaining: ^Block_Header) {
722-
sanitizer.address_unpoison(block)
723-
defer sanitizer.address_poison(block)
724-
725655
// Calculate the amount of space left in the remaining block.
726656
remaining = offset_to_block(block_to_ptr(block), size - BLOCK_HEADER_OVERHEAD)
727657

@@ -744,10 +674,6 @@ block_split :: proc(block: ^Block_Header, size: uint) -> (remaining: ^Block_Head
744674
@(private, require_results)
745675
block_absorb :: proc(prev: ^Block_Header, block: ^Block_Header) -> (absorbed: ^Block_Header) {
746676
assert(!block_is_last(prev), "previous block can't be last")
747-
748-
sanitizer.address_unpoison(prev)
749-
defer sanitizer.address_poison(prev)
750-
751677
// Note: Leaves flags untouched.
752678
prev.size += block_size(block) + BLOCK_HEADER_OVERHEAD
753679
_ = block_link_next(prev)
@@ -786,9 +712,6 @@ block_merge_next :: proc(control: ^Allocator, block: ^Block_Header) -> (merged:
786712
// Trim any trailing block space off the end of a free block, return to pool.
787713
@(private)
788714
block_trim_free :: proc(control: ^Allocator, block: ^Block_Header, size: uint) {
789-
sanitizer.address_unpoison(block)
790-
defer sanitizer.address_poison(block)
791-
792715
assert(block_is_free(block), "block must be free")
793716
if (block_can_split(block, size)) {
794717
remaining_block := block_split(block, size)
@@ -858,7 +781,6 @@ block_prepare_used :: proc(control: ^Allocator, block: ^Block_Header, size: uint
858781
block_trim_free(control, block, size)
859782
block_mark_as_used(block)
860783
res = ([^]byte)(block_to_ptr(block))[:size]
861-
sanitizer.address_unpoison(res)
862784
}
863785
return
864-
}
786+
}

0 commit comments

Comments
 (0)