+ default:
+ RELEASE_ASSERT_NOT_REACHED();
+ }
+}
+
+bool StructureStubInfo::visitWeakReferences(RepatchBuffer& repatchBuffer)
+{
+ switch (accessType) {
+ case access_get_by_id_self:
+ if (!Heap::isMarked(u.getByIdSelf.baseObjectStructure.get()))
+ return false;
+ break;
+ case access_get_by_id_list: {
+ if (!u.getByIdList.list->visitWeak(repatchBuffer))
+ return false;
+ break;
+ }
+ case access_put_by_id_transition_normal:
+ case access_put_by_id_transition_direct:
+ if (!Heap::isMarked(u.putByIdTransition.previousStructure.get())
+ || !Heap::isMarked(u.putByIdTransition.structure.get())
+ || !Heap::isMarked(u.putByIdTransition.chain.get()))
+ return false;
+ break;
+ case access_put_by_id_replace:
+ if (!Heap::isMarked(u.putByIdReplace.baseObjectStructure.get()))
+ return false;
+ break;
+ case access_put_by_id_list:
+ if (!u.putByIdList.list->visitWeak(repatchBuffer))
+ return false;
+ break;
+ case access_in_list: {
+ PolymorphicAccessStructureList* polymorphicStructures = u.inList.structureList;
+ if (!polymorphicStructures->visitWeak(u.inList.listSize))
+ return false;
+ break;