Florian, I addressed your comments and ported this to arm and x64.

On x64 I did a mini refactoring of the way constant operands are pushed. Having
a method that pushed both tagged and untagged values seemed unsafe. (We
discussed this with Slava). Lasse, it'd be great if you could have a look.


Thanks,
Vitaly


http://codereview.chromium.org/6852015/diff/1/src/ia32/lithium-ia32.cc
File src/ia32/lithium-ia32.cc (right):

http://codereview.chromium.org/6852015/diff/1/src/ia32/lithium-ia32.cc#newcode2006
src/ia32/lithium-ia32.cc:2006: LOperand* left =
UseOrConstant(instr->left());
On 2011/04/14 10:26:47, fschneider wrote:
This should be UseOrConstantAtStart. Otherwise we can't allocate a
register if
available since all are blocked because of the call.

Done.

http://codereview.chromium.org/6852015/diff/1/src/ic.cc
File src/ic.cc (right):

http://codereview.chromium.org/6852015/diff/1/src/ic.cc#newcode2029
src/ic.cc:2029: }
On 2011/04/14 10:26:47, fschneider wrote:
I think this is correct. Personally I like the approach better where
we setup
the enum values in a way so that join becomes a & operator. Maybe that
would be
a refactoring to do when cleaning up the duplicated type-info and
HType code?

TRBinaryOpIC::TypeInfo has to stay dense for now because it's packed
into the stub key.

http://codereview.chromium.org/6852015/diff/1/src/ic.cc#newcode2030
src/ic.cc:2030: if (x >= y) return x;
On 2011/04/14 10:26:47, fschneider wrote:
Maybe have x > y here since you handle == cases already above.

Done.

http://codereview.chromium.org/6852015/

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to