|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.sf.saxon.expr.parser.Optimizer
com.saxonica.expr.ee.OptimizerEE
public class OptimizerEE
This class performs a number of optimizations that are specific to the Saxon-EE product. The relevant methods override dummy methods (that generally perform no optimization) in the superclass, which is used by Saxon-HE.
| Field Summary |
|---|
| Fields inherited from class net.sf.saxon.expr.parser.Optimizer |
|---|
config, FULL_OPTIMIZATION, NO_OPTIMIZATION |
| Constructor Summary | |
|---|---|
OptimizerEE(Configuration config)
Create the Saxon-EE optimizer |
|
| Method Summary | |
|---|---|
Expression |
compileToByteCode(Expression expr,
String objectName,
int evaluationMethods)
Generate Java byte code for an expression |
Expression |
convertPathExpressionToKey(SlashExpression pathExp,
ExpressionVisitor visitor)
Examine a path expression to see whether it can be replaced by a call on the key() function; if so, generate an appropriate key definition and return the call on key(). |
FilterExpression |
convertToFilterExpression(SlashExpression pathExp,
TypeHierarchy th)
Convert a path expression such as a/b/c[predicate] into a filter expression of the form (a/b/c)[predicate]. |
Expression |
extractGlobalVariables(Expression body,
ExpressionVisitor visitor,
PromotionOffer offer)
Extract subexpressions from the body of a function that can be evaluated as global variables |
Expression |
generateMultithreadedInstruction(Expression instruction)
Generate a multi-threaded version of an instruction. |
int |
isIndexableFilter(Expression filter)
Test whether a filter predicate is indexable. |
Expression |
makeCastableToList(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
Make an expression castable check to a union type. |
Expression |
makeCastableToUnion(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
Make an expression castable check to a union type. |
Expression |
makeCastToList(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
Make an expression that casts to a list type. |
Expression |
makeCastToUnion(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
Make an expression that casts to a union type. |
Expression |
makeConditionalDocumentSorter(DocumentSorter sorter,
SlashExpression path)
Make a conditional document sorter. |
void |
makeCopyOperationsExplicit(Expression parent,
Expression child)
In streaming mode, make the copy operation applied to subexpressions of a complex-content sequence constructor into explicit copy-of operations. |
ValueRepresentation |
makeIndexedValue(SequenceIterator iter)
Create an indexed value |
RuleTarget |
makeInversion(Pattern pattern,
Template template,
NodeTest nodeTest)
Generate the inversion of the expression comprising the body of a template rules. |
Expression |
makeOuterForExpression()
Make an OuterForExpression (Saxon-EE only) |
Expression |
makeStreamingApplyTemplates(ApplyTemplates inst)
Make a streaming applyTemplates instruction. |
Expression |
optimizeCopy(Expression select)
Attempt to optimize a copy operation. |
Expression |
optimizeForExpressionForStreaming(ForExpression expr)
In streaming mode, optimizer a ForExpression for streaming. |
BinaryExpression |
optimizeGeneralComparison(GeneralComparison gc,
boolean backwardsCompatible)
Simplify a GeneralComparison expression |
Expression |
optimizeQuantifiedExpressionForStreaming(QuantifiedExpression expr)
In streaming mode, optimize a QuantifiedExpression for streaming. |
Expression |
optimizeStreamingCopy(Expression select)
Given a select expression, determine whether it is a candidate for sequential processing, and if so, return a SequentialCopy expression that does the work. |
boolean |
processSwitchCondition(Expression condition,
Expression action,
com.saxonica.expr.ee.OptimizerEE.SwitchCaseInfo switchCaseInfo)
|
Expression |
promoteExpressionsToGlobal(Expression body,
ExpressionVisitor visitor)
Identify expressions within a function or template body that can be promoted to be evaluated as global variables. |
Expression |
tryIndexedFilter(FilterExpression f,
ExpressionVisitor visitor,
boolean indexFirstOperand)
Try converting a filter expression to a call on the key function. |
Expression |
tryInlineFunctionCall(UserFunctionCall functionCall,
ExpressionVisitor visitor,
ExpressionVisitor.ContextItemType contextItemType)
Replace a function call by the body of the function, assuming all conditions for inlining the function are satisfied |
Expression |
trySwitch(Choose choose,
StaticContext env)
Try to convert a Choose expression (or an XQuery 1.1 switch) into an optimized switch |
| Methods inherited from class net.sf.saxon.expr.parser.Optimizer |
|---|
getConfiguration, getOptimizationLevel, isVariableReplaceableByDot, setOptimizationLevel, trace, trace |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public OptimizerEE(Configuration config)
config - the Saxon-EE configuration| Method Detail |
|---|
public BinaryExpression optimizeGeneralComparison(GeneralComparison gc,
boolean backwardsCompatible)
optimizeGeneralComparison in class Optimizergc - the GeneralComparison to be simplifiedbackwardsCompatible - true if in 1.0 compatibility mode
public Expression optimizeCopy(Expression select)
throws XPathException
optimizeCopy in class Optimizerselect - the expression that selects the items to be copied
XPathException
public Expression optimizeStreamingCopy(Expression select)
throws XPathException
select - the select expression to be examined
XPathException - if called for an expression that does not qualify for this optimization
public void makeCopyOperationsExplicit(Expression parent,
Expression child)
throws XPathException
makeCopyOperationsExplicit in class Optimizerparent - The parent expression of the expression that is to be wrapped in an implicit copy-of.child - The expression that is to be wrapped in an implicit copy-of, if it is suitable.
XPathException
public Expression makeCastToUnion(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
makeCastToUnion in class Optimizer
public Expression makeCastToList(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
makeCastToList in class Optimizer
public Expression makeCastableToUnion(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
makeCastableToUnion in class Optimizer
public Expression makeCastableToList(Expression operand,
SchemaType targetType,
boolean allowsEmpty)
makeCastableToList in class Optimizer
public Expression optimizeForExpressionForStreaming(ForExpression expr)
throws XPathException
optimizeForExpressionForStreaming in class Optimizerexpr - the expression to be optimized
XPathExceptionpublic Expression makeOuterForExpression()
makeOuterForExpression in class Optimizer
public Expression optimizeQuantifiedExpressionForStreaming(QuantifiedExpression expr)
throws XPathException
optimizeQuantifiedExpressionForStreaming in class Optimizerexpr - the expression to be optimized
XPathException
public Expression convertPathExpressionToKey(SlashExpression pathExp,
ExpressionVisitor visitor)
throws XPathException
convertPathExpressionToKey in class OptimizerpathExp - The path expression to be converted.visitor - The expression visitor
XPathException
public Expression tryIndexedFilter(FilterExpression f,
ExpressionVisitor visitor,
boolean indexFirstOperand)
tryIndexedFilter in class Optimizerf - the filter expression to be convertedvisitor - the expression visitor, which must be currently visiting the filter expression findexFirstOperand - true if the first operand of the filter comparison is to be indexed;
false if it is the second operand
public FilterExpression convertToFilterExpression(SlashExpression pathExp,
TypeHierarchy th)
throws XPathException
convertToFilterExpression in class OptimizerpathExp - the path expression to be convertedth - the type hierarchy cache
XPathExceptionpublic int isIndexableFilter(Expression filter)
isIndexableFilter in class Optimizerfilter - the predicate expression
public ValueRepresentation makeIndexedValue(SequenceIterator iter)
throws XPathException
makeIndexedValue in class Optimizeriter - the iterator that delivers the sequence of values to be indexed
XPathException
public Expression makeConditionalDocumentSorter(DocumentSorter sorter,
SlashExpression path)
makeConditionalDocumentSorter in class Optimizersorter - an expression that sorts and deduplicates its operandpath - the slash expression that is the operand of the sorter
public Expression tryInlineFunctionCall(UserFunctionCall functionCall,
ExpressionVisitor visitor,
ExpressionVisitor.ContextItemType contextItemType)
tryInlineFunctionCall in class OptimizerfunctionCall - the functionCall expressionvisitor - the expression visitorcontextItemType - the static type of the context item
public Expression promoteExpressionsToGlobal(Expression body,
ExpressionVisitor visitor)
throws XPathException
promoteExpressionsToGlobal in class Optimizerbody - the body of the template or functionvisitor - the expression visitor
XPathException
public Expression trySwitch(Choose choose,
StaticContext env)
trySwitch in class Optimizerchoose - the Choose expressionenv - the static context
public boolean processSwitchCondition(Expression condition,
Expression action,
com.saxonica.expr.ee.OptimizerEE.SwitchCaseInfo switchCaseInfo)
public Expression extractGlobalVariables(Expression body,
ExpressionVisitor visitor,
PromotionOffer offer)
throws XPathException
extractGlobalVariables in class Optimizerbody - an expression with no dependencies other than on global variables
(already checked by the caller)offer - The PromotionOffer. Will be marked to indicate whether any action was taken
XPathException
public Expression makeStreamingApplyTemplates(ApplyTemplates inst)
throws XPathException
makeStreamingApplyTemplates in class Optimizerinst - the unoptimized applyTemplates instruction
XPathException
public RuleTarget makeInversion(Pattern pattern,
Template template,
NodeTest nodeTest)
throws XPathException
makeInversion in class Optimizerpattern - the match pattern of this template ruletemplate - the template to be invertednodeTest - the static item type of the context node of the template
XPathExceptionpublic Expression generateMultithreadedInstruction(Expression instruction)
generateMultithreadedInstruction in class Optimizerinstruction - the instruction to be multi-threaded
public Expression compileToByteCode(Expression expr,
String objectName,
int evaluationMethods)
compileToByteCode in class Optimizerexpr - the expression to be compiledobjectName - the name of the object to be compiled, used as a hint for the Java class/method nameevaluationMethods - The evaluation modes for which code is generated. Currently a subset of
Expression.PROCESS_METHOD, Expression.ITERATE_METHOD. If no code is generated for
a given evaluation method, the fallback implementation from the superclass is used.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||