8063037: ApplySpecialization.hasApplies shouuld not descend into nested functions

Reviewed-by: hannesw, lagergren
This commit is contained in:
Attila Szegedi 2014-11-12 14:54:40 +01:00
parent 1fd2db0b1a
commit e0d1d687f2

View File

@ -140,6 +140,11 @@ public final class ApplySpecialization extends NodeVisitor<LexicalContext> imple
private boolean hasApplies(final FunctionNode functionNode) {
try {
functionNode.accept(new NodeVisitor<LexicalContext>(new LexicalContext()) {
@Override
public boolean enterFunctionNode(final FunctionNode fn) {
return fn == functionNode;
}
@Override
public boolean enterCallNode(final CallNode callNode) {
if (isApply(callNode)) {
@ -162,7 +167,7 @@ public final class ApplySpecialization extends NodeVisitor<LexicalContext> imple
* scope, thus we are conservative and treat any access to arguments outside the
* apply call as a case of "we cannot apply the optimization".
*/
private void checkValidTransform(final FunctionNode functionNode) {
private static void checkValidTransform(final FunctionNode functionNode) {
final Set<Expression> argumentsFound = new HashSet<>();
final Deque<Set<Expression>> stack = new ArrayDeque<>();