Skip to content

Latest commit

 

History

History
32 lines (25 loc) · 1.25 KB

TODO.org

File metadata and controls

32 lines (25 loc) · 1.25 KB

functionality

  • [ ] To start with, the following low-tech example should work:
    • Requirements:
      • [ ] java-class macro that can deal with fields and methods
      • [ ] bytecode parser that knows the right operand types and can update the constant pool
      • [ ] max-stack calculation (only supporting the opcodes with constant stack delta)
      • [ ] max-locals calculation
    • (java-class “Nothing” (field “Ljava.lang.Object;” “x”) (field “Ljava.lang.Object;” “y”) (method “()Ljava.lang.Object;” “getX” [:aload_0 ; this :getfield (cp-field-ref “Nothing” “Ljava.lang.Object;” “x”) :areturn]

code organisation

  • [ ] What shape should the code actually be?
  • [-] How should classes be expressed?
    • [-] Does the intermediate struct of byte arrays really make sense?
      • The friendly form probably doesn’t need a constant pool, for example
      • [X] Is it possible to parse out the constant pool without it?
        • Specifically can CP entries contain indices that are ahead of themselves in the pool? The spec does not seem to prevent it.
      • [ ] Having said that, do we need it for writing?
        • Can we just write directly from the friendly form?
  • [ ] What exactly should the friendly form look like?