https://codereview.chromium.org/167123004/diff/1/src/a64/lithium-codegen-a64.cc
File src/a64/lithium-codegen-a64.cc (right):
https://codereview.chromium.org/167123004/diff/1/src/a64/lithium-codegen-a64.cc#newcode1508
src/a64/lithium-codegen-a64.cc:1508: Register size =
ToRegister32(instr->size());
I have to extend this to X() as well
https://codereview.chromium.org/167123004/diff/1/src/a64/lithium-codegen-a64.cc#newcode1519
src/a64/lithium-codegen-a64.cc:1519: __ Sub(temp1,
ToRegister32(instr->size()), kPointerSize);
On 2014/02/17 15:48:44, m.m.capewell wrote:
I'm surprised that this builds, as temp1 is X and the result of
ToRegister32, W.
Use temp1.W() if you're certain that size > kPointerSize (and thus
can't be
negative.)
size has to be at leat 2*kPointerSize, otherwise the loop below will run
havoc anyway
https://codereview.chromium.org/167123004/diff/1/src/a64/lithium-codegen-a64.cc#newcode1549
src/a64/lithium-codegen-a64.cc:1549: __ SmiTag(size, x10);
On 2014/02/17 15:48:44, m.m.capewell wrote:
I don't think you need a mov here. You can call the X() method on a
register to
get its X-sized equivalent, so you could:
Register untagged_size = ToRegister32(instr->size());
__ SmiTag(size, untagged_size.X());
Because the shift will kill the upper 32bits anyway, makes sense.
https://codereview.chromium.org/167123004/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.