You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mk...@apache.org on 2003/08/12 22:19:40 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/compiler FunctionCall.java
mkwan 2003/08/12 13:19:40
Modified: java/src/org/apache/xalan/xsltc/compiler FunctionCall.java
Log:
Fix bytecode generation problem for extension method calls via
interfaces for bugzilla 22115.
Revision Changes Path
1.30 +12 -3 xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionCall.java
Index: FunctionCall.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionCall.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- FunctionCall.java 30 Jan 2003 18:46:00 -0000 1.29
+++ FunctionCall.java 12 Aug 2003 20:19:40 -0000 1.30
@@ -75,6 +75,7 @@
import org.apache.bcel.generic.ConstantPoolGen;
import org.apache.bcel.generic.IFEQ;
+import org.apache.bcel.generic.INVOKEINTERFACE;
import org.apache.bcel.generic.INVOKESPECIAL;
import org.apache.bcel.generic.INVOKESTATIC;
import org.apache.bcel.generic.INVOKEVIRTUAL;
@@ -840,11 +841,19 @@
buffer.append(')');
buffer.append(getSignature(_chosenMethod.getReturnType()));
- index = cpg.addMethodref(clazz,
+ if (_thisArgument != null && _clazz.isInterface()) {
+ index = cpg.addInterfaceMethodref(clazz,
+ _fname.getLocalPart(),
+ buffer.toString());
+ il.append(new INVOKEINTERFACE(index, n+1));
+ }
+ else {
+ index = cpg.addMethodref(clazz,
_fname.getLocalPart(),
buffer.toString());
- il.append(_thisArgument != null ? (InvokeInstruction) new INVOKEVIRTUAL(index) :
+ il.append(_thisArgument != null ? (InvokeInstruction) new INVOKEVIRTUAL(index) :
(InvokeInstruction) new INVOKESTATIC(index));
+ }
// Convert the return type back to our internal type
_type.translateFrom(classGen, methodGen,
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org