Commit 0a3c7cbe authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent aac3d27e
...@@ -27,7 +27,6 @@ var caller = func(s string, va ...interface{}) { ...@@ -27,7 +27,6 @@ var caller = func(s string, va ...interface{}) {
} }
func dbg(s string, va ...interface{}) { func dbg(s string, va ...interface{}) {
return
if s == "" { if s == "" {
s = strings.Repeat("%v ", len(va)) s = strings.Repeat("%v ", len(va))
} }
......
...@@ -673,13 +673,13 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) { ...@@ -673,13 +673,13 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) {
switch { switch {
case ok: case ok:
dbg("ok'") //dbg("ok'")
dd.d[i].v = v dd.d[i].v = v
t.hitDi = i t.hitDi = i
return return
case dd.c < 2*kd: case dd.c < 2*kd:
dbg("insert'") //dbg("insert'")
t.insert(dd, i, k, v) t.insert(dd, i, k, v)
return return
...@@ -690,7 +690,7 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) { ...@@ -690,7 +690,7 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) {
//break //break
p, pi := t.hitP, t.hitPi p, pi := t.hitP, t.hitPi
if p == nil || p.c <= 2*kx { // XXX < vs <= if p == nil || p.c <= 2*kx { // XXX < vs <=
dbg("overflow'") //dbg("overflow'")
t.overflow(p, dd, pi, i, k, v) t.overflow(p, dd, pi, i, k, v)
return return
} }
...@@ -702,7 +702,7 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) { ...@@ -702,7 +702,7 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) {
var p *x var p *x
q := t.r q := t.r
if q == nil { if q == nil {
dbg("empty") //dbg("empty")
z := t.insert(btDPool.Get().(*d), 0, k, v) // XXX update hit z := t.insert(btDPool.Get().(*d), 0, k, v) // XXX update hit
t.r, t.first, t.last = z, z, z t.r, t.first, t.last = z, z, z
return return
...@@ -719,21 +719,21 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) { ...@@ -719,21 +719,21 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) {
if x.c > 2*kx { if x.c > 2*kx {
//x, i = t.splitX(p, x, pi, i) //x, i = t.splitX(p, x, pi, i)
dbg("splitX") //dbg("splitX")
x, i, p, pi = t.splitX(p, x, pi, i) x, i, p, pi = t.splitX(p, x, pi, i)
// NOTE splitX changes p which means hit // NOTE splitX changes p which means hit
// Kmin/Kmax/PKmax have to be recomputed // Kmin/Kmax/PKmax have to be recomputed
if pi >= 0 && pi < p.c { if pi >= 0 && pi < p.c {
hitPKmax.set(p.x[pi].k) // XXX wrong vs oo and not oo above hitPKmax.set(p.x[pi].k) // XXX wrong vs oo and not oo above
dbg("hitPKmax X: %v", hitPKmax) //dbg("hitPKmax X: %v", hitPKmax)
hitKmax = hitPKmax hitKmax = hitPKmax
dbg("hitKmax X: %v", hitKmax) //dbg("hitKmax X: %v", hitKmax)
} }
if pi > 0 { if pi > 0 {
hitKmin.set(p.x[pi-1].k) // XXX also recheck vs above hitKmin.set(p.x[pi-1].k) // XXX also recheck vs above
dbg("hitKmin X: %v", hitKmin) //dbg("hitKmin X: %v", hitKmin)
} }
} else { } else {
// p unchanged // p unchanged
...@@ -751,12 +751,12 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) { ...@@ -751,12 +751,12 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) {
if pi > 0 { // XXX also check < p.c ? if pi > 0 { // XXX also check < p.c ?
hitKmin.set(p.x[pi-1].k) hitKmin.set(p.x[pi-1].k)
dbg("hitKmin: %v", hitKmin) //dbg("hitKmin: %v", hitKmin)
} }
if pi < p.c { if pi < p.c {
hitKmax.set(p.x[pi].k) hitKmax.set(p.x[pi].k)
dbg("hitKmax: %v", hitKmax) //dbg("hitKmax: %v", hitKmax)
} }
...@@ -770,16 +770,16 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) { ...@@ -770,16 +770,16 @@ func (t *Tree) Set(k interface{} /*K*/, v interface{} /*V*/) {
switch { switch {
case ok: case ok:
dbg("ok") //dbg("ok")
x.d[i].v = v x.d[i].v = v
t.hitD, t.hitDi = x, i t.hitD, t.hitDi = x, i
case x.c < 2*kd: case x.c < 2*kd:
dbg("insert") //dbg("insert")
t.insert(x, i, k, v) t.insert(x, i, k, v)
default: default:
dbg("overflow") //dbg("overflow")
// NOTE overflow will correct hit Kmin, Kmax, P and Pi as needed // NOTE overflow will correct hit Kmin, Kmax, P and Pi as needed
t.overflow(p, x, pi, i, k, v) t.overflow(p, x, pi, i, k, v)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment