Changeset 196276 in webkit


Ignore:
Timestamp:
Feb 8, 2016 3:14:47 PM (8 years ago)
Author:
Yusuke Suzuki
Message:

[JSC] Introduce @isObject bytecode intrinsic and use it instead of JS implemented one
https://bugs.webkit.org/show_bug.cgi?id=153976

Reviewed by Darin Adler.

Use bytecode op_is_object directly.

  • builtins/GlobalObject.js:

(isObject): Deleted.

  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::BytecodeIntrinsicNode::emit_intrinsic_toString):
(JSC::BytecodeIntrinsicNode::emit_intrinsic_isObject):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init): Deleted.

Location:
trunk/Source/JavaScriptCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r196274 r196276  
     12016-02-08  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        [JSC] Introduce @isObject bytecode intrinsic and use it instead of JS implemented one
     4        https://bugs.webkit.org/show_bug.cgi?id=153976
     5
     6        Reviewed by Darin Adler.
     7
     8        Use bytecode op_is_object directly.
     9
     10        * builtins/GlobalObject.js:
     11        (isObject): Deleted.
     12        * bytecode/BytecodeIntrinsicRegistry.h:
     13        * bytecompiler/NodesCodegen.cpp:
     14        (JSC::BytecodeIntrinsicNode::emit_intrinsic_toString):
     15        (JSC::BytecodeIntrinsicNode::emit_intrinsic_isObject):
     16        * runtime/JSGlobalObject.cpp:
     17        (JSC::JSGlobalObject::init): Deleted.
     18
    1192016-02-08  Yusuke Suzuki  <utatane.tea@gmail.com>
    220
  • trunk/Source/JavaScriptCore/builtins/GlobalObject.js

    r196022 r196276  
    5252}
    5353
    54 function isObject(object)
    55 {
    56     "use strict";
    57 
    58     return (object !== null && typeof object === "object") || typeof object === "function";
    59 }
    60 
    6154function isDictionary(object)
    6255{
  • trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h

    r196022 r196276  
    4141#define JSC_COMMON_BYTECODE_INTRINSIC_FUNCTIONS_EACH_NAME(macro) \
    4242    macro(assert) \
     43    macro(isObject) \
    4344    macro(putByValDirect) \
    4445    macro(toString)
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r196022 r196276  
    849849
    850850    return generator.moveToDestinationIfNeeded(dst, generator.emitToString(generator.tempDestination(dst), src.get()));
     851}
     852
     853RegisterID* BytecodeIntrinsicNode::emit_intrinsic_isObject(BytecodeGenerator& generator, RegisterID* dst)
     854{
     855    ArgumentListNode* node = m_args->m_listNode;
     856    RefPtr<RegisterID> src = generator.emitNode(node);
     857    ASSERT(!node->m_next);
     858
     859    return generator.moveToDestinationIfNeeded(dst, generator.emitIsObject(generator.tempDestination(dst), src.get()));
    851860}
    852861
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp

    r196165 r196276  
    562562        GlobalPropertyInfo(vm.propertyNames->builtinNames().toLengthPrivateName(), privateFuncToLength, DontEnum | DontDelete | ReadOnly),
    563563        GlobalPropertyInfo(vm.propertyNames->builtinNames().toIntegerPrivateName(), privateFuncToInteger, DontEnum | DontDelete | ReadOnly),
    564         GlobalPropertyInfo(vm.propertyNames->builtinNames().isObjectPrivateName(), JSFunction::createBuiltinFunction(vm, globalObjectIsObjectCodeGenerator(vm), this), DontEnum | DontDelete | ReadOnly),
    565564        GlobalPropertyInfo(vm.propertyNames->builtinNames().isDictionaryPrivateName(), JSFunction::createBuiltinFunction(vm, globalObjectIsDictionaryCodeGenerator(vm), this), DontEnum | DontDelete | ReadOnly),
    566565        GlobalPropertyInfo(vm.propertyNames->builtinNames().isPromisePrivateName(), JSFunction::createBuiltinFunction(vm, promiseOperationsIsPromiseCodeGenerator(vm), this), DontEnum | DontDelete | ReadOnly),
Note: See TracChangeset for help on using the changeset viewer.