inode_assoc method
dynamic
inode_assoc(
- int shift$3,
- int h$3,
- dynamic k$4,
- dynamic v$2,
)
Implementation
dc.dynamic inode_assoc(dc.int shift$3, dc.int h$3, dc.dynamic k$4, dc.dynamic v$2, ){
if((shift$3<32)){
final dc.int n$5=((h$3>>(31&shift$3))&31);
final dc.int bit$3=(4294967295&(1<<(31&n$5)));
final dc.int mask$3=(bit$3-1);
final dc.int idx$3=lcoc_core.u32x2_bit_count((mask$3&bitmap_hi), (mask$3&bitmap_lo), );
final dc.int hi$3=(bitmap_hi&bit$3);
final dc.int lo$3=(bitmap_lo&bit$3);
if((0==(hi$3|lo$3))){
final dc.int size$3=(2+lcoc_core.u32x2_bit_count(bitmap_hi, bitmap_lo, ));
final dc.List<dc.dynamic> new_arr$4=(dc.List<dc.dynamic>.filled(size$3, v$2, ));
final dc.int n$8241_$AUTO_$3=idx$3;
dc.int i$7=0;
do {
if((i$7<n$8241_$AUTO_$3)){
final dc.dynamic v$8083_$AUTO_$9=(arr[i$7]);
new_arr$4[i$7]=v$8083_$AUTO_$9;
i$7=(1+i$7);
continue;
}
break;
} while(true);
final dc.dynamic v$8083_$AUTO_$10=k$4;
new_arr$4[idx$3]=v$8083_$AUTO_$10;
dc.int i$8=(2+idx$3);
dc.int j$3=idx$3;
do {
if((i$8<size$3)){
final dc.dynamic v$8083_$AUTO_$11=(arr[j$3]);
new_arr$4[i$8]=v$8083_$AUTO_$11;
i$8=(1+i$8);
j$3=(1+j$3);
continue;
}
break;
} while(true);
return lcoc_core.BitmapNode((1+cnt), (bitmap_hi^bit$3), (bitmap_lo^bit$3), new_arr$4, );
}
if((0==(hi$3&lo$3))){
final lcoc_core.BitmapNode child$2=((arr[idx$3]) as lcoc_core.BitmapNode);
final lcoc_core.BitmapNode new_child$2=((child$2.inode_assoc((shift$3+5), h$3, k$4, v$2, )) as lcoc_core.BitmapNode);
if(dc.identical((child$2 as dc.Object?), (new_child$2 as dc.Object?), )){
return this;
}
final dc.int arg$4=(cnt+(new_child$2.cnt-child$2.cnt));
final dc.int arg$3=(bitmap_hi^bit$3);
final dc.int arg$2=(bitmap_lo^bit$3);
final dc.List<dc.dynamic> G$8914_$1=(dc.List.from(this.arr, growable: false, ));
final lcoc_core.BitmapNode v$8083_$AUTO_$12=new_child$2;
G$8914_$1[idx$3]=v$8083_$AUTO_$12;
return lcoc_core.BitmapNode(arg$4, arg$3, arg$2, G$8914_$1, );
}
final dc.dynamic k$PRIME_$2=(arr[idx$3]);
final dc.dynamic v$PRIME_$1=(arr[(1+idx$3)]);
late final dc.bool $if_$3;
if((lcoc_core.$EQ_.$_invoke$2(k$PRIME_$2, k$4, ))){
$if_$3=false;
}else{
$if_$3=true;
}
if($if_$3){
final dc.int size$4=(lcoc_core.u32x2_bit_count(bitmap_hi, bitmap_lo, )-1);
final dc.int shift$PRIME_$1=(5+shift$3);
final dc.dynamic o7832$2=k$PRIME_$2;
late final dc.int cast$1;
if((o7832$2 is lcoc_core.IHash$iface)){
cast$1=(((o7832$2 as lcoc_core.IHash$iface).$_hash$0()) as dc.int);
}else{
cast$1=(((lcoc_core.IHash.extensions(o7832$2, ) as lcoc_core.IHash$ext).$_hash$0(o7832$2, )) as dc.int);
}
final dc.int $1=(cast$1>>(31&shift$PRIME_$1));
final dc.int n$PRIME_$1=($1&31);
final dc.int bit$PRIME_$1=(4294967295&(1<<(31&n$PRIME_$1)));
final dc.List<dc.dynamic> fl$1=(dc.List<dc.dynamic>.filled(4, k$PRIME_$2, ));
fl$1[1]=v$PRIME_$1;
fl$1[2]=null;
fl$1[3]=null;
final dc.dynamic new_node$1=(lcoc_core.BitmapNode(1, bit$PRIME_$1, bit$PRIME_$1, fl$1, ).inode_assoc_transient(shift$PRIME_$1, h$3, k$4, v$2, ));
final dc.List<dc.dynamic> new_arr$5=(dc.List<dc.dynamic>.filled(size$4, new_node$1, ));
final dc.int n$8241_$AUTO_$4=idx$3;
dc.int i$9=0;
do {
if((i$9<n$8241_$AUTO_$4)){
final dc.dynamic v$8083_$AUTO_$13=(arr[i$9]);
new_arr$5[i$9]=v$8083_$AUTO_$13;
i$9=(1+i$9);
continue;
}
break;
} while(true);
dc.int i$10=(1+idx$3);
dc.int j$4=(1+i$10);
do {
if((i$10<size$4)){
final dc.dynamic v$8083_$AUTO_$14=(arr[j$4]);
new_arr$5[i$10]=v$8083_$AUTO_$14;
i$10=(1+i$10);
j$4=(1+j$4);
continue;
}
break;
} while(true);
return lcoc_core.BitmapNode((1+cnt), bitmap_hi, (bitmap_lo^bit$3), new_arr$5, );
}
if(dc.identical(v$2, v$PRIME_$1, )){
return this;
}
final dc.int arg$6=(bitmap_hi&bitmap_lo);
final dc.int arg$5=(bitmap_hi|bitmap_lo);
final dc.List<dc.dynamic> G$8915_$1=(dc.List.from(arr, growable: false, ));
final dc.dynamic v$8083_$AUTO_$15=v$2;
G$8915_$1[(1+idx$3)]=v$8083_$AUTO_$15;
return lcoc_core.BitmapNode(cnt, arg$6, arg$5, G$8915_$1, );
}
final dc.int n$6=(2*cnt);
dc.int i$11=0;
do {
if((i$11==n$6)){
final dc.int arg$7=(1+cnt);
final dc.List G$8916_$1=lcoc_core.aresize(arr, n$6, (2+n$6), v$2, );
final dc.dynamic v$8083_$AUTO_$16=k$4;
G$8916_$1[n$6]=v$8083_$AUTO_$16;
return lcoc_core.BitmapNode(arg$7, 0, 0, G$8916_$1, );
}
if((lcoc_core.$EQ_.$_invoke$2((arr[i$11]), k$4, ))){
final dc.int i$PLUS_1$1=(1+i$11);
if(dc.identical((arr[i$PLUS_1$1]), v$2, )){
return this;
}
final dc.List<dc.dynamic> G$8917_$1=(dc.List.from(arr, growable: false, ));
final dc.dynamic v$8083_$AUTO_$17=v$2;
G$8917_$1[i$PLUS_1$1]=v$8083_$AUTO_$17;
return lcoc_core.BitmapNode(cnt, 0, 0, G$8917_$1, );
}
i$11=(2+i$11);
continue;
} while(true);
}