MCPcopy Index your code
hub / github.com/golang/mobile / grow

Method grow

bind/java/Seq.java:357–390  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

355 }
356
357 private void grow() {
358 // Compact and (if necessary) grow backing store.
359 int[] newKeys;
360 Ref[] newObjs;
361 int len = 2*roundPow2(live);
362 if (len > keys.length) {
363 newKeys = new int[keys.length*2];
364 newObjs = new Ref[objs.length*2];
365 } else {
366 newKeys = keys;
367 newObjs = objs;
368 }
369
370 int j = 0;
371 for (int i = 0; i < keys.length; i++) {
372 if (objs[i] != null) {
373 newKeys[j] = keys[i];
374 newObjs[j] = objs[i];
375 j++;
376 }
377 }
378 for (int i = j; i < newKeys.length; i++) {
379 newKeys[i] = 0;
380 newObjs[i] = null;
381 }
382
383 keys = newKeys;
384 objs = newObjs;
385 next = j;
386
387 if (live != next) {
388 throw new RuntimeException("bad state: live="+live+", next="+next);
389 }
390 }
391
392 private static int roundPow2(int x) {
393 int p = 1;

Callers 1

putMethod · 0.95

Calls 1

roundPow2Method · 0.95

Tested by

no test coverage detected