StructureStubInfo.cpp [plain text]
#include "config.h"
#include "StructureStubInfo.h"
namespace JSC {
#if ENABLE(JIT)
void StructureStubInfo::deref()
{
switch (opcodeID) {
case op_get_by_id_self:
u.getByIdSelf.baseObjectStructure->deref();
return;
case op_get_by_id_proto:
u.getByIdProto.baseObjectStructure->deref();
u.getByIdProto.prototypeStructure->deref();
return;
case op_get_by_id_chain:
u.getByIdChain.baseObjectStructure->deref();
u.getByIdChain.chain->deref();
return;
case op_get_by_id_self_list: {
PolymorphicAccessStructureList* polymorphicStructures = u.getByIdSelfList.structureList;
polymorphicStructures->derefStructures(u.getByIdSelfList.listSize);
delete polymorphicStructures;
return;
}
case op_get_by_id_proto_list: {
PolymorphicAccessStructureList* polymorphicStructures = u.getByIdProtoList.structureList;
polymorphicStructures->derefStructures(u.getByIdProtoList.listSize);
delete polymorphicStructures;
return;
}
case op_put_by_id_transition:
u.putByIdTransition.previousStructure->deref();
u.putByIdTransition.structure->deref();
u.putByIdTransition.chain->deref();
return;
case op_put_by_id_replace:
u.putByIdReplace.baseObjectStructure->deref();
return;
case op_get_by_id:
case op_put_by_id:
case op_get_by_id_generic:
case op_put_by_id_generic:
case op_get_array_length:
case op_get_string_length:
return;
default:
ASSERT_NOT_REACHED();
}
}
#endif
}