summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-05-01 13:32:13 +0000
committerRich Hickey <richhickey@gmail.com>2008-05-01 13:32:13 +0000
commit81eae9c78fadbcaf455a621022283ffc48689af3 (patch)
treeec117fe35c200d15b460eb05cf62874420d07237 /src
parent1f4466a7a54f26f78f47d4fa3f5b6e6d786aefcc (diff)
trimmed some checkcasts in code gen
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/Compiler.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index c1df1537..a3542eef 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -1010,7 +1010,8 @@ static class InstanceMethodExpr extends MethodExpr{
{
Type type = Type.getType(method.getDeclaringClass());
target.emit(C.EXPRESSION, fn, gen);
- gen.checkCast(type);
+ if(!method.getDeclaringClass().isInterface())
+ gen.checkCast(type);
MethodExpr.emitTypedArgs(fn, gen, method.getParameterTypes(), args);
if(context == C.RETURN)
{
@@ -2395,7 +2396,7 @@ static class InvokeExpr implements Expr{
public void emit(C context, FnExpr fn, GeneratorAdapter gen){
gen.visitLineNumber(line, gen.mark());
fexpr.emit(C.EXPRESSION, fn, gen);
- gen.checkCast(IFN_TYPE);
+ //gen.checkCast(IFN_TYPE);
for(int i = 0; i < Math.min(MAX_POSITIONAL_ARITY, args.count()); i++)
{
Expr e = (Expr) args.nth(i);