[webkit-reviews] review granted: [Bug 90982] LLInt: Add op_get_by_id_proto : [Attachment 151713] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jul 11 10:21:27 PDT 2012


Filip Pizlo <fpizlo at apple.com> has granted Andy Wingo <wingo at igalia.com>'s
request for review:
Bug 90982: LLInt: Add op_get_by_id_proto
https://bugs.webkit.org/show_bug.cgi?id=90982

Attachment 151713: Patch
https://bugs.webkit.org/attachment.cgi?id=151713&action=review

------- Additional Comments from Filip Pizlo <fpizlo at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=151713&action=review


> Source/JavaScriptCore/bytecode/CodeBlock.cpp:2049
> +		   if (!curInstruction[4].u.structure ||
Heap::isMarked(curInstruction[4].u.structure.get()))
> +		       break;

What if the main structure is marked but the prototype structure isn't?  I
guess this should be:

ASSERT(!!curInstruction[4].u.structure == !!curInstruction[5].u.structure); //
The structures should either be both 0 or both non-0.
if (!curInstruction[4].u.structure)
    break;
if (Heap::isMarked(curInstruction[4].u.structure.get()) &&
Heap::isMarked(curInstruction[5].u.structure.get()))
    break;

Though, I think it would be even better if the clearing you're doing below
flipped this back to op_get_by_id - that's the style I've been using for
put_by_id.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:508
> +_llint_op_get_by_id_proto:
> +    traceExecution()
> +    callSlowPath(_llint_slow_path_get_by_id_proto)
> +    dispatch(9)

So you get a speed-up even though this isn't inline?  Nifty.  We should inline
it at some point.


More information about the webkit-reviews mailing list