Ignore:
Timestamp:
Jul 15, 2020, 7:47:44 AM (5 years ago)
Author:
Alexey Shvayka
Message:

Emit HasOwnPropertyFunctionCallDotNode for "Reflect" identifiers
https://bugs.webkit.org/show_bug.cgi?id=214325

Reviewed by Darin Adler and Saam Barati.

JSTests:

  • microbenchmarks/has-own-property-for-in-loop-reflect-name.js: Added.
  • stress/reflect-has.js:
  • stress/reflect.js:

Source/JavaScriptCore:

Currently, HasOwnPropertyFunctionCallDotNode is emitted for all ResolveNodes
except ones with "Reflect" identifier. This exception doesn't seem necessary
as ReflectObject inherits ordinary Object.prototype.hasOwnProperty method.

This patch removes the exception, advancing provided "Reflect" microbenchmark
by 20%. No behavior change.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::makeFunctionCallNode):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/parser/ASTBuilder.h

    r262638 r264397  
    14561456        && args->m_listNode->m_expr->isResolveNode()
    14571457        && !args->m_listNode->m_next
    1458         && ((dot->base()->isResolveNode() && static_cast<ResolveNode*>(dot->base())->identifier() != m_vm.propertyNames->Reflect) || dot->base()->isThisNode())) {
     1458        && (dot->base()->isResolveNode() || dot->base()->isThisNode())) {
    14591459        // We match the AST pattern:
    14601460        // <resolveNode|thisNode>.hasOwnProperty(<resolveNode>)
Note: See TracChangeset for help on using the changeset viewer.