Ivan and I consider this as a temporary solution. We'd like to change
the signature of cmp instruction so the hidden side-effect (using ip)
becomes obvious. Currently you cannot tell the differences between

cmp(ip, Operand(Handle<String>(name)); and
cmp(ip, Operand(r0));

The former is troublesome, but the second is allowed.

On Thu, Nov 20, 2008 at 10:46 AM, Erik Corry <[EMAIL PROTECTED]> wrote:
>
>
> On Thu, Nov 20, 2008 at 6:51 PM, <[EMAIL PROTECTED]> wrote:
>>
>> Reviewers: iposva,
>>
>> Description:
>> Turn ASSERT(!rn.is(ip)) into CHECK so the error can be caught in release
>> mode.
>
> It seems a pity to slow down the release version of the VM with this check
> when the DEBUG version would have caught it.  I realise that the DEBUG
> version of the VM is impossibly slow on native ARM hardware, but on the
> simulator has the runtime code (where you are slowed down by DEBUG) in
> native code.
>
>
>>
>> It addresses the problem of 'cmp' instruction that has the side-effect
>> that ip register
>> shouldn't be used as rn.
>>
>>
>> Please review this at http://codereview.chromium.org/11323
>>
>> SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/
>>
>> Affected files:
>>   M     src/assembler-arm.cc
>>
>>
>> Index: src/assembler-arm.cc
>> ===================================================================
>> --- src/assembler-arm.cc        (revision 805)
>> +++ src/assembler-arm.cc        (working copy)
>> @@ -554,7 +554,7 @@
>>        // However, if the original instruction is a 'mov rd, x' (not
>> setting the
>>        // condition code), then replace it with a 'ldr rd, [pc]'
>>        RecordRelocInfo(x.rmode_, x.imm32_);
>> -      ASSERT(!rn.is(ip));  // rn should never be ip, or will be trashed
>> +      CHECK(!rn.is(ip));  // rn should never be ip, or will be trashed
>>        Condition cond = static_cast<Condition>(instr & CondMask);
>>        if ((instr & ~CondMask) == 13*B21) {  // mov, S not set
>>          ldr(rd, MemOperand(pc, 0), cond);
>>
>>
>>
>>
>
>
>
> --
> Erik Corry, Software Engineer
> Google Denmark ApS.  CVR nr. 28 86 69 84
> c/o Philip & Partners, 7 Vognmagergade, P.O. Box 2227, DK-1018 Copenhagen K,
> Denmark.
>
> >
>

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

Reply via email to