[xbuild] Vbc task - make error column check a little non-specific.
[mono.git] / mono / mini / TODO
index fcdacaddf3be78b9ee872297ffffe253cc98a0ac..d214318c81312e7cccf36ce5d306d5f10d83b508 100644 (file)
@@ -39,3 +39,39 @@ Usability
 * Remove the various graph options, have a separate --help-graph for 
   that list.
 
+Cleanup
+-------
+
+Clean up the usage of the various CEE_/OP_ constants inside the JIT. 
+
+Currently, there are the 5 variants for each opcode:
+- CEE_...
+- OP_...
+- OP_I...
+- OP_L...
+- OP_P...
+
+Some opcodes have some variants, while others don't.
+
+They are used as follows:
+- In method_to_ir, CEE_ means the IL opcode ie. without operand size information
+- In the rules inside the .brg files CEE_ means the same as OP_I..., since
+  long opcodes were transformed into OP_L.... by method_to_ir.
+- In the IR emitted by the rules inside the .brg files, CEE_ means the same as
+  OP_P..., since it is usually generated for pointer manipulation.
+- In mono_arch_emit_opcode, CEE_ means OP_P....
+
+As can be seen above, this is a mess. A proposed solution would be the 
+following:
+
+- In method_to_ir, transform CEE_ opcodes into the appropriate OP_I/OP_L
+  opcodes.
+- Get rid of the OP_P opcodes, and use the OP_... opcodes instead, since the
+  two usually means the same.
+- In the IR emitted by the burg rules, use the OP_... opcodes instead of the
+  CEE and OP_P opcodes.
+
+Using these rules would ensure that the same opcode means the same thing in
+all parts of the JIT.
+
+