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.
