What about the conditional operator - does it propagate types? What about ARM? LGTM.
http://codereview.chromium.org/593110/diff/3004/3005 File src/ia32/codegen-ia32.cc (right): http://codereview.chromium.org/593110/diff/3004/3005#newcode1077 src/ia32/codegen-ia32.cc:1077: : NumberInfo::kNumber; For and, you can even know that the result is a smi, if *either* operand is a *positive* smi. Wonder if positiveness-analysis would be usefull. http://codereview.chromium.org/593110/diff/3004/3006 File src/ia32/codegen-ia32.h (right): http://codereview.chromium.org/593110/diff/3004/3006#newcode671 src/ia32/codegen-ia32.h:671: operands_type_(operands_type) { Seems odd to pass only one operand type to a binary op stub. Can't you have separate type information for each operand? http://codereview.chromium.org/593110/diff/3004/3006#newcode710 src/ia32/codegen-ia32.h:710: static_cast<int>(operands_type_)); For debugging, you can have a function that converts Type bits to strings. You have the code already in GenericBinaryOpStub::GetName http://codereview.chromium.org/593110/diff/3004/3009 File src/number-info.h (right): http://codereview.chromium.org/593110/diff/3004/3009#newcode52 src/number-info.h:52: return a >= kNumber; Seems it should be ((a & kNumber) != 0) http://codereview.chromium.org/593110/diff/3004/3007 File src/x64/codegen-x64.cc (right): http://codereview.chromium.org/593110/diff/3004/3007#newcode8166 src/x64/codegen-x64.cc:8166: break; This should be a function declared in numbertype.h and defined in codegen.cc. It's identical across platforms. http://codereview.chromium.org/593110/diff/3004/3008 File src/x64/codegen-x64.h (right): http://codereview.chromium.org/593110/diff/3004/3008#newcode31 src/x64/codegen-x64.h:31: #include "number-info.h" Don't include in a .h file. Just ensure that number-info.h is included before codegen-x64.h wherever the latter is used. http://codereview.chromium.org/593110 -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
