On Tue, Aug 9, 2016 at 12:54 PM, Dmitriy - <[email protected]> wrote:
> Hi,
>
> in x64 implementation I can see that code
>
> const Register kRootRegister = { 13 };         // r13 (callee save).
> // Actual value of root register is offset from the root array's start
> // to take advantage of negitive 8-bit displacement values.
>
> What does it mean?
>
> It used here:
> Label convert_global_proxy;
>         __ JumpIfRoot(rcx, Heap::kUndefinedValueRootIndex,
>                       &convert_global_proxy, Label::kNear);
>         __ JumpIfNotRoot(rcx, Heap::kNullValueRootIndex, &convert_to_object,
>                          Label::kNear);
>
> In asm this code is:
>
> 0x2ecf4661ca9a    58 493b4da8       REX.W cmpq rcx,[r13-0x58]
> 0x2ecf4661ca9e    62 7406           jz 70  (0x2ecf4661caa6)
> 0x2ecf4661caa0    64 493b4db8       REX.W cmpq rcx,[r13-0x48]
> 0x2ecf4661caa4    68 750d           jnz 83  (0x2ecf4661cab3)
>
> Somebody knows what are purposes for r13 (root register)?

It's a pointer to a list of singletons, like the null and undefined
values, the hole value, the canonical NaN, etc.  See ROOT_LIST in
heap/heap.h for the full list.

-- 
-- 
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/d/optout.

Reply via email to