From 498e5ec1929b94942077e1814aa30af7598ed78c Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 8 Jul 2014 17:06:08 +0400 Subject: [PATCH] Minor refactoring: analyze-method added --- .../boxing/RedundantBoxingMethodTransformer.java | 6 ++---- .../boxing/RedundantNullCheckMethodTransformer.java | 8 +++----- .../optimization/transformer/MethodTransformer.java | 12 ++++++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantBoxingMethodTransformer.java b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantBoxingMethodTransformer.java index a03b41d3ef2..55708b4da92 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantBoxingMethodTransformer.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantBoxingMethodTransformer.java @@ -26,7 +26,6 @@ import org.jetbrains.org.objectweb.asm.Opcodes; import org.jetbrains.org.objectweb.asm.Type; import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; import org.jetbrains.org.objectweb.asm.tree.*; -import org.jetbrains.org.objectweb.asm.tree.analysis.Analyzer; import org.jetbrains.org.objectweb.asm.tree.analysis.BasicValue; import org.jetbrains.org.objectweb.asm.tree.analysis.Frame; @@ -40,9 +39,8 @@ public class RedundantBoxingMethodTransformer extends MethodTransformer { @Override public void transform(@NotNull String internalClassName, @NotNull MethodNode node) { RedundantBoxingInterpreter interpreter = new RedundantBoxingInterpreter(node.instructions); - Frame[] frames = runAnalyzer( - new Analyzer(interpreter), - internalClassName, node + Frame[] frames = analyze( + internalClassName, node, interpreter ); interpretPopInstructionsForBoxedValues(interpreter, node, frames); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java index a9d72f17885..99901b96059 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/boxing/RedundantNullCheckMethodTransformer.java @@ -44,11 +44,9 @@ public class RedundantNullCheckMethodTransformer extends MethodTransformer { private static boolean removeRedundantNullCheckPass(@NotNull String internalClassName, @NotNull MethodNode methodNode) { InsnList insnList = methodNode.instructions; - Frame[] frames = runAnalyzer( - new Analyzer( - new BoxingInterpreter(insnList) - ), - internalClassName, methodNode + Frame[] frames = analyze( + internalClassName, methodNode, + new BoxingInterpreter(insnList) ); List insnsToOptimize = new ArrayList(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/transformer/MethodTransformer.java b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/transformer/MethodTransformer.java index 4a6e47e2c99..276e2a13404 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/optimization/transformer/MethodTransformer.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/optimization/transformer/MethodTransformer.java @@ -18,10 +18,7 @@ package org.jetbrains.jet.codegen.optimization.transformer; import org.jetbrains.annotations.NotNull; import org.jetbrains.org.objectweb.asm.tree.MethodNode; -import org.jetbrains.org.objectweb.asm.tree.analysis.Analyzer; -import org.jetbrains.org.objectweb.asm.tree.analysis.AnalyzerException; -import org.jetbrains.org.objectweb.asm.tree.analysis.Frame; -import org.jetbrains.org.objectweb.asm.tree.analysis.Value; +import org.jetbrains.org.objectweb.asm.tree.analysis.*; public abstract class MethodTransformer { private final MethodTransformer delegate; @@ -42,6 +39,13 @@ public abstract class MethodTransformer { throw new RuntimeException(e); } } + protected static Frame[] analyze( + @NotNull String internalClassName, + @NotNull MethodNode node, + @NotNull Interpreter interpreter + ) { + return runAnalyzer(new Analyzer(interpreter), internalClassName, node); + } public void transform(@NotNull String internalClassName, @NotNull MethodNode methodNode) { if (delegate != null) {