detect 386 darwin breakpoint line.
R=r
DELTA=22 (4 added, 0 deleted, 18 changed)
OCL=29929
CL=29944
EnableGC bool;
}
-func Alloc(uint64) *byte
+func Alloc(uintptr) *byte
func Free(*byte)
func GetStats() *Stats
func Lookup(*byte) (*byte, uintptr)
else
gcpercent = atoi(p);
}
- if(gcpercent < 0 || sizeof(void*) == 4) // TODO(rsc): broken on 32-bit right now
+ if(gcpercent < 0)
return;
semacquire(&gcsema);
b := malloc.Alloc(1<<uint(i));
malloc.Free(b);
}
- for i := uint64(0); i < 256; i++ {
+ for i := uintptr(0); i < 256; i++ {
b := malloc.Alloc(i<<12);
malloc.Free(b);
}
}
-func memset(b *byte, c byte, n uint64) {
+func memset(b *byte, c byte, n uintptr) {
np := uintptr(n);
for i := uintptr(0); i < np; i++ {
*(*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(b))+i)) = c;
func main() {
flag.Parse();
// prime();
- var blocks [1] struct { base *byte; siz uint64; };
+ var blocks [1] struct { base *byte; siz uintptr; };
for i := 0; i < 1<<12; i++ {
if i%(1<<10) == 0 && *chatty {
println(i);
// println("Free", blocks[b].siz, blocks[b].base);
malloc.Free(blocks[b].base);
blocks[b].base = nil;
- allocated -= blocks[b].siz;
+ allocated -= uint64(blocks[b].siz);
continue
}
- siz := uint64(rand.Int() >> (11 + rand.Uint32() % 20));
+ siz := uintptr(rand.Int() >> (11 + rand.Uint32() % 20));
base := malloc.Alloc(siz);
- // ptr := uint64(syscall.BytePtr(base))+uint64(siz/2);
+ // ptr := uintptr(syscall.BytePtr(base))+uintptr(siz/2);
// obj, size, ref, ok := allocator.find(ptr);
// if obj != base || *ref != 0 || !ok {
// panicln("find", siz, obj, ref, ok);
// }
blocks[b].base = base;
blocks[b].siz = siz;
- allocated += siz;
+ allocated += uint64(siz);
// println("Alloc", siz, base);
memset(base, 0xbb, siz);
bigger();
if i == 0 && *chatty {
println("First alloc:", j);
}
- b := malloc.Alloc(uint64(j));
+ if a := malloc.GetStats().Alloc; a != 0 {
+ panicln("no allocations but stats report", a, "bytes allocated");
+ }
+ b := malloc.Alloc(uintptr(j));
during := malloc.GetStats().Alloc;
malloc.Free(b);
if a := malloc.GetStats().Alloc; a != 0 {
- panicln("malloc wrong count", a, "after", j, "during", during);
+ panic("allocated ", j, ": wrong stats: during=", during, " after=", a, " (want 0)");
}
bigger();
}
}
n1 := stats.Alloc;
for i := 0; i < count; i++ {
- b[i] = malloc.Alloc(uint64(size));
+ b[i] = malloc.Alloc(uintptr(size));
base, n := malloc.Lookup(b[i]);
if base != b[i] || !OkAmount(uintptr(size), n) {
panicln("lookup failed: got", base, n, "for", b[i]);
if *reverse {
i = count - 1 - j;
}
- alloc := stats.Alloc;
+ alloc := uintptr(stats.Alloc);
base, n := malloc.Lookup(b[i]);
if base != b[i] || !OkAmount(uintptr(size), n) {
panicln("lookup failed: got", base, n, "for", b[i]);
}
malloc.Free(b[i]);
- if stats.Alloc != alloc - uint64(n) {
- panicln("free alloc got", stats.Alloc, "expected", alloc - uint64(n), "after free of", n);
+ if stats.Alloc != uint64(alloc - n) {
+ panicln("free alloc got", stats.Alloc, "expected", alloc - n, "after free of", n);
}
if malloc.GetStats().Sys > 1e9 {
panicln("too much memory allocated");
}
for j := 1; j <= 1<<22; j<<=1 {
n := len(b);
- max := uint64(1<<28);
+ max := uintptr(1<<28);
if !*longtest {
max = 1<<22;
}
- if uint64(j)*uint64(n) > max {
- n = int(max / uint64(j));
+ if uintptr(j)*uintptr(n) > max {
+ n = int(max / uintptr(j));
}
if n < 10 {
n = 10;
s/ PC=0x[0-9a-f]*/ PC=xxx/
s/^pc: 0x[0-9a-f]*/pc: xxx/
/^Trace\/breakpoint trap/d
+ /^Trace\/BPT trap/d
/RUNFILE/ s/line 1: *[0-9]*/line 1: PID/
/^\$RUNFILE: line 1: PID Trace\/breakpoint trap/d' > run.out