This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-bcel.git


The following commit(s) were added to refs/heads/master by this push:
     new 64962b09 Refactor common code
64962b09 is described below

commit 64962b09e87f32ef8a43b5cfc5138ace414ca806
Author: Gary David Gregory (Code signing key) <ggreg...@apache.org>
AuthorDate: Sat Oct 29 11:02:58 2022 -0400

    Refactor common code
---
 .../verifier/structurals/ExecutionVisitor.java     | 31 +++++++++-------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git 
a/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java 
b/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java
index 72d97c53..4400d0c6 100644
--- a/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java
+++ b/src/main/java/org/apache/bcel/verifier/structurals/ExecutionVisitor.java
@@ -810,13 +810,7 @@ public class ExecutionVisitor extends EmptyVisitor {
         stack().push(Type.INT);
     }
 
-    /**
-     * Symbolically executes the corresponding Java Virtual Machine 
instruction.
-     *
-     * @since 6.0
-     */
-    @Override
-    public void visitINVOKEDYNAMIC(final INVOKEDYNAMIC o) {
+    private void visitInvokedInternals(final InvokeInstruction o) {
         stack().pop(o.getArgumentTypes(cpg).length);
         // We are sure the invoked method will xRETURN eventually
         // We simulate xRETURNs functionality here because we
@@ -831,6 +825,16 @@ public class ExecutionVisitor extends EmptyVisitor {
         }
     }
 
+    /**
+     * Symbolically executes the corresponding Java Virtual Machine 
instruction.
+     *
+     * @since 6.0
+     */
+    @Override
+    public void visitINVOKEDYNAMIC(final INVOKEDYNAMIC o) {
+        visitInvokedInternals(o);
+    }
+
     /** Symbolically executes the corresponding Java Virtual Machine 
instruction. */
     @Override
     public void visitINVOKEINTERFACE(final INVOKEINTERFACE o) {
@@ -878,18 +882,7 @@ public class ExecutionVisitor extends EmptyVisitor {
     /** Symbolically executes the corresponding Java Virtual Machine 
instruction. */
     @Override
     public void visitINVOKESTATIC(final INVOKESTATIC o) {
-        stack().pop(o.getArgumentTypes(cpg).length);
-        // We are sure the invoked method will xRETURN eventually
-        // We simulate xRETURNs functionality here because we
-        // don't really "jump into" and simulate the invoked
-        // method.
-        if (o.getReturnType(cpg) != Type.VOID) {
-            Type t = o.getReturnType(cpg);
-            if (t.equals(Type.BOOLEAN) || t.equals(Type.CHAR) || 
t.equals(Type.BYTE) || t.equals(Type.SHORT)) {
-                t = Type.INT;
-            }
-            stack().push(t);
-        }
+        visitInvokedInternals(o);
     }
 
     /** Symbolically executes the corresponding Java Virtual Machine 
instruction. */

Reply via email to