[Mono-bugs] [Bug 61800][Wis] New - [PATCH] Reduce initialization code in System.Reflection.Emit.OpCode
Wed, 21 Jul 2004 16:20:45 -0400 (EDT)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by email@example.com.
--- shadow/61800 2004-07-21 16:20:45.000000000 -0400
+++ shadow/61800.tmp.26794 2004-07-21 16:20:45.000000000 -0400
@@ -0,0 +1,47 @@
+Product: Mono: Class Libraries
+Summary: [PATCH] Reduce initialization code in System.Reflection.Emit.OpCode
+2004-07-21 Duncan Mak <firstname.lastname@example.org>
+ This patch is based on an idea of Ben's to reduce the code size
+ in MCS. With this, I think we reduced a bit more than 2% of the
+ generated code size of MCS.
+ * OpCodes.cs: Instead pushing the data onto the stack when each
+ OpCode is initialized, move the data about the OpCodes into two
+ arrays and only keep an index into the arrays in each instance of
+ Furthermore, the names of each OpCode are stored in a separate
+ string array in the new OpCodeNames class, and everything else in
+ a one-dimension byte array called 'values' in the OpCodes class.
+ (OpCodeIndex) a new enum used to track the order of the 'values'
+ array, so we don't have to use magic numbers to index into the it.
+ * OpCodeNames.cs: The names of each OpCode are moved here to delay
+ the initialization of the strings, as they are not used very
+ * OpCode.cs: Rewrote this to only store an index into a table
+ stored in the OpCodes class.
+Aside: I never built with the 1.0 profile, so we lose the 1.0 opcode
+'boxval' with this patch. Is it important that we keep the 1.0 profile? If
+it is, I can go back and add that value in: it's just a pain because it
+means I need to go rearrange all the opcode index.