member descriptor ics

trying to fill in rewriting holes... for this one I had to some support for doubles and some `mov` variants in the assembler and rewriter. Kind of hacky/lazy...
(By that, I mean that I saw that `foo` only checked the lower 8 bits of `b`
and mistakenly thought that meant it had to ignore them; but really it just
meant it had no need to look at them.)

On Mon, Sep 22, 2014 at 8:41 PM, Travis Hance <tjhance7@gmail.com> wrote:

> ah ok.. I actually checked by compiling
>
> ```
> void foo2();
> void foo3();
>
> void foo(bool b) {
>     if (b) {
>         foo2();
>     } else {
>         foo3();
>     }
> }
>
> ```
>
> but now that you point it out, that's not the right thing to check
>
> On Mon, Sep 22, 2014 at 8:39 PM, Kevin Modzelewski <
> notifications@github.com> wrote:
>
>> In src/runtime/objmodel.cpp:
>>
>> >                  int8_t rtn = reinterpret_cast<int8_t*>(obj)[member_desc->offset];
>> >                  return boxInt(rtn);
>> >              }
>> >              case BoxedMemberDescriptor::BOOL: {
>> > -                rewrite_args = NULL;
>> > +                if (rewrite_args) {
>> > +                    RewriterVarUsage r_unboxed_val
>> > +                        = rewrite_args->obj.getAttr(member_desc->offset, RewriterVarUsage::KillFlag::Kill,
>> > +                                                    Location::forArg(0), assembler::MovType::B);
>>
>> I think you are supposed to extend function arguments to 32 bits -- this
>> is what the make test_cpp_asm target is nice for:
>>
>> void* boxBool(bool b);
>> void* foo(bool *b) {
>>     return boxBool(*b);}
>>
>> make test_cpp_asm
>>
>> Disassembly of section .text:
>>
>> 0000000000000000 <_Z3fooPb>:
>>    0:   0f b6 3f                movzbl (%rdi),%edi
>>    3:   e9 00 00 00 00          jmpq   8 <_Z3fooPb+0x8>
>>
>> —
>> Reply to this email directly or view it on GitHub
>> <https://github.com/dropbox/pyston/pull/151/files#r17890955>.
>>
>
>