Changeset 199084 in webkit


Ignore:
Timestamp:
Apr 5, 2016 4:50:34 PM (8 years ago)
Author:
Ryan Haddad
Message:

Unreviewed, rolling out r199073.
https://bugs.webkit.org/show_bug.cgi?id=156261

This change broke internal Mac builds (Requested by ryanhaddad
on #webkit).

Reverted changeset:

"We should support the ability to do a non-effectful getById"
https://bugs.webkit.org/show_bug.cgi?id=156116
http://trac.webkit.org/changeset/199073

Patch by Commit Queue <commit-queue@webkit.org> on 2016-04-05

Location:
trunk/Source/JavaScriptCore
Files:
1 deleted
40 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r199081 r199084  
     12016-04-05  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r199073.
     4        https://bugs.webkit.org/show_bug.cgi?id=156261
     5
     6        This change broke internal Mac builds (Requested by ryanhaddad
     7        on #webkit).
     8
     9        Reverted changeset:
     10
     11        "We should support the ability to do a non-effectful getById"
     12        https://bugs.webkit.org/show_bug.cgi?id=156116
     13        http://trac.webkit.org/changeset/199073
     14
    1152016-04-05  Youenn Fablet  <youenn.fablet@crf.canon.fr>
    216
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r199076 r199084  
    25142514                0F46809D14BA7F8200BFE272 /* LLIntExceptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntExceptions.cpp; path = llint/LLIntExceptions.cpp; sourceTree = "<group>"; };
    25152515                0F46809E14BA7F8200BFE272 /* LLIntExceptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntExceptions.h; path = llint/LLIntExceptions.h; sourceTree = "<group>"; };
    2516                 0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; name = LLIntSlowPaths.cpp; path = llint/LLIntSlowPaths.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
    2517                 0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; name = LLIntSlowPaths.h; path = llint/LLIntSlowPaths.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
     2516                0F46809F14BA7F8200BFE272 /* LLIntSlowPaths.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntSlowPaths.cpp; path = llint/LLIntSlowPaths.cpp; sourceTree = "<group>"; };
     2517                0F4680A014BA7F8200BFE272 /* LLIntSlowPaths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntSlowPaths.h; path = llint/LLIntSlowPaths.h; sourceTree = "<group>"; };
    25182518                0F4680A114BA7F8200BFE272 /* LLIntOffsetsExtractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntOffsetsExtractor.cpp; path = llint/LLIntOffsetsExtractor.cpp; sourceTree = "<group>"; };
    25192519                0F4680C514BBB16900BFE272 /* LLIntCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntCommon.h; path = llint/LLIntCommon.h; sourceTree = "<group>"; };
     
    26502650                0F8364B5164B0C0E0053329A /* DFGBranchDirection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGBranchDirection.h; path = dfg/DFGBranchDirection.h; sourceTree = "<group>"; };
    26512651                0F86AE1F1C5311C5006BE8EC /* B3ComputeDivisionMagic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3ComputeDivisionMagic.h; path = b3/B3ComputeDivisionMagic.h; sourceTree = "<group>"; };
    2652                 0F885E101849A3BE00F1E3FA /* BytecodeUseDef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = BytecodeUseDef.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
     2652                0F885E101849A3BE00F1E3FA /* BytecodeUseDef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeUseDef.h; sourceTree = "<group>"; };
    26532653                0F893BDA1936E23C001211F4 /* DFGStructureAbstractValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGStructureAbstractValue.cpp; path = dfg/DFGStructureAbstractValue.cpp; sourceTree = "<group>"; };
    26542654                0F898F2F1B27689F0083A33C /* DFGIntegerRangeOptimizationPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGIntegerRangeOptimizationPhase.cpp; path = dfg/DFGIntegerRangeOptimizationPhase.cpp; sourceTree = "<group>"; };
     
    31293129                1429D8DB0ED2205B00B89619 /* CallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallFrame.cpp; sourceTree = "<group>"; };
    31303130                1429D8DC0ED2205B00B89619 /* CallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = CallFrame.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
    3131                 1429D92D0ED22D7000B89619 /* JIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JIT.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
    3132                 1429D92E0ED22D7000B89619 /* JIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = JIT.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
     3131                1429D92D0ED22D7000B89619 /* JIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JIT.cpp; sourceTree = "<group>"; };
     3132                1429D92E0ED22D7000B89619 /* JIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JIT.h; sourceTree = "<group>"; };
    31333133                142D3938103E4560007DCB52 /* NumericStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumericStrings.h; sourceTree = "<group>"; };
    31343134                142D6F0613539A2800B02E86 /* MarkedBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MarkedBlock.cpp; sourceTree = "<group>"; };
     
    33423342                651122E5140469BA002B101D /* testRegExp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = testRegExp.cpp; sourceTree = "<group>"; };
    33433343                6511230514046A4C002B101D /* testRegExp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testRegExp; sourceTree = BUILT_PRODUCTS_DIR; };
    3344                 6514F21718B3E1670098FF8B /* Bytecodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Bytecodes.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
    3345                 6514F21818B3E1670098FF8B /* InitBytecodes.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; lineEnding = 0; path = InitBytecodes.asm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = "<none>"; };
     3344                6514F21718B3E1670098FF8B /* Bytecodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Bytecodes.h; sourceTree = "<group>"; };
     3345                6514F21818B3E1670098FF8B /* InitBytecodes.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; path = InitBytecodes.asm; sourceTree = "<group>"; };
    33463346                6529FB3018B2D63900C61102 /* generate-bytecode-files */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = "generate-bytecode-files"; sourceTree = "<group>"; };
    3347                 6529FB3118B2D99900C61102 /* BytecodeList.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; path = BytecodeList.json; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.javascript; };
     3347                6529FB3118B2D99900C61102 /* BytecodeList.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BytecodeList.json; sourceTree = "<group>"; };
    33483348                652A3A201651C66100A80AFE /* ARM64Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ARM64Disassembler.cpp; path = disassembler/ARM64Disassembler.cpp; sourceTree = "<group>"; };
    33493349                652A3A221651C69700A80AFE /* A64DOpcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = A64DOpcode.cpp; path = disassembler/ARM64/A64DOpcode.cpp; sourceTree = "<group>"; };
     
    34343434                70DC3E071B2DF2C700054299 /* IteratorPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IteratorPrototype.cpp; sourceTree = "<group>"; };
    34353435                70DC3E081B2DF2C700054299 /* IteratorPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IteratorPrototype.h; sourceTree = "<group>"; };
    3436                 70DE9A081BE7D670005D89D9 /* LLIntAssembly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = LLIntAssembly.h; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; };
     3436                70DE9A081BE7D670005D89D9 /* LLIntAssembly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLIntAssembly.h; sourceTree = "<group>"; };
    34373437                70EC0EBC1AA0D7DA00B6AAFA /* JSStringIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSStringIterator.cpp; sourceTree = "<group>"; };
    34383438                70EC0EBD1AA0D7DA00B6AAFA /* JSStringIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringIterator.h; sourceTree = "<group>"; };
     
    35083508                8603CEF214C7546400AE59E3 /* CodeProfiling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeProfiling.cpp; sourceTree = "<group>"; };
    35093509                8603CEF314C7546400AE59E3 /* CodeProfiling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeProfiling.h; sourceTree = "<group>"; };
    3510                 8604F4F2143A6C4400B295F5 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; path = ChangeLog; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = "<none>"; };
     3510                8604F4F2143A6C4400B295F5 /* ChangeLog */ = {isa = PBXFileReference; lastKnownFileType = text; lineEnding = 0; path = ChangeLog; sourceTree = "<group>"; };
    35113511                8606DDE918DA44AB00A383D0 /* IdentifierInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IdentifierInlines.h; sourceTree = "<group>"; };
    35123512                8612E4CB1522918400C836BE /* MatchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MatchResult.h; sourceTree = "<group>"; };
     
    35363536                868916A9155F285400CB2B9A /* PrivateName.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrivateName.h; sourceTree = "<group>"; };
    35373537                869EBCB60E8C6D4A008722CC /* ResultType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResultType.h; sourceTree = "<group>"; };
    3538                 86A054461556451B00445157 /* LowLevelInterpreter.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; lineEnding = 0; name = LowLevelInterpreter.asm; path = llint/LowLevelInterpreter.asm; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = "<none>"; };
     3538                86A054461556451B00445157 /* LowLevelInterpreter.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; name = LowLevelInterpreter.asm; path = llint/LowLevelInterpreter.asm; sourceTree = "<group>"; };
    35393539                86A054471556451B00445157 /* LowLevelInterpreter32_64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; lineEnding = 0; name = LowLevelInterpreter32_64.asm; path = llint/LowLevelInterpreter32_64.asm; sourceTree = "<group>"; };
    35403540                86A054481556451B00445157 /* LowLevelInterpreter64.asm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm.asm; lineEnding = 0; name = LowLevelInterpreter64.asm; path = llint/LowLevelInterpreter64.asm; sourceTree = "<group>"; };
     
    35573557                86CC85A00EE79A4700288682 /* JITInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITInlines.h; sourceTree = "<group>"; };
    35583558                86CC85A20EE79B7400288682 /* JITCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall.cpp; sourceTree = "<group>"; };
    3559                 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JITPropertyAccess.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
     3559                86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess.cpp; sourceTree = "<group>"; };
    35603560                86CCEFDD0F413F8900FD7F9E /* JITCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITCode.h; sourceTree = "<group>"; };
    35613561                86D22219167EF9440024C804 /* testapi.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = testapi.mm; path = API/tests/testapi.mm; sourceTree = "<group>"; };
     
    36393639                9688CB130ED12B4E001D649F /* AssemblerBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssemblerBuffer.h; sourceTree = "<group>"; };
    36403640                9688CB140ED12B4E001D649F /* X86Assembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = X86Assembler.h; sourceTree = "<group>"; };
    3641                 969A07200ED1CE3300F1F681 /* BytecodeGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = BytecodeGenerator.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
     3641                969A07200ED1CE3300F1F681 /* BytecodeGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BytecodeGenerator.cpp; sourceTree = "<group>"; };
    36423642                969A07210ED1CE3300F1F681 /* BytecodeGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BytecodeGenerator.h; sourceTree = "<group>"; };
    36433643                969A07270ED1CE6900F1F681 /* Label.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Label.h; sourceTree = "<group>"; };
    36443644                969A07280ED1CE6900F1F681 /* RegisterID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterID.h; sourceTree = "<group>"; };
    3645                 969A07900ED1D3AE00F1F681 /* CodeBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = CodeBlock.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
     3645                969A07900ED1D3AE00F1F681 /* CodeBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeBlock.cpp; sourceTree = "<group>"; };
    36463646                969A07910ED1D3AE00F1F681 /* CodeBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeBlock.h; sourceTree = "<group>"; };
    36473647                969A07920ED1D3AE00F1F681 /* EvalCodeCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvalCodeCache.h; sourceTree = "<group>"; };
     
    39873987                A7C0C4AA167C08CD0017011D /* JSScriptRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSScriptRef.cpp; sourceTree = "<group>"; };
    39883988                A7C0C4AB167C08CD0017011D /* JSScriptRefPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSScriptRefPrivate.h; sourceTree = "<group>"; };
    3989                 A7C1E8C8112E701C00A37F98 /* JITPropertyAccess32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JITPropertyAccess32_64.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
     3989                A7C1E8C8112E701C00A37F98 /* JITPropertyAccess32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess32_64.cpp; sourceTree = "<group>"; };
    39903990                A7C1EAEB17987AB600299DB2 /* JSStackInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStackInlines.h; sourceTree = "<group>"; };
    39913991                A7C1EAEC17987AB600299DB2 /* StackVisitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = StackVisitor.cpp; sourceTree = "<group>"; };
  • trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp

    r199073 r199084  
    3636namespace JSC {
    3737
     38static UnlinkedFunctionExecutable* createExecutableInternal(VM&, const SourceCode&, const Identifier&, ConstructorKind, ConstructAbility);
     39
    3840BuiltinExecutables::BuiltinExecutables(VM& vm)
    3941    : m_vm(vm)
     
    5355        break;
    5456    case ConstructorKind::Base:
    55         return createExecutable(m_vm, makeSource(baseConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
     57        return createExecutableInternal(m_vm, makeSource(baseConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
    5658    case ConstructorKind::Derived:
    57         return createExecutable(m_vm, makeSource(derivedConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
     59        return createExecutableInternal(m_vm, makeSource(derivedConstructorCode), name, constructorKind, ConstructAbility::CanConstruct);
    5860    }
    5961    ASSERT_NOT_REACHED();
     
    6365UnlinkedFunctionExecutable* BuiltinExecutables::createBuiltinExecutable(const SourceCode& code, const Identifier& name, ConstructAbility constructAbility)
    6466{
    65     return createExecutable(m_vm, code, name, ConstructorKind::None, constructAbility);
     67    return createExecutableInternal(m_vm, code, name, ConstructorKind::None, constructAbility);
    6668}
    6769
    6870UnlinkedFunctionExecutable* createBuiltinExecutable(VM& vm, const SourceCode& code, const Identifier& name, ConstructAbility constructAbility)
    6971{
    70     return BuiltinExecutables::createExecutable(vm, code, name, ConstructorKind::None, constructAbility);
     72    return createExecutableInternal(vm, code, name, ConstructorKind::None, constructAbility);
    7173}
    7274
    73 UnlinkedFunctionExecutable* BuiltinExecutables::createExecutable(VM& vm, const SourceCode& source, const Identifier& name, ConstructorKind constructorKind, ConstructAbility constructAbility)
     75UnlinkedFunctionExecutable* createExecutableInternal(VM& vm, const SourceCode& source, const Identifier& name, ConstructorKind constructorKind, ConstructAbility constructAbility)
    7476{
    7577    JSTextPosition positionBeforeLastNewline;
  • trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.h

    r199073 r199084  
    5353    UnlinkedFunctionExecutable* createDefaultConstructor(ConstructorKind, const Identifier& name);
    5454
    55     JS_EXPORT_PRIVATE static UnlinkedFunctionExecutable* createExecutable(VM&, const SourceCode&, const Identifier&, ConstructorKind, ConstructAbility);
    5655private:
    5756    void finalize(Handle<Unknown>, void* context) override;
  • trunk/Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h

    r199073 r199084  
    4242    macro(assert) \
    4343    macro(isObject) \
    44     macro(tryGetById) \
    4544    macro(putByValDirect) \
    4645    macro(toString)
  • trunk/Source/JavaScriptCore/bytecode/BytecodeList.json

    r199076 r199084  
    5858            { "name" : "op_is_function", "length" : 3 },
    5959            { "name" : "op_in", "length" : 4 },
    60             { "name" : "op_try_get_by_id", "length" : 4 },
    6160            { "name" : "op_get_by_id", "length" : 9  },
    6261            { "name" : "op_get_array_length", "length" : 9 },
  • trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h

    r199076 r199084  
    144144    case op_get_from_scope:
    145145    case op_to_primitive:
    146     case op_try_get_by_id:
    147146    case op_get_by_id:
    148147    case op_get_array_length:
     
    369368    case op_call_eval:
    370369    case op_construct:
    371     case op_try_get_by_id:
    372370    case op_get_by_id:
    373371    case op_get_array_length:
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r199076 r199084  
    10941094        case op_in: {
    10951095            printBinaryOp(out, exec, location, it, "in");
    1096             break;
    1097         }
    1098         case op_try_get_by_id: {
    1099             int r0 = (++it)->u.operand;
    1100             int r1 = (++it)->u.operand;
    1101             int id0 = (++it)->u.operand;
    1102             printLocationAndOp(out, exec, location, it, "try_get_by_id");
    1103             out.printf("%s, %s, %s", registerName(r0).data(), registerName(r1).data(), idName(id0, identifier(id0)).data());
    11041096            break;
    11051097        }
  • trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp

    r199073 r199084  
    160160}
    161161
    162 std::unique_ptr<AccessCase> AccessCase::tryGet(
    163     VM& vm, JSCell* owner, AccessType type, PropertyOffset offset, Structure* structure,
    164     const ObjectPropertyConditionSet& conditionSet, bool viaProxy, WatchpointSet* additionalSet)
    165 {
    166     std::unique_ptr<AccessCase> result(new AccessCase());
    167 
    168     result->m_type = type;
    169     result->m_offset = offset;
    170     result->m_structure.set(vm, owner, structure);
    171     result->m_conditionSet = conditionSet;
    172 
    173     if (viaProxy || additionalSet) {
    174         result->m_rareData = std::make_unique<RareData>();
    175         result->m_rareData->viaProxy = viaProxy;
    176         result->m_rareData->additionalSet = additionalSet;
    177     }
    178 
    179     return result;
    180 }
    181 
    182162std::unique_ptr<AccessCase> AccessCase::get(
    183163    VM& vm, JSCell* owner, AccessType type, PropertyOffset offset, Structure* structure,
     
    706686
    707687    case Load:
    708     case GetGetter:
    709688    case Getter:
    710689    case Setter:
     
    742721        GPRReg loadedValueGPR = InvalidGPRReg;
    743722        if (m_type != CustomValueGetter && m_type != CustomAccessorGetter && m_type != CustomValueSetter && m_type != CustomAccessorSetter) {
    744             if (m_type == Load || m_type == GetGetter)
     723            if (m_type == Load)
    745724                loadedValueGPR = valueRegs.payloadGPR();
    746725            else
     
    761740                CCallHelpers::Address(storageGPR, offsetRelativeToBase(m_offset)), loadedValueGPR);
    762741#else
    763             if (m_type == Load || m_type == GetGetter) {
     742            if (m_type == Load) {
    764743                jit.load32(
    765744                    CCallHelpers::Address(storageGPR, offsetRelativeToBase(m_offset) + TagOffset),
     
    772751        }
    773752
    774         if (m_type == Load || m_type == GetGetter) {
     753        if (m_type == Load) {
    775754            state.succeed();
    776755            return;
     
    16431622        out.print("Miss");
    16441623        return;
    1645     case AccessCase::GetGetter:
    1646         out.print("GetGetter");
    1647         return;
    16481624    case AccessCase::Getter:
    16491625        out.print("Getter");
  • trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.h

    r199073 r199084  
    5858        Replace,
    5959        Miss,
    60         GetGetter,
    6160        Getter,
    6261        Setter,
     
    7271    };
    7372
    74     static std::unique_ptr<AccessCase> tryGet(
    75         VM&, JSCell* owner, AccessType, PropertyOffset, Structure*,
    76         const ObjectPropertyConditionSet& = ObjectPropertyConditionSet(),
    77         bool viaProxy = false,
    78         WatchpointSet* additionalSet = nullptr);
     73    static bool isGet(AccessType type)
     74    {
     75        switch (type) {
     76        case Transition:
     77        case Replace:
     78        case Setter:
     79        case CustomValueSetter:
     80        case CustomAccessorSetter:
     81        case InHit:
     82        case InMiss:
     83            return false;
     84        case Load:
     85        case MegamorphicLoad:
     86        case Miss:
     87        case Getter:
     88        case CustomValueGetter:
     89        case CustomAccessorGetter:
     90        case IntrinsicGetter:
     91        case ArrayLength:
     92        case StringLength:
     93            return true;
     94        }
     95    }
     96
     97    static bool isPut(AccessType type)
     98    {
     99        switch (type) {
     100        case Load:
     101        case MegamorphicLoad:
     102        case Miss:
     103        case Getter:
     104        case CustomValueGetter:
     105        case CustomAccessorGetter:
     106        case IntrinsicGetter:
     107        case InHit:
     108        case InMiss:
     109        case ArrayLength:
     110        case StringLength:
     111            return false;
     112        case Transition:
     113        case Replace:
     114        case Setter:
     115        case CustomValueSetter:
     116        case CustomAccessorSetter:
     117            return true;
     118        }
     119    }
     120
     121    static bool isIn(AccessType type)
     122    {
     123        switch (type) {
     124        case Load:
     125        case MegamorphicLoad:
     126        case Miss:
     127        case Getter:
     128        case CustomValueGetter:
     129        case CustomAccessorGetter:
     130        case IntrinsicGetter:
     131        case Transition:
     132        case Replace:
     133        case Setter:
     134        case CustomValueSetter:
     135        case CustomAccessorSetter:
     136        case ArrayLength:
     137        case StringLength:
     138            return false;
     139        case InHit:
     140        case InMiss:
     141            return true;
     142        }
     143    }
    79144
    80145    static std::unique_ptr<AccessCase> get(
  • trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp

    r199073 r199084  
    149149
    150150    switch (accessType) {
    151     case AccessType::GetPure:
    152         resetGetByID(codeBlock, *this, GetByIDKind::Pure);
    153         break;
    154151    case AccessType::Get:
    155         resetGetByID(codeBlock, *this, GetByIDKind::Normal);
     152        resetGetByID(codeBlock, *this);
    156153        break;
    157154    case AccessType::Put:
  • trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h

    r199073 r199084  
    4848enum class AccessType : int8_t {
    4949    Get,
    50     GetPure,
    5150    Put,
    5251    In
  • trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

    r199076 r199084  
    23582358    instructions().append(constructor->index());
    23592359    instructions().append(hasInstanceValue->index());
    2360     return dst;
    2361 }
    2362 
    2363 RegisterID* BytecodeGenerator::emitTryGetById(RegisterID* dst, RegisterID* base, const Identifier& property)
    2364 {
    2365     ASSERT_WITH_MESSAGE(!parseIndex(property), "Indexed properties are not supported with tryGetById.");
    2366 
    2367     emitOpcode(op_try_get_by_id);
    2368     instructions().append(kill(dst));
    2369     instructions().append(base->index());
    2370     instructions().append(addConstant(property));
    23712360    return dst;
    23722361}
  • trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h

    r199076 r199084  
    541541        RegisterID* emitIn(RegisterID* dst, RegisterID* property, RegisterID* base) { return emitBinaryOp(op_in, dst, property, base, OperandTypes()); }
    542542
    543         RegisterID* emitTryGetById(RegisterID* dst, RegisterID* base, const Identifier& property);
    544543        RegisterID* emitGetById(RegisterID* dst, RegisterID* base, const Identifier& property);
    545544        RegisterID* emitPutById(RegisterID* base, const Identifier& property, RegisterID* value);
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r199073 r199084  
    841841
    842842    return generator.moveToDestinationIfNeeded(dst, generator.emitDirectPutByVal(base.get(), index.get(), value.get()));
    843 }
    844 
    845 RegisterID* BytecodeIntrinsicNode::emit_intrinsic_tryGetById(BytecodeGenerator& generator, RegisterID* dst)
    846 {
    847     ArgumentListNode* node = m_args->m_listNode;
    848     RefPtr<RegisterID> base = generator.emitNode(node);
    849     node = node->m_next;
    850 
    851     // Since this is a builtin we expect the creator to use a string literal as the second argument.
    852     ASSERT(node->m_expr->isString());
    853     const Identifier& ident = static_cast<StringNode*>(node->m_expr)->value();
    854     ASSERT(!node->m_next);
    855 
    856     RegisterID* finalDest = generator.finalDestination(dst);
    857     return generator.emitTryGetById(finalDest, base.get(), ident);
    858843}
    859844
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp

    r199076 r199084  
    195195        m_jit.codeBlock(), codeOrigin, callSite, usedRegisters,
    196196        JSValueRegs(baseTagGPROrNone, basePayloadGPR),
    197         JSValueRegs(resultTagGPR, resultPayloadGPR), AccessType::Get);
     197        JSValueRegs(resultTagGPR, resultPayloadGPR));
    198198   
    199199    gen.generateFastPath(m_jit);
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r199076 r199084  
    165165    JITGetByIdGenerator gen(
    166166        m_jit.codeBlock(), codeOrigin, callSite, usedRegisters, JSValueRegs(baseGPR),
    167         JSValueRegs(resultGPR), AccessType::Get);
     167        JSValueRegs(resultGPR));
    168168    gen.generateFastPath(m_jit);
    169169   
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

    r199076 r199084  
    73327332                    jit.codeBlock(), node->origin.semantic, callSiteIndex,
    73337333                    params.unavailableRegisters(), JSValueRegs(params[1].gpr()),
    7334                     JSValueRegs(params[0].gpr()), AccessType::Get);
     7334                    JSValueRegs(params[0].gpr()));
    73357335
    73367336                generator->generateFastPath(jit);
  • trunk/Source/JavaScriptCore/jit/JIT.cpp

    r199076 r199084  
    229229        DEFINE_OP(op_eq)
    230230        DEFINE_OP(op_eq_null)
    231         DEFINE_OP(op_try_get_by_id)
    232231        case op_get_array_length:
    233232        DEFINE_OP(op_get_by_id)
     
    408407        DEFINE_SLOWCASE_OP(op_div)
    409408        DEFINE_SLOWCASE_OP(op_eq)
    410         DEFINE_SLOWCASE_OP(op_try_get_by_id)
    411409        case op_get_array_length:
    412410        DEFINE_SLOWCASE_OP(op_get_by_id)
  • trunk/Source/JavaScriptCore/jit/JIT.h

    r199076 r199084  
    503503        void emit_op_eq(Instruction*);
    504504        void emit_op_eq_null(Instruction*);
    505         void emit_op_try_get_by_id(Instruction*);
    506505        void emit_op_get_by_id(Instruction*);
    507506        void emit_op_get_arguments_length(Instruction*);
     
    616615        void emitSlow_op_eq(Instruction*, Vector<SlowCaseEntry>::iterator&);
    617616        void emitSlow_op_get_callee(Instruction*, Vector<SlowCaseEntry>::iterator&);
    618         void emitSlow_op_try_get_by_id(Instruction*, Vector<SlowCaseEntry>::iterator&);
    619617        void emitSlow_op_get_by_id(Instruction*, Vector<SlowCaseEntry>::iterator&);
    620618        void emitSlow_op_get_arguments_length(Instruction*, Vector<SlowCaseEntry>::iterator&);
     
    741739        MacroAssembler::Call callOperation(J_JITOperation_EJ, int, GPRReg);
    742740#if USE(JSVALUE64)
    743         MacroAssembler::Call callOperation(J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, UniquedStringImpl*);
    744741        MacroAssembler::Call callOperation(WithProfileTag, J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, UniquedStringImpl*);
    745742#else
    746         MacroAssembler::Call callOperation(J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, GPRReg, UniquedStringImpl*);
    747743        MacroAssembler::Call callOperation(WithProfileTag, J_JITOperation_ESsiJI, int, StructureStubInfo*, GPRReg, GPRReg, UniquedStringImpl*);
    748744#endif
  • trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp

    r199073 r199084  
    105105JITGetByIdGenerator::JITGetByIdGenerator(
    106106    CodeBlock* codeBlock, CodeOrigin codeOrigin, CallSiteIndex callSite, const RegisterSet& usedRegisters,
    107     JSValueRegs base, JSValueRegs value, AccessType accessType)
     107    JSValueRegs base, JSValueRegs value)
    108108    : JITByIdGenerator(
    109         codeBlock, codeOrigin, callSite, accessType, usedRegisters, base, value)
     109        codeBlock, codeOrigin, callSite, AccessType::Get, usedRegisters, base, value)
    110110{
    111111    RELEASE_ASSERT(base.payloadGPR() != value.tagGPR());
  • trunk/Source/JavaScriptCore/jit/JITInlineCacheGenerator.h

    r199073 r199084  
    9797    JITGetByIdGenerator(
    9898        CodeBlock*, CodeOrigin, CallSiteIndex, const RegisterSet& usedRegisters, JSValueRegs base,
    99         JSValueRegs value, AccessType);
     99        JSValueRegs value);
    100100   
    101101    void generateFastPath(MacroAssembler&);
  • trunk/Source/JavaScriptCore/jit/JITInlines.h

    r199076 r199084  
    460460}
    461461
    462 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1, UniquedStringImpl* uid)
    463 {
    464     setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1, TrustedImmPtr(uid));
    465     return appendCallWithExceptionCheckSetJSValueResult(operation, dst);
    466 }
    467 
    468462ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(JIT::WithProfileTag, J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1, UniquedStringImpl* uid)
    469463{
     
    646640{
    647641    setupArgumentsWithExecState(EABI_32BIT_DUMMY_ARG arg1Payload, arg1Tag);
    648     return appendCallWithExceptionCheckSetJSValueResult(operation, dst);
    649 }
    650 
    651 ALWAYS_INLINE MacroAssembler::Call JIT::callOperation(J_JITOperation_ESsiJI operation, int dst, StructureStubInfo* stubInfo, GPRReg arg1Tag, GPRReg arg1Payload, UniquedStringImpl* uid)
    652 {
    653     setupArgumentsWithExecState(TrustedImmPtr(stubInfo), arg1Payload, arg1Tag, TrustedImmPtr(uid));
    654642    return appendCallWithExceptionCheckSetJSValueResult(operation, dst);
    655643}
  • trunk/Source/JavaScriptCore/jit/JITOperations.cpp

    r199076 r199084  
    155155}
    156156
    157 EncodedJSValue JIT_OPERATION operationTryGetById(ExecState* exec, StructureStubInfo* stubInfo, EncodedJSValue base, UniquedStringImpl* uid)
    158 {
    159     VM* vm = &exec->vm();
    160     NativeCallFrameTracer tracer(vm, exec);
    161     Identifier ident = Identifier::fromUid(vm, uid);
    162     stubInfo->tookSlowPath = true;
    163 
    164     JSValue baseValue = JSValue::decode(base);
    165     PropertySlot slot(baseValue, PropertySlot::InternalMethodType::VMInquiry);
    166     baseValue.getPropertySlot(exec, ident, slot);
    167 
    168     return JSValue::encode(slot.getPureResult());
    169 }
    170 
    171 EncodedJSValue JIT_OPERATION operationTryGetByIdOptimize(ExecState* exec, StructureStubInfo* stubInfo, EncodedJSValue base, UniquedStringImpl* uid)
    172 {
    173     VM* vm = &exec->vm();
    174     NativeCallFrameTracer tracer(vm, exec);
    175     Identifier ident = Identifier::fromUid(vm, uid);
    176 
    177     JSValue baseValue = JSValue::decode(base);
    178     PropertySlot slot(baseValue, PropertySlot::InternalMethodType::VMInquiry);
    179 
    180     baseValue.getPropertySlot(exec, ident, slot);
    181     if (stubInfo->considerCaching() && !slot.isTaintedByProxy() && (slot.isCacheableValue() || slot.isCacheableGetter() || slot.isUnset()))
    182         repatchGetByID(exec, baseValue, ident, slot, *stubInfo, GetByIDKind::Pure);
    183 
    184     return JSValue::encode(slot.getPureResult());
    185 }
    186 
    187157EncodedJSValue JIT_OPERATION operationGetById(ExecState* exec, StructureStubInfo* stubInfo, EncodedJSValue base, UniquedStringImpl* uid)
    188158{
     
    220190    bool hasResult = baseValue.getPropertySlot(exec, ident, slot);
    221191    if (stubInfo->considerCaching())
    222         repatchGetByID(exec, baseValue, ident, slot, *stubInfo, GetByIDKind::Normal);
     192        repatchGetByID(exec, baseValue, ident, slot, *stubInfo);
    223193   
    224194    return JSValue::encode(hasResult? slot.getValue(exec, ident) : jsUndefined());
  • trunk/Source/JavaScriptCore/jit/JITOperations.h

    r199076 r199084  
    288288int32_t JIT_OPERATION operationCallArityCheck(ExecState*) WTF_INTERNAL;
    289289int32_t JIT_OPERATION operationConstructArityCheck(ExecState*) WTF_INTERNAL;
    290 EncodedJSValue JIT_OPERATION operationTryGetById(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
    291 EncodedJSValue JIT_OPERATION operationTryGetByIdOptimize(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
    292290EncodedJSValue JIT_OPERATION operationGetById(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
    293291EncodedJSValue JIT_OPERATION operationGetByIdGeneric(ExecState*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
     292EncodedJSValue JIT_OPERATION operationGetByIdBuildList(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
    294293EncodedJSValue JIT_OPERATION operationGetByIdOptimize(ExecState*, StructureStubInfo*, EncodedJSValue, UniquedStringImpl*) WTF_INTERNAL;
    295294EncodedJSValue JIT_OPERATION operationInOptimize(ExecState*, StructureStubInfo*, JSCell*, UniquedStringImpl*) WTF_INTERNAL;
  • trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp

    r199073 r199084  
    214214    JITGetByIdGenerator gen(
    215215        m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(m_bytecodeOffset), RegisterSet::stubUnavailableRegisters(),
    216         JSValueRegs(regT0), JSValueRegs(regT0), AccessType::Get);
     216        JSValueRegs(regT0), JSValueRegs(regT0));
    217217    gen.generateFastPath(*this);
    218218
     
    532532}
    533533
    534 void JIT::emit_op_try_get_by_id(Instruction* currentInstruction)
    535 {
    536     int resultVReg = currentInstruction[1].u.operand;
    537     int baseVReg = currentInstruction[2].u.operand;
    538 
    539     emitGetVirtualRegister(baseVReg, regT0);
    540 
    541     emitJumpSlowCaseIfNotJSCell(regT0, baseVReg);
    542 
    543     JITGetByIdGenerator gen(
    544         m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(m_bytecodeOffset), RegisterSet::stubUnavailableRegisters(),
    545         JSValueRegs(regT0), JSValueRegs(regT0), AccessType::GetPure);
    546     gen.generateFastPath(*this);
    547     addSlowCase(gen.slowPathJump());
    548     m_getByIds.append(gen);
    549    
    550     emitPutVirtualRegister(resultVReg);
    551 }
    552 
    553 void JIT::emitSlow_op_try_get_by_id(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
     534void JIT::emit_op_get_by_id(Instruction* currentInstruction)
    554535{
    555536    int resultVReg = currentInstruction[1].u.operand;
     
    557538    const Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
    558539
    559     linkSlowCaseIfNotJSCell(iter, baseVReg);
    560     linkSlowCase(iter);
    561 
    562     JITGetByIdGenerator& gen = m_getByIds[m_getByIdIndex++];
    563 
    564     Label coldPathBegin = label();
    565 
    566     Call call = callOperation(operationTryGetByIdOptimize, resultVReg, gen.stubInfo(), regT0, ident->impl());
    567    
    568     gen.reportSlowPathCall(coldPathBegin, call);
    569 }
    570 
    571 void JIT::emit_op_get_by_id(Instruction* currentInstruction)
    572 {
    573     int resultVReg = currentInstruction[1].u.operand;
    574     int baseVReg = currentInstruction[2].u.operand;
    575     const Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
    576 
    577540    emitGetVirtualRegister(baseVReg, regT0);
    578541   
     
    584547    JITGetByIdGenerator gen(
    585548        m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(m_bytecodeOffset), RegisterSet::stubUnavailableRegisters(),
    586         JSValueRegs(regT0), JSValueRegs(regT0), AccessType::Get);
     549        JSValueRegs(regT0), JSValueRegs(regT0));
    587550    gen.generateFastPath(*this);
    588551    addSlowCase(gen.slowPathJump());
  • trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp

    r199073 r199084  
    283283    JITGetByIdGenerator gen(
    284284        m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(currentInstruction), RegisterSet::stubUnavailableRegisters(),
    285         JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), AccessType::Get);
     285        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0));
    286286    gen.generateFastPath(*this);
    287287
     
    574574}
    575575
    576 void JIT::emit_op_try_get_by_id(Instruction* currentInstruction)
    577 {
    578     int dst = currentInstruction[1].u.operand;
    579     int base = currentInstruction[2].u.operand;
    580 
    581     emitLoad(base, regT1, regT0);
    582     emitJumpSlowCaseIfNotJSCell(base, regT1);
    583 
    584     JITGetByIdGenerator gen(
    585         m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(currentInstruction), RegisterSet::stubUnavailableRegisters(),
    586         JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), AccessType::GetPure);
    587     gen.generateFastPath(*this);
    588     addSlowCase(gen.slowPathJump());
    589     m_getByIds.append(gen);
    590    
    591     emitStore(dst, regT1, regT0);
    592 }
    593 
    594 void JIT::emitSlow_op_try_get_by_id(Instruction* currentInstruction, Vector<SlowCaseEntry>::iterator& iter)
    595 {
    596     int resultVReg = currentInstruction[1].u.operand;
    597     int baseVReg = currentInstruction[2].u.operand;
    598     const Identifier* ident = &(m_codeBlock->identifier(currentInstruction[3].u.operand));
    599 
    600     linkSlowCaseIfNotJSCell(iter, baseVReg);
    601     linkSlowCase(iter);
    602 
    603     JITGetByIdGenerator& gen = m_getByIds[m_getByIdIndex++];
    604 
    605     Label coldPathBegin = label();
    606 
    607     Call call = callOperation(operationTryGetByIdOptimize, resultVReg, gen.stubInfo(), regT1, regT0, ident->impl());
    608    
    609     gen.reportSlowPathCall(coldPathBegin, call);
    610 }
    611 
    612 
    613576void JIT::emit_op_get_by_id(Instruction* currentInstruction)
    614577{
     
    625588    JITGetByIdGenerator gen(
    626589        m_codeBlock, CodeOrigin(m_bytecodeOffset), CallSiteIndex(currentInstruction), RegisterSet::stubUnavailableRegisters(),
    627         JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0), AccessType::Get);
     590        JSValueRegs::payloadOnly(regT0), JSValueRegs(regT1, regT0));
    628591    gen.generateFastPath(*this);
    629592    addSlowCase(gen.slowPathJump());
  • trunk/Source/JavaScriptCore/jit/Repatch.cpp

    r199073 r199084  
    9494static void repatchByIdSelfAccess(
    9595    CodeBlock* codeBlock, StructureStubInfo& stubInfo, Structure* structure,
    96     PropertyOffset offset, const FunctionPtr& slowPathFunction,
     96    PropertyOffset offset, const FunctionPtr &slowPathFunction,
    9797    bool compact)
    9898{
     
    214214}
    215215
    216 inline J_JITOperation_ESsiJI appropriateOptimizingGetByIdFunction(GetByIDKind kind)
    217 {
    218     if (kind == GetByIDKind::Normal)
    219         return operationGetByIdOptimize;
    220     return operationTryGetByIdOptimize;
    221 }
    222 
    223 inline J_JITOperation_ESsiJI appropriateGenericGetByIdFunction(GetByIDKind kind)
    224 {
    225     if (kind == GetByIDKind::Normal)
    226         return operationGetById;
    227     return operationTryGetById;
    228 }
    229 
    230 static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo& stubInfo, GetByIDKind kind)
     216static InlineCacheAction tryCacheGetByID(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo& stubInfo)
    231217{
    232218    if (forceICFailure(exec))
     
    277263            && !loadTargetFromProxy) {
    278264            structure->startWatchingPropertyForReplacements(vm, slot.cachedOffset());
    279             repatchByIdSelfAccess(codeBlock, stubInfo, structure, slot.cachedOffset(), appropriateOptimizingGetByIdFunction(kind), true);
     265            repatchByIdSelfAccess(codeBlock, stubInfo, structure, slot.cachedOffset(), operationGetByIdOptimize, true);
    280266            stubInfo.initGetByIdSelf(codeBlock, structure, slot.cachedOffset());
    281267            return RetryCacheLater;
     
    310296            getter = jsDynamicCast<JSFunction*>(slot.getterSetter()->getter());
    311297
    312         if (kind == GetByIDKind::Pure) {
    313             AccessCase::AccessType type;
    314             if (slot.isCacheableValue())
    315                 type = AccessCase::Load;
    316             else if (slot.isUnset())
    317                 type = AccessCase::Miss;
    318             else if (slot.isCacheableGetter())
    319                 type = AccessCase::GetGetter;
    320             else
    321                 RELEASE_ASSERT_NOT_REACHED();
    322 
    323             newCase = AccessCase::tryGet(vm, codeBlock, type, offset, structure, conditionSet, loadTargetFromProxy, slot.watchpointSet());
    324         } else if (!loadTargetFromProxy && getter && AccessCase::canEmitIntrinsicGetter(getter, structure))
     298        if (!loadTargetFromProxy && getter && AccessCase::canEmitIntrinsicGetter(getter, structure))
    325299            newCase = AccessCase::getIntrinsic(vm, codeBlock, getter, slot.cachedOffset(), structure, conditionSet);
    326300        else {
     
    357331}
    358332
    359 void repatchGetByID(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo& stubInfo, GetByIDKind kind)
     333void repatchGetByID(ExecState* exec, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo& stubInfo)
    360334{
    361335    GCSafeConcurrentJITLocker locker(exec->codeBlock()->m_lock, exec->vm().heap);
    362336   
    363     if (tryCacheGetByID(exec, baseValue, propertyName, slot, stubInfo, kind) == GiveUpOnCache)
    364         repatchCall(exec->codeBlock(), stubInfo.callReturnLocation, appropriateGenericGetByIdFunction(kind));
     337    if (tryCacheGetByID(exec, baseValue, propertyName, slot, stubInfo) == GiveUpOnCache)
     338        repatchCall(exec->codeBlock(), stubInfo.callReturnLocation, operationGetById);
    365339}
    366340
     
    937911}
    938912
    939 void resetGetByID(CodeBlock* codeBlock, StructureStubInfo& stubInfo, GetByIDKind kind)
    940 {
    941     repatchCall(codeBlock, stubInfo.callReturnLocation, appropriateOptimizingGetByIdFunction(kind));
     913void resetGetByID(CodeBlock* codeBlock, StructureStubInfo& stubInfo)
     914{
     915    repatchCall(codeBlock, stubInfo.callReturnLocation, operationGetByIdOptimize);
    942916    resetGetByIDCheckAndLoad(stubInfo);
    943917    MacroAssembler::repatchJump(stubInfo.callReturnLocation.jumpAtOffset(stubInfo.patch.deltaCallToJump), stubInfo.callReturnLocation.labelAtOffset(stubInfo.patch.deltaCallToSlowCase));
  • trunk/Source/JavaScriptCore/jit/Repatch.h

    r199073 r199084  
    3636namespace JSC {
    3737
    38 enum class GetByIDKind {
    39     Normal,
    40     Pure
    41 };
    42 
    43 void repatchGetByID(ExecState*, JSValue, const Identifier&, const PropertySlot&, StructureStubInfo&, GetByIDKind);
     38void repatchGetByID(ExecState*, JSValue, const Identifier&, const PropertySlot&, StructureStubInfo&);
    4439void buildGetByIDList(ExecState*, JSValue, const Identifier&, const PropertySlot&, StructureStubInfo&);
    4540void buildGetByIDProtoList(ExecState*, JSValue, const Identifier&, const PropertySlot&, StructureStubInfo&);
     
    5247void linkVirtualFor(ExecState*, CallLinkInfo&);
    5348void linkPolymorphicCall(ExecState*, CallLinkInfo&, CallVariant);
    54 void resetGetByID(CodeBlock*, StructureStubInfo&, GetByIDKind);
     49void resetGetByID(CodeBlock*, StructureStubInfo&);
    5550void resetPutByID(CodeBlock*, StructureStubInfo&);
    5651void resetIn(CodeBlock*, StructureStubInfo&);
  • trunk/Source/JavaScriptCore/jsc.cpp

    r199076 r199084  
    2424
    2525#include "ArrayPrototype.h"
    26 #include "BuiltinExecutables.h"
    2726#include "ButterflyInlines.h"
    2827#include "BytecodeGenerator.h"
     
    3433#include "Exception.h"
    3534#include "ExceptionHelpers.h"
    36 #include "GetterSetter.h"
    3735#include "HeapProfiler.h"
    3836#include "HeapSnapshotBuilder.h"
     
    555553static EncodedJSValue JSC_HOST_CALL functionCreateImpureGetter(ExecState*);
    556554static EncodedJSValue JSC_HOST_CALL functionCreateCustomGetterObject(ExecState*);
    557 static EncodedJSValue JSC_HOST_CALL functionCreateBuiltin(ExecState*);
    558555static EncodedJSValue JSC_HOST_CALL functionSetImpureGetterDelegate(ExecState*);
    559556
     
    576573static EncodedJSValue JSC_HOST_CALL functionHeapSize(ExecState*);
    577574static EncodedJSValue JSC_HOST_CALL functionAddressOf(ExecState*);
    578 static EncodedJSValue JSC_HOST_CALL functionGetGetterSetter(ExecState*);
    579575#ifndef NDEBUG
    580576static EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState*);
     
    748744        addFunction(vm, "gcHeapSize", functionHeapSize, 0);
    749745        addFunction(vm, "addressOf", functionAddressOf, 1);
    750         addFunction(vm, "getGetterSetter", functionGetGetterSetter, 2);
    751746#ifndef NDEBUG
    752747        addFunction(vm, "dumpCallFrame", functionDumpCallFrame, 0);
     
    798793        addFunction(vm, "createImpureGetter", functionCreateImpureGetter, 1);
    799794        addFunction(vm, "createCustomGetterObject", functionCreateCustomGetterObject, 0);
    800         addFunction(vm, "createBuiltin", functionCreateBuiltin, 2);
    801795        addFunction(vm, "setImpureGetterDelegate", functionSetImpureGetterDelegate, 2);
    802796
     
    13391333}
    13401334
    1341 static EncodedJSValue JSC_HOST_CALL functionGetGetterSetter(ExecState* exec)
    1342 {
    1343     JSValue value = exec->argument(0);
    1344     if (!value.isObject())
    1345         return JSValue::encode(jsUndefined());
    1346 
    1347     JSValue property = exec->argument(1);
    1348     if (!property.isString())
    1349         return JSValue::encode(jsUndefined());
    1350 
    1351     Identifier ident = Identifier::fromString(&exec->vm(), property.toString(exec)->value(exec));
    1352 
    1353     PropertySlot slot(value, PropertySlot::InternalMethodType::VMInquiry);
    1354     value.getPropertySlot(exec, ident, slot);
    1355 
    1356     JSValue result;
    1357     if (slot.isCacheableGetter())
    1358         result = slot.getterSetter();
    1359     else
    1360         result = jsNull();
    1361 
    1362     return JSValue::encode(result);
    1363 }
    1364 
    13651335EncodedJSValue JSC_HOST_CALL functionVersion(ExecState*)
    13661336{
     
    17501720        return JSValue::encode(exec->vm().throwException(exec, error));
    17511721    return JSValue::encode(jsUndefined());
    1752 }
    1753 
    1754 EncodedJSValue JSC_HOST_CALL functionCreateBuiltin(ExecState* exec)
    1755 {
    1756     if (exec->argumentCount() < 1 || !exec->argument(0).isString())
    1757         return JSValue::encode(jsUndefined());
    1758 
    1759     String functionText = exec->argument(0).toString(exec)->value(exec);
    1760     if (exec->hadException())
    1761         return JSValue::encode(JSValue());
    1762 
    1763     VM& vm = exec->vm();
    1764     const SourceCode& source = makeSource(functionText);
    1765     JSFunction* func = JSFunction::createBuiltinFunction(vm, BuiltinExecutables::createExecutable(vm, source, Identifier::fromString(&vm, "foo"), ConstructorKind::None, ConstructAbility::CannotConstruct)->link(vm, source), exec->lexicalGlobalObject());
    1766 
    1767     return JSValue::encode(func);
    17681722}
    17691723
  • trunk/Source/JavaScriptCore/llint/LLIntData.cpp

    r199073 r199084  
    145145    STATIC_ASSERT(StringType == 6);
    146146    STATIC_ASSERT(SymbolType == 7);
    147     STATIC_ASSERT(ObjectType == 20);
    148     STATIC_ASSERT(FinalObjectType == 21);
    149     STATIC_ASSERT(JSFunctionType == 23);
     147    STATIC_ASSERT(ObjectType == 21);
     148    STATIC_ASSERT(FinalObjectType == 22);
     149    STATIC_ASSERT(JSFunctionType == 24);
    150150    STATIC_ASSERT(MasqueradesAsUndefined == 1);
    151151    STATIC_ASSERT(ImplementsDefaultHasInstance == 2);
  • trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp

    r199076 r199084  
    546546}
    547547
    548 LLINT_SLOW_PATH_DECL(slow_path_try_get_by_id)
    549 {
    550     LLINT_BEGIN();
    551     CodeBlock* codeBlock = exec->codeBlock();
    552     const Identifier& ident = codeBlock->identifier(pc[3].u.operand);
    553     JSValue baseValue = LLINT_OP_C(2).jsValue();
    554     PropertySlot slot(baseValue, PropertySlot::PropertySlot::InternalMethodType::VMInquiry);
    555 
    556     baseValue.getPropertySlot(exec, ident, slot);
    557 
    558     LLINT_RETURN(slot.getPureResult());
    559 }
    560 
    561548LLINT_SLOW_PATH_DECL(slow_path_get_by_id)
    562549{
  • trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.h

    r199076 r199084  
    7070LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_instanceof);
    7171LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_instanceof_custom);
    72 LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_try_get_by_id);
    7372LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_by_id);
    7473LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_get_arguments_length);
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm

    r199076 r199084  
    327327const StringType = 6
    328328const SymbolType = 7
    329 const ObjectType = 20
    330 const FinalObjectType = 21
    331 const JSFunctionType = 23
     329const ObjectType = 21
     330const FinalObjectType = 22
     331const JSFunctionType = 24
    332332
    333333# Type flags constants.
     
    13021302
    13031303
    1304 _llint_op_try_get_by_id:
    1305     traceExecution()
    1306     callSlowPath(_llint_slow_path_try_get_by_id)
    1307     dispatch(4)
    1308 
    1309 
    13101304_llint_op_del_by_id:
    13111305    traceExecution()
  • trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp

    r199073 r199084  
    3434STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(GetterSetter);
    3535
    36 const ClassInfo GetterSetter::s_info = { "GetterSetter", &Base::s_info, 0, CREATE_METHOD_TABLE(GetterSetter) };
     36const ClassInfo GetterSetter::s_info = { "GetterSetter", 0, 0, CREATE_METHOD_TABLE(GetterSetter) };
    3737
    3838void GetterSetter::visitChildren(JSCell* cell, SlotVisitor& visitor)
  • trunk/Source/JavaScriptCore/runtime/GetterSetter.h

    r199073 r199084  
    4242// that constant is observed to have a non-null setter (or getter) then we can
    4343// constant fold that setter (or getter).
    44 class GetterSetter final : public JSNonFinalObject {
     44class GetterSetter final : public JSCell {
    4545    friend class JIT;
    46     typedef JSNonFinalObject Base;
     46
    4747private:
    4848    GetterSetter(VM& vm, JSGlobalObject* globalObject)
    49         : Base(vm, vm.getterSetterStructure.get())
     49        : JSCell(vm, vm.getterSetterStructure.get())
    5050    {
    5151        m_getter.set(vm, this, globalObject->nullGetterFunction());
     
    5454
    5555public:
    56 
    57     static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | StructureIsImmortal;
     56    typedef JSCell Base;
     57    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
    5858
    5959    static GetterSetter* create(VM& vm, JSGlobalObject* globalObject)
     
    129129    }
    130130
    131     DECLARE_EXPORT_INFO;
    132 
    133     static bool getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot&) { RELEASE_ASSERT_NOT_REACHED(); return false; }
    134     static bool put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&) { RELEASE_ASSERT_NOT_REACHED(); return false; }
    135     static bool defineOwnProperty(JSObject*, ExecState*, PropertyName, const PropertyDescriptor&, bool) { RELEASE_ASSERT_NOT_REACHED(); return false; }
    136     static bool deleteProperty(JSCell*, ExecState*, PropertyName) { RELEASE_ASSERT_NOT_REACHED(); return false; }
     131    DECLARE_INFO;
    137132
    138133private:
  • trunk/Source/JavaScriptCore/runtime/JSType.h

    r199073 r199084  
    3636    SymbolType,
    3737
     38    GetterSetterType,
    3839    CustomGetterSetterType,
    3940    APIValueWrapperType,
     
    7576    DataViewType,
    7677
    77     GetterSetterType,
    7878    GlobalObjectType,
    7979    LexicalEnvironmentType,
  • trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp

    r199073 r199084  
    4040}
    4141
    42 JSValue PropertySlot::getPureResult() const
    43 {
    44     JSValue result;
    45     if (isTaintedByProxy())
    46         result = jsNull();
    47     else if (isCacheableValue())
    48         result = JSValue::decode(m_data.value);
    49     else if (isCacheableGetter())
    50         result = getterSetter();
    51     else if (isUnset())
    52         result = jsUndefined();
    53     else
    54         result = jsNull();
    55    
    56     return result;
    57 }
    58 
    5942} // namespace JSC
  • trunk/Source/JavaScriptCore/runtime/PropertySlot.h

    r199073 r199084  
    9595    JSValue getValue(ExecState*, PropertyName) const;
    9696    JSValue getValue(ExecState*, unsigned propertyName) const;
    97     JSValue getPureResult() const;
    9897
    9998    bool isCacheable() const { return m_cacheability == CachingAllowed && m_offset != invalidOffset; }
  • trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp

    r199073 r199084  
    333333{
    334334    slot.disableCaching();
    335     slot.setIsTaintedByProxy();
     335    if (slot.internalMethodType() != PropertySlot::InternalMethodType::VMInquiry)
     336        slot.setIsTaintedByProxy();
    336337    switch (slot.internalMethodType()) {
    337338    case PropertySlot::InternalMethodType::Get:
Note: See TracChangeset for help on using the changeset viewer.