func (p *Process) ForEachPtr(x Object, fn func(int64, Object, int64) bool) {
	size := p.Size(x)
	for i := int64(0); i < size; i += p.proc.PtrSize() {
		a := core.Address(x).Add(i)
		if !p.isPtrFromHeap(a) {
			continue
		}
		ptr := p.proc.ReadPtr(a)
		y, off := p.FindObject(ptr)
		if y != 0 {
			if !fn(i, y, off) {
				return
			}
		}
	}
}
func (p *Process) ForEachPtr(x Object, fn func(int64, Object, int64) bool) {
	size := p.Size(x)
	for i := int64(0); i < size; i += p.proc.PtrSize() {
		a := core.Address(x).Add(i)
		if !p.isPtrFromHeap(a) {
			continue
		}
		ptr := p.proc.ReadPtr(a)
		y, off := p.FindObject(ptr)
		if y != 0 {
			if !fn(i, y, off) {
				return
			}
		}
	}
}
func ( p * Process ) ForEachPtr ( x Object , fn func ( int64 , Object , int64 ) bool ) { size := p . Size ( x ) for i := int64 ( 0 ) ; i < size ; i += p . proc . PtrSize ( ) { a := core . Address ( x ) . Add ( i ) if ! p . isPtrFromHeap ( a ) { continue } ptr := p . proc . ReadPtr ( a ) y , off := p . FindObject ( ptr ) if y != 0 { if ! fn ( i , y , off ) { return } } } }
// ForEachPtr calls fn for all heap pointers it finds in x.
// It calls fn with:
//   the offset of the pointer slot in x
//   the pointed-to object y
//   the offset in y where the pointer points.
// If fn returns false, ForEachPtr returns immediately.
// For an edge from an object to its finalizer, the first argument
// passed to fn will be -1. (TODO: implement)
ForEachPtr calls fn for all heap pointers it finds in x . It calls fn with : the offset of the pointer slot in x the pointed - to object y the offset in y where the pointer points . If fn returns false ForEachPtr returns immediately . For an edge from an object to its finalizer the first argument passed to fn will be - 1 . ( TODO : implement )