The approach LGTM, and this if fine as a work in progress.
I think the two comments below are worth addressing earlier rather than later.
http://codereview.chromium.org/6219001/diff/1/src/ia32/lithium-ia32.h File src/ia32/lithium-ia32.h (right): http://codereview.chromium.org/6219001/diff/1/src/ia32/lithium-ia32.h#newcode312 src/ia32/lithium-ia32.h:312: virtual void set_result(LOperand* operand) = 0; Maybe we should put these only on the Result=1 specialization as non-virtual member functions. We could have a static casting function that checks types in debug builds but that has no overhead in release builds, rather than incurring a small overhead for each access. http://codereview.chromium.org/6219001/diff/1/src/ia32/lithium-ia32.h#newcode337 src/ia32/lithium-ia32.h:337: template <int Result = 0> I think I'd rather have two separate specializations than the default parameter. http://codereview.chromium.org/6219001/diff/1/src/ia32/lithium-ia32.h#newcode2103 src/ia32/lithium-ia32.h:2103: LInstruction* Define(LTemplateInstruction<1>* instr, LUnallocated* result); This is nice. http://codereview.chromium.org/6219001/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
