Hi all.

Tring to understand CharCodeAtIntrinsic in DFG.

As I understand it has to call stringProtoFuncCharCodeAt(ExecState*)
function, but in produced assembly thera is no call instruction
under StringCharCodeAt Node

Here is the test script

var b=0;

function f()

{

        var str="hello";

        var a=str.charCodeAt(0);

 b=b+a;


}


var i=0;

for(i=0;i<2500;i++)

{

        f();

}

print(b);




And the part of procused assembly.


             ..............................................
 24:           < 1:5>      GetIndexedPropertyStorage(@4<String>,
Storage|PureInt|CanExit, String, bc#20)
          0x7fc503077871: mov 0x10(%rax), %rcx
          0x7fc503077875: test %ecx, %ecx
          0x7fc503077877: jz 0x7fc5030779c0
          0x7fc50307787d: mov 0x8(%rcx), %rcx
      15:           < 1:5>      StringCharCodeAt(@4<String>, @13<Int32>,
@24, Int32|CanExit, String, bc#20)
          0x7fc503077881: xor %ebx, %ebx
          0x7fc503077883: cmp 0xc(%rax), %ebx
          0x7fc503077886: jae 0x7fc5030779e1
          0x7fc50307788c: mov 0x10(%rax), %rdi
          0x7fc503077890: test $0x40, 0x18(%rdi)
          0x7fc503077897: jz 0x7fc5030778a6
          0x7fc50307789d: movzx (%rcx,%rbx), %edi
          0x7fc5030778a1: jmp 0x7fc5030778aa
          0x7fc5030778a6: movzx (%rcx,%rbx,2), %edi
          0x7fc5030778aa: mov $0xffffffff, %r11
          0x7fc5030778b4: cmp %r11, %rdi
          0x7fc5030778b7: jbe 0x7fc5030778be
          0x7fc5030778bd: int3
      16:  skipped  < 0:->      SetLocal(@15<Int32>, <empty>, r1(H), bc#20)
      17:           < 1:4>      GetGlobalVar(JS, global4(0x7fc5478bfa00),
bc#29)  predicting Int
          0x7fc5030778be: mov $0x7fc5478bfa00, %rsi
          0x7fc5030778c8: mov (%rsi), %rsi
          ..............................................

As I understand from assembly, StringCharCodeAt only loads "h" to edi.
So the question is how StringCharCodeAt calls stringProtoFuncCharCodeAt or
where the actual converting from char to unicode is done?
_______________________________________________
squirrelfish-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/squirrelfish-dev

Reply via email to