/** * Rebind cursor frames affected by split to correct node and * position. Caller must hold exclusive latch. * * @return latched sibling */ private _Node rebindSplitFrames(_Split split) { final _Node sibling = split.latchSiblingEx(); try { for (_CursorFrame frame = mLastCursorFrame; frame != null; ) { // Capture previous frame from linked list before changing the links. _CursorFrame prev = frame.mPrevCousin; split.rebindFrame(frame, sibling); frame = prev; } return sibling; } catch (Throwable e) { sibling.releaseExclusive(); throw e; } }
/** * Rebind cursor frames affected by split to correct node and * position. Caller must hold exclusive latch. * * @return latched sibling */ private _Node rebindSplitFrames(_Split split) { final _Node sibling = split.latchSiblingEx(); try { for (_CursorFrame frame = mLastCursorFrame; frame != null; ) { // Capture previous frame from linked list before changing the links. _CursorFrame prev = frame.mPrevCousin; split.rebindFrame(frame, sibling); frame = prev; } return sibling; } catch (Throwable e) { sibling.releaseExclusive(); throw e; } }
/** * Rebind cursor frames affected by split to correct node and * position. Caller must hold exclusive latch. * * @return latched sibling */ private _Node rebindSplitFrames(_Split split) { final _Node sibling = split.latchSiblingEx(); try { for (_CursorFrame frame = mLastCursorFrame; frame != null; ) { // Capture previous frame from linked list before changing the links. _CursorFrame prev = frame.mPrevCousin; split.rebindFrame(frame, sibling); frame = prev; } return sibling; } catch (Throwable e) { sibling.releaseExclusive(); throw e; } }
_Node sibling; try { sibling = split.latchSiblingEx(); } catch (Throwable e) { _CursorFrame.popAll(this);
_Node sibling; try { sibling = split.latchSiblingEx(); } catch (Throwable e) { node.releaseExclusive();
_Node sibling; try { sibling = split.latchSiblingEx(); } catch (Throwable e) { _CursorFrame.popAll(frame);