/** * Caller must have exclusively latched the tree root node instance and the lone child node. * * @param child must not be a leaf node */ final void rootDelete(Node child) throws IOException { // Allocate stuff early in case of out of memory, and while root is latched. Note that // stub is assigned a NodeUsageList. Because the stub isn't in the list, attempting to // update its position within it has no effect. Note too that the stub isn't placed // into the database node map. Node stub = new Node(mRoot.mUsageList); // Stub isn't in the node map, so use this pointer field to link the stubs together. stub.mNodeMapNext = mStubTail; mStubTail = stub; mRoot.rootDelete(this, child, stub); }
/** * Caller must have exclusively latched the tree root node instance and the lone child node. * * @param child must not be a leaf node */ final void rootDelete(Node child) throws IOException { // Allocate stuff early in case of out of memory, and while root is latched. Note that // stub is assigned a NodeUsageList. Because the stub isn't in the list, attempting to // update its position within it has no effect. Note too that the stub isn't placed // into the database node map. Node stub = new Node(mRoot.mUsageList); // Stub isn't in the node map, so use this pointer field to link the stubs together. stub.mNodeMapNext = mStubTail; mStubTail = stub; mRoot.rootDelete(this, child, stub); }
/** * Caller must have exclusively latched the tree root node instance and the lone child node. * * @param child must not be a leaf node */ final void rootDelete(Node child) throws IOException { // Allocate stuff early in case of out of memory, and while root is latched. Note that // stub is assigned a NodeContext. Because the stub isn't in the context usage list, // attempting to update its position within it has no effect. Note too that the stub // isn't placed into the database node map. Node stub = new Node(mRoot.mContext); // Stub isn't in the node map, so use this pointer field to link the stubs together. stub.mNodeMapNext = mStubTail; mStubTail = stub; mRoot.rootDelete(this, child, stub); }
private static Node createClosedNode() { Node closed = new Node(null, p_closedTreePage()); closed.mId = CLOSED_ID; closed.mCachedState = CACHED_CLEAN; closed.readFields(); return closed; }
private static Node createClosedNode() { Node closed = new Node(null, p_closedTreePage()); closed.mId = CLOSED_ID; closed.mCachedState = CACHED_CLEAN; closed.readFields(); return closed; }
private static Node createClosedNode() { Node closed = new Node(null, p_closedTreePage()); closed.mId = CLOSED_ID; closed.mCachedState = CACHED_CLEAN; closed.readFields(); return closed; }
/*P*/ // ] Node node = new Node(this, page); node.acquireExclusive(); mSize++;
/*P*/ // ] Node node = new Node(this, page); node.acquireExclusive(); mSize++;
/*P*/ // ] Node node = new Node(this, page); node.acquireExclusive(); mSize++;
Node cloneNode() { Node newNode = new Node(mUsageList, mPage); newNode.mId = mId; newNode.mCachedState = mCachedState; /*P*/ // [ newNode.type(type()); newNode.garbage(garbage()); newNode.leftSegTail(leftSegTail()); newNode.rightSegTail(rightSegTail()); newNode.searchVecStart(searchVecStart()); newNode.searchVecEnd(searchVecEnd()); /*P*/ // ] return newNode; }
Node cloneNode() { Node newNode = new Node(mUsageList, mPage); newNode.mId = mId; newNode.mCachedState = mCachedState; /*P*/ // [ newNode.type(type()); newNode.garbage(garbage()); newNode.leftSegTail(leftSegTail()); newNode.rightSegTail(rightSegTail()); newNode.searchVecStart(searchVecStart()); newNode.searchVecEnd(searchVecEnd()); /*P*/ // ] return newNode; }
Node cloneNode() { Node newNode = new Node(mContext, mPage); newNode.mId = mId; newNode.mCachedState = mCachedState; /*P*/ // [ newNode.type(type()); newNode.garbage(garbage()); newNode.leftSegTail(leftSegTail()); newNode.rightSegTail(rightSegTail()); newNode.searchVecStart(searchVecStart()); newNode.searchVecEnd(searchVecEnd()); /*P*/ // ] return newNode; }
lock = new Node(childId);
lock = new Node(childId);
lock = new Node(childId);