- [ ] 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]
- Requirements:
- [ ] 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?
- [-] Does the intermediate struct of byte arrays really make sense?
- [ ] What exactly should the friendly form look like?