We need to fixup roots after partial failed (just as SH::evacuate_and_update()). full-gc's update_roots() does not do the trick, 'cause it crosses safepoints, frames moved. Webrev: http://cr.openjdk.java.net/~zgu/shenandoah/evac_dpt/webrev.00/index.html Test: hotspot_gc_shenandoah (fastdebug and release) Thanks, -Zhengyu