<< Back to previous view

[TEMJVM-9] Change fn name munging scheme to match the one introduced with CLJ-1330 Created: 13/Oct/14  Updated: 13/Oct/14

Status: Open
Project: tools.emitter.jvm
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None





[TEMJVM-10] Fix line number info Created: 22/Oct/14  Updated: 22/Oct/14

Status: Open
Project: tools.emitter.jvm
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Major
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

Relevant tickets

http://dev.clojure.org/jira/browse/CLJ-1561
http://dev.clojure.org/jira/browse/CLJ-1568






[TEMJVM-11] Stack error in recur Created: 22/Jul/15  Updated: 22/Jul/15

Status: Open
Project: tools.emitter.jvm
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Defect Priority: Major
Reporter: Reid McKenzie Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   
user> (loop [acc 0
             col (range 50)]
        (if-not (empty? col)
          (recur (+ acc (first col)) (rest col))
          acc))

Generates exception

expected: (= (apply + (range 50)) (e/eval (quote (loop [acc 0 col (range 50)] (if-not (empty? col) (recur (+ acc (first col)) (rest col)) acc)))))
  actual: java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    clojure/tools/emitter/passes/jvm/annotate_internal_name$fn__8917.invoke()Ljava/lang/Object; @4: invokestatic
  Reason:
    Type 'java/lang/Number' (current frame, stack[0]) is not assignable to long_2nd
  Current Frame:
    bci: @4
    flags: { }
    locals: { 'clojure/tools/emitter/passes/jvm/annotate_internal_name$fn__8917' }
    stack: { 'java/lang/Number' }
  Bytecode:
    0x0000000: 2ab6 0045 b800 49b0

 at java.lang.Class.getDeclaredConstructors0 (Class.java:-2)
    java.lang.Class.privateGetDeclaredConstructors (Class.java:2671)
    java.lang.Class.getConstructor0 (Class.java:3075)
    java.lang.Class.newInstance (Class.java:412)
    clojure.tools.emitter.jvm$eval.invoke (clojure/tools/emitter/jvm.clj:105)
    clojure.tools.emitter.jvm$eval.invoke (clojure/tools/emitter/jvm.clj:83)
    clojure.tools.emitter.jvm.core_test$fn__8193$fn__8328.invoke (core_test.clj:74)
    clojure.tools.emitter.jvm.core_test/fn (core_test.clj:73)


 Comments   
Comment by Nicola Mometto [ 22/Jul/15 4:00 PM ]

Looks like a problem with boxing, not sure when I'll have time to investigate/fix this





[TEMJVM-12] Improve test coverage Created: 22/Jul/15  Updated: 22/Jul/15

Status: Open
Project: tools.emitter.jvm
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Major
Reporter: Reid McKenzie Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

The "develop" branch brings test coverage of TEMJVM up from 48% by forms to 79%. Still not covered are many of the -emit-set! operations and some details of deftype and defrecord emission.

Tests broken until TEMJVM-11 is fixed.

Ongoing point of work.






[TEMJVM-13] Modularize -emit method Created: 22/Jul/15  Updated: 22/Jul/15

Status: Open
Project: tools.emitter.jvm
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Major
Reporter: Reid McKenzie Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None


 Description   

As mentioned briefly via email, a critical failure of TEMJVM in terms of extensibility is that clients are unable to leverage the existing emitter code without duplicating it wholesale or altering the loaded copy of TEMJVM in place.

The feature/fragmented-emitter branch experiments with refactoring the various emit operations so that rather than using multimethods, they are represented as maps of :op keywords to simple functions taking an extra leading argument being the dispatch map or set of maps. Clients using TEMJVM then can recycle any and all code from the emitter itself simply by associng onto these mappings and using them. This may come at a performance penalty due to multimethod caching, however it should hugely reduce the verbosity of client code which doesn't have to define a mostly repetitive multimethod.






[TEMJVM-5] Optimize constant metadata emission Created: 27/Apr/14  Updated: 27/Apr/14

Status: Open
Project: tools.emitter.jvm
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Enhancement Priority: Minor
Reporter: Nicola Mometto Assignee: Nicola Mometto
Resolution: Unresolved Votes: 0
Labels: None





Generated at Mon Jul 27 20:29:27 CDT 2015 using JIRA 4.4#649-r158309.