• Eric Myhre's avatar
    Map key and value assemblers invalidate self more aggressively when finished. · 0301dbad
    Eric Myhre authored
    This prevents later mutation by holding onto an assembler too long.
    (*Getting* the child assemblers is fenced by the 'state' field;
    but since none of the child assembler methods check the 'state',
    some defense is needed there.  Invalidating the pointer back up is it:
    this invalidation overhold of child assemblers once the user already
    has them into a nonissue by making any mutations fail.)
    
    I did a few extra-long benchmark runs to make sure this extra footwork
    doesn't cost any noticable time.  It does not; it's within the margins
    of error on a benchtime=4m run.
    0301dbad
map.go 13.8 KB