/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Find out if the given ElemTemplateElement is not the same as one of * the ElemTemplateElement owners of the expressions. * * @param head Head of linked list of expression owners. * @param ete The ElemTemplateElement that is a candidate for a psuedo * variable parent. * @return true if the given ElemTemplateElement is not the same as one of * the ElemTemplateElement owners of the expressions. This is to make sure * we find an ElemTemplateElement that is in a viable position to hold * psuedo variables that are visible to the references. */ protected boolean isNotSameAsOwner(MultistepExprHolder head, ElemTemplateElement ete) { MultistepExprHolder next = head; while(null != next) { ElemTemplateElement elemOwner = getElemFromExpression(next.m_exprOwner.getExpression()); if(elemOwner == ete) return false; next = next.m_next; } return true; }
/** * Validate some assumptions about the new LocPathIterator and it's * owner and the state of the list. */ private static void validateNewAddition(Vector paths, ExpressionOwner owner, LocPathIterator path) throws RuntimeException { assertion(owner.getExpression() == path, "owner.getExpression() != path!!!"); int n = paths.size(); // There should never be any duplicates in the list! for(int i = 0; i < n; i++) { ExpressionOwner ew = (ExpressionOwner)paths.elementAt(i); assertion(ew != owner, "duplicate owner on the list!!!"); assertion(ew.getExpression() != path, "duplicate expression on the list!!!"); } }
/** * Find out if the given ElemTemplateElement is not the same as one of * the ElemTemplateElement owners of the expressions. * * @param head Head of linked list of expression owners. * @param ete The ElemTemplateElement that is a candidate for a psuedo * variable parent. * @return true if the given ElemTemplateElement is not the same as one of * the ElemTemplateElement owners of the expressions. This is to make sure * we find an ElemTemplateElement that is in a viable position to hold * psuedo variables that are visible to the references. */ protected boolean isNotSameAsOwner(MultistepExprHolder head, ElemTemplateElement ete) { MultistepExprHolder next = head; while(null != next) { ElemTemplateElement elemOwner = getElemFromExpression(next.m_exprOwner.getExpression()); if(elemOwner == ete) return false; next = next.m_next; } return true; }
/** * Validate some assumptions about the new LocPathIterator and it's * owner and the state of the list. */ private static void validateNewAddition(Vector paths, ExpressionOwner owner, LocPathIterator path) throws RuntimeException { assertion(owner.getExpression() == path, "owner.getExpression() != path!!!"); int n = paths.size(); // There should never be any duplicates in the list! for(int i = 0; i < n; i++) { ExpressionOwner ew = (ExpressionOwner)paths.elementAt(i); assertion(ew != owner, "duplicate owner on the list!!!"); assertion(ew.getExpression() != path, "duplicate expression on the list!!!"); } }
LocPathIterator lpi = (LocPathIterator)eo.getExpression(); int numPaths = countSteps(lpi); if(numPaths > 1)
LocPathIterator lpi = (LocPathIterator)eo.getExpression(); int numPaths = countSteps(lpi); if(numPaths > 1)
WalkingIterator iter1 = (WalkingIterator) testee.m_exprOwner.getExpression(); if(partialIsVariable(testee, lengthToTest)) return head; WalkingIterator iter2 = (WalkingIterator) meh.m_exprOwner.getExpression(); if (stepsEqual(iter1, iter2, lengthToTest)) WalkingIterator sharedIter = (WalkingIterator)matchedPaths.m_exprOwner.getExpression(); WalkingIterator newIter = createIteratorFromSteps(sharedIter, lengthToTest); ElemVariable var = createPseudoVarDecl(root, newIter, isGlobal); WalkingIterator iter = (WalkingIterator)owner.getExpression();
WalkingIterator iter1 = (WalkingIterator) testee.m_exprOwner.getExpression(); if(partialIsVariable(testee, lengthToTest)) return head; WalkingIterator iter2 = (WalkingIterator) meh.m_exprOwner.getExpression(); if (stepsEqual(iter1, iter2, lengthToTest)) WalkingIterator sharedIter = (WalkingIterator)matchedPaths.m_exprOwner.getExpression(); WalkingIterator newIter = createIteratorFromSteps(sharedIter, lengthToTest); ElemVariable var = createPseudoVarDecl(root, newIter, isGlobal); WalkingIterator iter = (WalkingIterator)owner.getExpression();
int numPathsFound = 0; int n = paths.size(); Expression expr1 = firstOccuranceOwner.getExpression(); if(DEBUG) assertIsLocPathIterator(expr1, firstOccuranceOwner); if(null != owner2) Expression expr2 = owner2.getExpression(); boolean isEqual = expr2.deepEquals(lpi); if(isEqual)
int n = paths.size(); Expression expr1 = firstOccuranceOwner.getExpression(); if(DEBUG) assertIsLocPathIterator(expr1, firstOccuranceOwner); if(null != owner2) Expression expr2 = owner2.getExpression(); boolean isEqual = expr2.deepEquals(lpi); if(isEqual) LocPathIterator sharedIter = (LocPathIterator)head.m_exprOwner.getExpression(); ElemVariable var = createPseudoVarDecl(root, sharedIter, isGlobal); if(DIAGNOSE_MULTISTEPLIST)
int n = paths.size(); Expression expr1 = firstOccuranceOwner.getExpression(); if(DEBUG) assertIsLocPathIterator(expr1, firstOccuranceOwner); if(null != owner2) Expression expr2 = owner2.getExpression(); boolean isEqual = expr2.deepEquals(lpi); if(isEqual) LocPathIterator sharedIter = (LocPathIterator)head.m_exprOwner.getExpression(); ElemVariable var = createPseudoVarDecl(root, sharedIter, isGlobal); if(DIAGNOSE_MULTISTEPLIST)
int numPathsFound = 0; int n = paths.size(); Expression expr1 = firstOccuranceOwner.getExpression(); if(DEBUG) assertIsLocPathIterator(expr1, firstOccuranceOwner); if(null != owner2) Expression expr2 = owner2.getExpression(); boolean isEqual = expr2.deepEquals(lpi); if(isEqual)
getElemFromExpression(next.m_exprOwner.getExpression()); elems[i] = elem; int numAncestors = countAncestors(elem);
getElemFromExpression(next.m_exprOwner.getExpression()); elems[i] = elem; int numAncestors = countAncestors(elem);
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }
/** * Check if results of partial reduction will just be a variable, in * which case, skip it. */ boolean partialIsVariable(MultistepExprHolder testee, int lengthToTest) { if(1 == lengthToTest) { WalkingIterator wi = (WalkingIterator)testee.m_exprOwner.getExpression(); if(wi.getFirstWalker() instanceof FilterExprWalker) return true; } return false; }