Package gnu.expr
Class PushApply
- java.lang.Object
-
- gnu.expr.ExpVisitor<Expression,Void>
-
- gnu.expr.PushApply
-
- All Implemented Interfaces:
SourceLocator,SourceLocator,Locator
public class PushApply extends ExpVisitor<Expression,Void>
Re-arranges ApplyExp where the function is a LetExp or BeginExp. Optimizes((let (...) body) . args)to (let (...) (body . args)). Optimizes ((begin ... last) . args) to (begin ... (last . args)). This helps optimize Scheme "named let" (and some other forms) by making it more likely the application will be to a known procedure. Optimizes(if (let (...) body) e1 [e2])to(let (...) (if body e1 [e2])). Optimizes(if (begin ... last) e1 [e2])to(begin ... (if last e1 [e2])). These optimizations have to be done after Declarations are bound. Also, for eachLambdaExpset thecanFinishConditionfield. This information is used in the followingInlineCallspass, to determine which calls (and thus other expressions) have the typeneverReturnsType. That in turn is used in the laterChainLambdapass to warn about unreachable code.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface gnu.text.SourceLocator
SourceLocator.Simple
-
-
Field Summary
-
Fields inherited from class gnu.expr.ExpVisitor
currentLambda, exitValue, messages
-
-
Constructor Summary
Constructors Constructor Description PushApply()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ExpressiondefaultValue(Expression r, Void ignored)voidforkNext()voidforkPop()voidforkPush()static voidpushApply(Expression exp, Compilation comp)protected Expressionupdate(Expression exp, Expression r)protected ExpressionvisitApplyExp(ApplyExp exp, Void ignored)protected ExpressionvisitBlockExp(BlockExp exp, Void ignored)protected ExpressionvisitCaseExp(CaseExp exp, Void ignored)protected ExpressionvisitClassExp(ClassExp exp, Void ignored)protected ExpressionvisitExitExp(ExitExp exp, Void ignored)protected ExpressionvisitIfExp(IfExp exp, Void ignored)protected ExpressionvisitLambdaExp(LambdaExp exp, Void ignored)protected ExpressionvisitReferenceExp(ReferenceExp exp, Void ignored)protected ExpressionvisitTryExp(TryExp exp, Void ignored)-
Methods inherited from class gnu.expr.ExpVisitor
error, getColumnNumber, getCompilation, getCurrentLambda, getEndColumn, getEndLine, getExitValue, getFileName, getLanguage, getLineNumber, getMessages, getPublicId, getStartColumn, getStartLine, getSystemId, isStableSourceLocation, noteError, setColumn, setContext, setFile, setLine, setLine, visit, visit, visitAndUpdate, visitBeginExp, visitDeclarationType, visitDeclarationTypes, visitDefaultArgs, visitExpression, visitExps, visitExps, visitFluidLetExp, visitLangExp, visitLetExp, visitModuleExp, visitObjectExp, visitQuoteExp, visitScopeExp, visitSetExp, visitSynchronizedExp, visitThisExp
-
-
-
-
Method Detail
-
pushApply
public static void pushApply(Expression exp, Compilation comp)
-
update
protected Expression update(Expression exp, Expression r)
- Overrides:
updatein classExpVisitor<Expression,Void>
-
defaultValue
protected Expression defaultValue(Expression r, Void ignored)
- Overrides:
defaultValuein classExpVisitor<Expression,Void>
-
visitApplyExp
protected Expression visitApplyExp(ApplyExp exp, Void ignored)
- Overrides:
visitApplyExpin classExpVisitor<Expression,Void>
-
visitIfExp
protected Expression visitIfExp(IfExp exp, Void ignored)
- Overrides:
visitIfExpin classExpVisitor<Expression,Void>
-
visitCaseExp
protected Expression visitCaseExp(CaseExp exp, Void ignored)
- Overrides:
visitCaseExpin classExpVisitor<Expression,Void>
-
visitTryExp
protected Expression visitTryExp(TryExp exp, Void ignored)
- Overrides:
visitTryExpin classExpVisitor<Expression,Void>
-
visitBlockExp
protected Expression visitBlockExp(BlockExp exp, Void ignored)
- Overrides:
visitBlockExpin classExpVisitor<Expression,Void>
-
visitExitExp
protected Expression visitExitExp(ExitExp exp, Void ignored)
- Overrides:
visitExitExpin classExpVisitor<Expression,Void>
-
visitReferenceExp
protected Expression visitReferenceExp(ReferenceExp exp, Void ignored)
- Overrides:
visitReferenceExpin classExpVisitor<Expression,Void>
-
visitClassExp
protected Expression visitClassExp(ClassExp exp, Void ignored)
- Overrides:
visitClassExpin classExpVisitor<Expression,Void>
-
visitLambdaExp
protected Expression visitLambdaExp(LambdaExp exp, Void ignored)
- Overrides:
visitLambdaExpin classExpVisitor<Expression,Void>
-
forkPush
public void forkPush()
-
forkNext
public void forkNext()
-
forkPop
public void forkPop()
-
-