[Webkit-unassigned] [Bug 163208] [ES6]. Implement Annex B.3.3 function hoisting rules for eval

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Jan 15 12:56:23 PST 2017


https://bugs.webkit.org/show_bug.cgi?id=163208

--- Comment #24 from Saam Barati <sbarati at apple.com> ---
Comment on attachment 298664
  --> https://bugs.webkit.org/attachment.cgi?id=298664
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=298664&action=review

This LGTM, I think it's just about ready to land,  just a few remaining comments.

> Source/JavaScriptCore/bytecode/BytecodeList.json:157
> +            { "name" : "op_resolve_closest_var_scope", "length" : 4 }

I have a naming suggestion for this bytecode (and the various functions & DFG node for it)
Instead of calling it "resolve_closest_var_scope", we should maybe call it:
"resolve_closest_or_var_scope" since the intention is to do a normal scope walk, but stop if we see a var scope. The objective is not to *always* stop at the closest var scope.

> Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:-2115
> -

revert

> Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:-2068
> -

revert

> Source/JavaScriptCore/parser/Parser.h:639
> +                    addResult.iterator->value.setIsFunction();

I don't think this is strictly true here.
Is this needed?

> Source/JavaScriptCore/runtime/JSScope.cpp:219
> +JSObject* JSScope::resolveClosestVar(ExecState* exec, JSScope* scope, const Identifier& ident)

This function is almost identical to the below resolve. Maybe you can combine them by defining a common function that takes some kind of shouldStopEarly lambda? And just make that function ALWAYS_INLINE.

> Source/JavaScriptCore/runtime/JSScope.cpp:231
> +            JSScope* globalScopeExtension = scope->globalObject(vm)->globalScopeExtension();

Do you know what this is? We should have a test for this if it's easily doable.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20170115/aa5eb6d5/attachment.html>


More information about the webkit-unassigned mailing list