bugKawa - Bugs: bug #36592, nested map causes compiler inliner...

 
 

bug #36592: nested map causes compiler inliner NPE

Submitter:  tk <huh>
Submitted:  Tue 05 Jun 2012 10:57:26 AM UTC
   
 
Category:  Code generation Severity:  3 - Normal
Item Group:  Compile-time exception Status:  Fixed
Privacy:  Public Assigned to:  bothner
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Mon 11 Jun 2012 03:45:09 AM UTC, comment #1: 

Fix and test-case checked in.  Thanks!

Per Bothner <bothner>
Group administrator
Tue 05 Jun 2012 10:57:26 AM UTC, original submission:  

nested calls to map with lambda expression cause exception when compiler attempts to inline inner expression
(Kawa 1.12.1 (revision 7245M))

#|kawa:1|# (map (lambda (x) x) (map (lambda (x) x) '(1 2 3)))
/dev/stdin:1:21: caught exception in inliner for #<procedure map> - java.lang.NullPointerException
    gnu.expr.InlineCalls.visit(InlineCalls.java:50)
    gnu.expr.InlineCalls.visitLetExp(InlineCalls.java:537)
    gnu.expr.InlineCalls.visitLetExp(InlineCalls.java:36)
    gnu.expr.LetExp.visit(LetExp.java:204)
    gnu.expr.ExpVisitor.visit(ExpVisitor.java:57)
    gnu.expr.InlineCalls.visit(InlineCalls.java:52)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:135)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:36)
    gnu.expr.ApplyExp.visit(ApplyExp.java:436)
    gnu.expr.ExpVisitor.visit(ExpVisitor.java:57)
    gnu.expr.InlineCalls.visit(InlineCalls.java:52)
    gnu.expr.QuoteExp.validateApply(QuoteExp.java:165)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:139)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:36)
    gnu.expr.ApplyExp.visit(ApplyExp.java:436)
    gnu.expr.ExpVisitor.visit(ExpVisitor.java:57)
    gnu.expr.InlineCalls.visit(InlineCalls.java:52)
    gnu.expr.InlineCalls.visit(InlineCalls.java:36)
    gnu.expr.ExpVisitor.visitAndUpdate(ExpVisitor.java:143)
    gnu.expr.ExpVisitor.visitExps(ExpVisitor.java:157)
    gnu.expr.ApplyExp.visitArgs(ApplyExp.java:441)
    gnu.expr.LambdaExp.validateApply(LambdaExp.java:1788)
    gnu.expr.ReferenceExp.validateApply(ReferenceExp.java:197)
    gnu.expr.InlineCalls.visitApplyOnly(InlineCalls.java:162)
    gnu.kawa.functions.CompileMisc.validateApplyMap(CompileMisc.java:725)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    gnu.expr.InlineCalls.maybeInline(InlineCalls.java:852)
    gnu.expr.QuoteExp.validateApply(QuoteExp.java:153)
    gnu.expr.ReferenceExp.validateApply(ReferenceExp.java:197)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:139)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:36)
    gnu.expr.ApplyExp.visit(ApplyExp.java:436)
    gnu.expr.ExpVisitor.visit(ExpVisitor.java:53)
    gnu.expr.InlineCalls.visit(InlineCalls.java:52)
    gnu.expr.InlineCalls.visit(InlineCalls.java:36)
    gnu.expr.ExpVisitor.visitAndUpdate(ExpVisitor.java:143)
    gnu.expr.ExpVisitor.visitExps(ExpVisitor.java:157)
    gnu.expr.ApplyExp.visitArgs(ApplyExp.java:441)
    gnu.expr.LambdaExp.validateApply(LambdaExp.java:1788)
    gnu.expr.ReferenceExp.validateApply(ReferenceExp.java:197)
    gnu.expr.InlineCalls.visitApplyOnly(InlineCalls.java:162)
    gnu.kawa.functions.CompileMisc.validateApplyMap(CompileMisc.java:744)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    gnu.expr.InlineCalls.maybeInline(InlineCalls.java:852)
    gnu.expr.QuoteExp.validateApply(QuoteExp.java:153)
    gnu.expr.ReferenceExp.validateApply(ReferenceExp.java:197)
    gnu.kawa.functions.CompilationHelpers.validateApplyToArgs(CompilationHelpers.java:73)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    gnu.expr.InlineCalls.maybeInline(InlineCalls.java:852)
    gnu.expr.QuoteExp.validateApply(QuoteExp.java:153)
    gnu.expr.ReferenceExp.validateApply(ReferenceExp.java:197)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:139)
    gnu.expr.InlineCalls.visitApplyExp(InlineCalls.java:36)
    gnu.expr.ApplyExp.visit(ApplyExp.java:436)
    gnu.expr.ExpVisitor.visit(ExpVisitor.java:53)
    gnu.expr.InlineCalls.visit(InlineCalls.java:52)
    gnu.expr.InlineCalls.visit(InlineCalls.java:36)
    gnu.expr.LambdaExp.visitChildrenOnly(LambdaExp.java:1715)
    gnu.expr.LambdaExp.visitChildren(LambdaExp.java:1702)
    gnu.expr.InlineCalls.visitScopeExp(InlineCalls.java:444)
    gnu.expr.InlineCalls.visitLambdaExp(InlineCalls.java:644)
    gnu.expr.InlineCalls.visitLambdaExp(InlineCalls.java:36)
    gnu.expr.ExpVisitor.visitModuleExp(ExpVisitor.java:105)
    gnu.expr.InlineCalls.visitModuleExp(InlineCalls.java:492)
    gnu.expr.InlineCalls.visitModuleExp(InlineCalls.java:36)
    gnu.expr.ModuleExp.visit(ModuleExp.java:462)
    gnu.expr.ExpVisitor.visit(ExpVisitor.java:53)
    gnu.expr.InlineCalls.visit(InlineCalls.java:52)
    gnu.expr.InlineCalls.inlineCalls(InlineCalls.java:40)
    gnu.expr.Compilation.walkModule(Compilation.java:959)
    gnu.expr.Compilation.process(Compilation.java:1933)
    gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:305)
    gnu.expr.ModuleExp.evalModule1(ModuleExp.java:223)
    gnu.expr.ModuleExp.evalModule(ModuleExp.java:195)
    kawa.Shell.run(Shell.java:279)
    kawa.Shell.run(Shell.java:194)
    kawa.Shell.run(Shell.java:175)
    kawa.repl.main(repl.java:957)

tk <huh>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by bothner (Posted a comment)
  • -email is unavailable- added by huh (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2012-06-11 bothner StatusNone Fixed
        Assigned toNone bothner
        Open/ClosedOpen Closed

    Back to the top

    Powered by Savane 3.13-4b48.
    Corresponding source code