static boolean sameField(Item i1, Item i2) { if (i1.getXField() == null) { return false; } if (!i1.getXField().equals(i2.getXField())) { return false; } if (i1.getFieldLoadedFromRegister() != i2.getFieldLoadedFromRegister()) { return false; } return true; } }
int fr0 = item0.getFieldLoadedFromRegister(); int fr1 = item1.getFieldLoadedFromRegister(); if (field0 != null && field0.equals(field1) && (field0.isStatic() || fr0 != -1 && fr0 == fr1)) { int priority = NORMAL_PRIORITY;
private MethodCall getMethodCall(MethodDescriptor methodDescriptorOperand) { Item objItem = getStack().getStackItem(getNumberArguments(methodDescriptorOperand.getSignature())); if (isNew(objItem)) { return new MethodCall(methodDescriptorOperand, TARGET_NEW); } if (objItem.getRegisterNumber() == 0 && !getMethod().isStatic()) { return new MethodCall(methodDescriptorOperand, constructor ? TARGET_NEW : TARGET_THIS); } XField xField = objItem.getXField(); if (xField != null) { if (classInit && xField.isStatic() && xField.getClassDescriptor().getClassName().equals(getClassName())) { return new MethodCall(methodDescriptorOperand, TARGET_NEW); } if (!getMethodDescriptor().isStatic() && objItem.getFieldLoadedFromRegister() == 0 && allowedFields.contains(xField.getFieldDescriptor())) { fieldsModifyingMethods.add(getMethodDescriptor()); return new MethodCall(methodDescriptorOperand, xField.getFieldDescriptor()); } } return new MethodCall(methodDescriptorOperand, TARGET_OTHER); }
int registerNumber2 = fourth.getRegisterNumber(); if (f2 != null && f2.equals(getXFieldOperand()) && registerNumber2 >= 0 && registerNumber2 == third.getFieldLoadedFromRegister() && !third.sameValue(top) && (third.getPC() == -1 || third.getPC() > lastMethodCall)) { possibleOverwrite = f2; int registerNumber = next.getRegisterNumber(); if (f != null && f.equals(getXFieldOperand()) && registerNumber >= 0 && registerNumber == top.getFieldLoadedFromRegister() && (top.getPC() == -1 || top.getPC() > lastMethodCall)) { int priority = NORMAL_PRIORITY;
int fr0 = item0.getFieldLoadedFromRegister(); int fr1 = item1.getFieldLoadedFromRegister(); if (field0 != null && field0.equals(field1) && (field0.isStatic() || fr0 != -1 && fr0 == fr1)) { int priority = NORMAL_PRIORITY;
if ((loopCollectionItem.getFieldLoadedFromRegister() != itm.getFieldLoadedFromRegister()) || (itm.getFieldLoadedFromRegister() == -1) || (!newField.getName().equals(seenField.getName()))) { return true;
if ((loopCollectionItem.getFieldLoadedFromRegister() != itm.getFieldLoadedFromRegister()) || (itm.getFieldLoadedFromRegister() == -1) || (!newField.getName().equals(seenField.getName()))) { return true;
/** * given an register or field, look to see if this thing is associated with an already discovered loop * * @param itm * the item containing the register or field * @return the group element */ private static Comparable<?> getGroupElement(OpcodeStack.Item itm) { Comparable<?> groupElement = null; int reg = itm.getRegisterNumber(); if (reg >= 0) { groupElement = Integer.valueOf(reg); } else { XField field = itm.getXField(); if (field != null) { int regLoad = itm.getFieldLoadedFromRegister(); if (regLoad >= 0) { groupElement = field.getName() + ":{" + regLoad + '}'; } } } return groupElement; }
/** * given an register or field, look to see if this thing is associated with an already discovered loop * * @param itm * the item containing the register or field * @return the group element */ private static Comparable<?> getGroupElement(OpcodeStack.Item itm) { Comparable<?> groupElement = null; int reg = itm.getRegisterNumber(); if (reg >= 0) { groupElement = Integer.valueOf(reg); } else { XField field = itm.getXField(); if (field != null) { int regLoad = itm.getFieldLoadedFromRegister(); if (regLoad >= 0) { groupElement = field.getName() + ":{" + regLoad + '}'; } } } return groupElement; }
private MethodCall getMethodCall(MethodDescriptor methodDescriptorOperand) { Item objItem = getStack().getStackItem(getNumberArguments(methodDescriptorOperand.getSignature())); if (isNew(objItem)) { return new MethodCall(methodDescriptorOperand, TARGET_NEW); } if (objItem.getRegisterNumber() == 0 && !getMethod().isStatic()) { return new MethodCall(methodDescriptorOperand, constructor ? TARGET_NEW : TARGET_THIS); } XField xField = objItem.getXField(); if (xField != null) { if (classInit && xField.isStatic() && xField.getClassDescriptor().getClassName().equals(getClassName())) { return new MethodCall(methodDescriptorOperand, TARGET_NEW); } if (!getMethodDescriptor().isStatic() && objItem.getFieldLoadedFromRegister() == 0 && allowedFields.contains(xField.getFieldDescriptor())) { fieldsModifyingMethods.add(getMethodDescriptor()); return new MethodCall(methodDescriptorOperand, xField.getFieldDescriptor()); } } return new MethodCall(methodDescriptorOperand, TARGET_OTHER); }
static boolean sameField(Item i1, Item i2) { if (i1.getXField() == null) { return false; } if (!i1.getXField().equals(i2.getXField())) { return false; } if (i1.getFieldLoadedFromRegister() != i2.getFieldLoadedFromRegister()) { return false; } return true; } }
int registerNumber2 = fourth.getRegisterNumber(); if (f2 != null && f2.equals(getXFieldOperand()) && registerNumber2 >= 0 && registerNumber2 == third.getFieldLoadedFromRegister() && !third.sameValue(top) && (third.getPC() == -1 || third.getPC() > lastMethodCall)) { possibleOverwrite = f2; int registerNumber = next.getRegisterNumber(); if (f != null && f.equals(getXFieldOperand()) && registerNumber >= 0 && registerNumber == top.getFieldLoadedFromRegister() && (top.getPC() == -1 || top.getPC() > lastMethodCall)) { int priority = NORMAL_PRIORITY;