return compareLocalKey((LocalPointerKey) key1, key2); return -1*compareLocalKey((LocalPointerKey) key2, key1); return compareReturnValueKey((ReturnValueKey)key1, key2); return -1*compareReturnValueKey((ReturnValueKey)key2, key1); return compareExceptionKey((ExceptionReturnValueKey)key1, key2); return -1*compareExceptionKey((ExceptionReturnValueKey)key2, key1); return compareFieldKey((InstanceFieldKey)key1, key2); return -1*compareFieldKey((InstanceFieldKey)key2, key1); return compareStaticKey((StaticFieldKey)key1, key2); return -1*compareStaticKey((StaticFieldKey)key2, key1); return compareArrayKey((ArrayContentsKey)key1, key2); return -1*compareArrayKey((ArrayContentsKey)key2, key1); return compareOtherKeys(key1, key2);
protected int compareInstanceKeys(InstanceKey k1, InstanceKey k2) { return compareConcreteTypes( k1.getConcreteType(), k2.getConcreteType() ); }
private int compareFieldKey(InstanceFieldKey key1, Object key2) { if (key2 instanceof InstanceFieldKey) { int r1 = compareInstanceKeys(key1.getInstanceKey(), ((InstanceFieldKey)key2).getInstanceKey()); if (r1 != 0) return r1; else { return compareFields(key1.getField(), ((InstanceFieldKey)key2).getField()); } } else return -1; }
private int compareArrayKey(ArrayContentsKey key1, Object key2) { if (key2 instanceof ArrayContentsKey) { ArrayClass k1 = (ArrayClass)key1.getInstanceKey().getConcreteType(); ArrayClass k2 = (ArrayClass)((ArrayContentsKey)key2).getInstanceKey().getConcreteType(); int d1 = k1.getDimensionality(); int d2 = k2.getDimensionality(); if (d1 != d2) { return d1-d2; } else if (k1.getInnermostElementClass() == null) { if (k2.getInnermostElementClass() == null) return comparePrimitives( k1.getReference().getInnermostElementType(), k2.getReference().getInnermostElementType()); else return -1; } else if (k2.getInnermostElementClass() == null) { return 1; } else { return compareConcreteTypes( k1.getInnermostElementClass(), k2.getInnermostElementClass()); } } else return -1; }
private int compareStaticKey(StaticFieldKey key1, Object key2) { if (key2 instanceof StaticFieldKey) { int n1 = cha.getNumber( key1.getField().getDeclaringClass() ); int n2 = cha.getNumber( ((StaticFieldKey)key2).getField().getDeclaringClass() ); if (n1 != n2) return n1-n2; else { return compareFields(key1.getField(), ((StaticFieldKey)key2).getField()); } } else return -1; }
private int compareArrayKey(ArrayContentsKey key1, Object key2) { if (key2 instanceof ArrayContentsKey) { ArrayClass k1 = (ArrayClass)key1.getInstanceKey().getConcreteType(); ArrayClass k2 = (ArrayClass)((ArrayContentsKey)key2).getInstanceKey().getConcreteType(); int d1 = k1.getDimensionality(); int d2 = k2.getDimensionality(); if (d1 != d2) { return d1-d2; } else if (k1.getInnermostElementClass() == null) { if (k2.getInnermostElementClass() == null) return comparePrimitives( k1.getReference().getInnermostElementType(), k2.getReference().getInnermostElementType()); else return -1; } else if (k2.getInnermostElementClass() == null) { return 1; } else { return compareConcreteTypes( k1.getInnermostElementClass(), k2.getInnermostElementClass()); } } else return -1; }
private int compareStaticKey(StaticFieldKey key1, Object key2) { if (key2 instanceof StaticFieldKey) { int n1 = cha.getNumber( key1.getField().getDeclaringClass() ); int n2 = cha.getNumber( ((StaticFieldKey)key2).getField().getDeclaringClass() ); if (n1 != n2) return n1-n2; else { return compareFields(key1.getField(), ((StaticFieldKey)key2).getField()); } } else return -1; }
return compareLocalKey((LocalPointerKey) key1, key2); return -1*compareLocalKey((LocalPointerKey) key2, key1); return compareReturnValueKey((ReturnValueKey)key1, key2); return -1*compareReturnValueKey((ReturnValueKey)key2, key1); return compareExceptionKey((ExceptionReturnValueKey)key1, key2); return -1*compareExceptionKey((ExceptionReturnValueKey)key2, key1); return compareFieldKey((InstanceFieldKey)key1, key2); return -1*compareFieldKey((InstanceFieldKey)key2, key1); return compareStaticKey((StaticFieldKey)key1, key2); return -1*compareStaticKey((StaticFieldKey)key2, key1); return compareArrayKey((ArrayContentsKey)key1, key2); return -1*compareArrayKey((ArrayContentsKey)key2, key1); return compareOtherKeys(key1, key2);
private int compareFieldKey(InstanceFieldKey key1, Object key2) { if (key2 instanceof InstanceFieldKey) { int r1 = compareInstanceKeys(key1.getInstanceKey(), ((InstanceFieldKey)key2).getInstanceKey()); if (r1 != 0) return r1; else { return compareFields(key1.getField(), ((InstanceFieldKey)key2).getField()); } } else return -1; }
protected int compareInstanceKeys(InstanceKey k1, InstanceKey k2) { return compareConcreteTypes( k1.getConcreteType(), k2.getConcreteType() ); }