The early return in ByteCode::setField would lead to a memory leak. newTag, newVal would not be deleted. A value guard should be added.
I don't think there is a way to pass setField a non-string field, so this isn't being hit, which is why we aren't seeing the issue in ASAN.