private void updateParentsAlloc ( int id ) { while ( id > 1 ) { int parentId = id >>> 1 ; byte val1 = value ( id ) ; byte val2 = value ( id ^ 1 ) ; byte val = val1 < val2 ? val1 : val2 ; setValue ( parentId , val ) ; id = parentId ; } }
Update method used by allocate This is triggered only when a successor is allocated and all its predecessors need to update their state The minimal depth at which subtree rooted at id has some free space