MCPcopy Index your code
hub / github.com/clojure/clojure / popTail

Method popTail

src/jvm/clojure/lang/PersistentVector.java:646–668  ·  view source on GitHub ↗
(int level, Node node)

Source from the content-addressed store, hash-verified

644}
645
646private Node popTail(int level, Node node){
647 int subidx = ((cnt-2) >>> level) & 0x01f;
648 if(level > 5)
649 {
650 Node newchild = popTail(level - 5, (Node) node.array[subidx]);
651 if(newchild == null && subidx == 0)
652 return null;
653 else
654 {
655 Node ret = new Node(root.edit, node.array.clone());
656 ret.array[subidx] = newchild;
657 return ret;
658 }
659 }
660 else if(subidx == 0)
661 return null;
662 else
663 {
664 Node ret = new Node(root.edit, node.array.clone());
665 ret.array[subidx] = null;
666 return ret;
667 }
668}
669
670static final class TransientVector extends AFn implements ITransientVector, ITransientAssociative2, Counted{
671 volatile int cnt;

Callers 1

popMethod · 0.95

Calls 1

cloneMethod · 0.80

Tested by

no test coverage detected