Changeset 180551 in webkit


Ignore:
Timestamp:
Feb 23, 2015 11:27:24 PM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r180547 and r180550.
https://bugs.webkit.org/show_bug.cgi?id=141957

Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).

Reverted changesets:

"REGRESSION(r179429): Can't type comments in Facebook"
https://bugs.webkit.org/show_bug.cgi?id=141859
http://trac.webkit.org/changeset/180547

"Constructor returning null should construct an object instead
of null"
https://bugs.webkit.org/show_bug.cgi?id=141640
http://trac.webkit.org/changeset/180550

Location:
trunk
Files:
11 deleted
79 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r180550 r180551  
     12015-02-23  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r180547 and r180550.
     4        https://bugs.webkit.org/show_bug.cgi?id=141957
     5
     6        Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).
     7
     8        Reverted changesets:
     9
     10        "REGRESSION(r179429): Can't type comments in Facebook"
     11        https://bugs.webkit.org/show_bug.cgi?id=141859
     12        http://trac.webkit.org/changeset/180547
     13
     14        "Constructor returning null should construct an object instead
     15        of null"
     16        https://bugs.webkit.org/show_bug.cgi?id=141640
     17        http://trac.webkit.org/changeset/180550
     18
    1192015-02-23  Yusuke Suzuki  <utatane.tea@gmail.com>
    220
  • trunk/Source/JavaScriptCore/ChangeLog

    r180550 r180551  
     12015-02-23  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r180547 and r180550.
     4        https://bugs.webkit.org/show_bug.cgi?id=141957
     5
     6        Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).
     7
     8        Reverted changesets:
     9
     10        "REGRESSION(r179429): Can't type comments in Facebook"
     11        https://bugs.webkit.org/show_bug.cgi?id=141859
     12        http://trac.webkit.org/changeset/180547
     13
     14        "Constructor returning null should construct an object instead
     15        of null"
     16        https://bugs.webkit.org/show_bug.cgi?id=141640
     17        http://trac.webkit.org/changeset/180550
     18
    1192015-02-23  Yusuke Suzuki  <utatane.tea@gmail.com>
    220
  • trunk/Source/JavaScriptCore/JavaScriptCore.order

    r180550 r180551  
    638638_JSGlobalContextCreateInGroup
    639639__ZN3JSC14JSGlobalObjectC1ERNS_2VMEPNS_9StructureEPKNS_23GlobalObjectMethodTableE
     640__ZN3JSC14JSGlobalObject28javaScriptExperimentsEnabledEPKS0_
    640641_JSGlobalContextRetain
    641642_JSStringCreateWithCFString
     
    13491350__ZN3JSC11PostfixNode11emitResolveERNS_17BytecodeGeneratorEPNS_10RegisterIDE
    13501351__ZN3JSC17BytecodeGenerator7emitIncEPNS_10RegisterIDE
     1352__ZN3JSC14jsIsObjectTypeEPNS_9ExecStateENS_7JSValueE
    13511353__ZN3JSC6JSCell11getCallDataEPS0_RNS_8CallDataE
    13521354__ZN3JSC8JSObject16getPropertyNamesEPS0_PNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
     
    16651667_cti_op_stricteq
    16661668_cti_op_jtrue
    1667 _cti_op_is_object_or_null
     1669_cti_op_is_object
    16681670__ZN3JSC8JSString12toThisObjectEPNS_6JSCellEPNS_9ExecStateE
    16691671__ZN3JSC12StringObjectC1ERNS_2VMEPNS_9StructureE
     
    29632965__ZN3WTF15BinarySemaphore4waitEd
    29642966__ZN3WTF15BinarySemaphore6signalEv
     2967_JSValueIsObject
    29652968__ZN3JSCL19arrayProtoFuncShiftEPNS_9ExecStateE
    29662969__ZN3JSC5shiftILNS_7JSArray14ShiftCountModeE0EEEvPNS_9ExecStateEPNS_8JSObjectEjjjj
     
    33893392__ZN3JSC8JSObject20ensureContiguousSlowERNS_2VMENS0_22DoubleToContiguousModeE
    33903393_operationMakeRope3
     3394_operationIsObject
    33913395__ZN3JSC3DFG12slowPathCallINS_22AbstractMacroAssemblerINS_12X86AssemblerEE4JumpEPFxPNS_9ExecStateExPNS_7JSArrayEENS0_11NoResultTagENS_12X86Registers10RegisterIDESE_SE_EEN3WTF10PassOwnPtrINS0_17SlowPathGeneratorEEET_PNS0_14SpeculativeJITET0_T1_T2_T3_T4_NS0_18SpillRegistersModeE
    33923396__ZN3JSC3DFG14SpeculativeJIT13callOperationEPFxPNS_9ExecStateExPNS_7JSArrayEENS_12X86Registers10RegisterIDES9_S9_
     
    48954899_llint_slow_path_instanceof
    48964900_llint_slow_path_typeof
    4897 _llint_slow_path_is_object_or_null
     4901_llint_slow_path_is_object
    48984902_llint_slow_path_is_function
    48994903_llint_slow_path_in
     
    50335037_llint_op_mod
    50345038_llint_op_typeof
    5035 _llint_op_is_object_or_null
     5039_llint_op_is_object
    50365040_llint_op_is_function
    50375041_llint_op_in
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj

    r180547 r180551  
    16121612    <ClInclude Include="..\runtime\RegExpPrototype.h" />
    16131613    <ClInclude Include="..\runtime\Reject.h" />
    1614     <ClInclude Include="..\runtime\RuntimeFlags.h" />
    16151614    <ClInclude Include="..\runtime\SamplingCounter.h" />
    16161615    <ClInclude Include="..\runtime\SetConstructor.h" />
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters

    r180547 r180551  
    28632863      <Filter>runtime</Filter>
    28642864    </ClInclude>
    2865     <ClInclude Include="..\runtime\RuntimeFlags.h">
    2866       <Filter>runtime</Filter>
    2867     </ClInclude>
    28682865    <ClInclude Include="..\runtime\SamplingCounter.h">
    28692866      <Filter>runtime</Filter>
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r180547 r180551  
    950950                705B41B11A6E501E00716757 /* SymbolPrototype.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 705B41A91A6E501E00716757 /* SymbolPrototype.cpp */; };
    951951                705B41B21A6E501E00716757 /* SymbolPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 705B41AA1A6E501E00716757 /* SymbolPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
    952                 70B0A9D11A9B66460001306A /* RuntimeFlags.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B0A9D01A9B66200001306A /* RuntimeFlags.h */; settings = {ATTRIBUTES = (Private, ); }; };
    953952                7C008CD2186F8A9300955C24 /* JSPromiseFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */; };
    954953                7C008CD3186F8A9300955C24 /* JSPromiseFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C008CD1186F8A9300955C24 /* JSPromiseFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    26302629                705B41A91A6E501E00716757 /* SymbolPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SymbolPrototype.cpp; sourceTree = "<group>"; };
    26312630                705B41AA1A6E501E00716757 /* SymbolPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SymbolPrototype.h; sourceTree = "<group>"; };
    2632                 70B0A9D01A9B66200001306A /* RuntimeFlags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RuntimeFlags.h; sourceTree = "<group>"; };
    26332631                7C008CD0186F8A9300955C24 /* JSPromiseFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 0; path = JSPromiseFunctions.cpp; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.cpp; };
    26342632                7C008CD1186F8A9300955C24 /* JSPromiseFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSPromiseFunctions.h; sourceTree = "<group>"; };
     
    45394537                                0F6B1CB81861244C00845D97 /* RegisterPreservationMode.h */,
    45404538                                0FB7F39115ED8E3800F167B2 /* Reject.h */,
    4541                                 70B0A9D01A9B66200001306A /* RuntimeFlags.h */,
    45424539                                0F7700911402FF280078EB39 /* SamplingCounter.cpp */,
    45434540                                0F77008E1402FDD60078EB39 /* SamplingCounter.h */,
     
    62796276                                0FF42748158EBE91004CB9FF /* udis86_syn.h in Headers */,
    62806277                                0FF42749158EBE91004CB9FF /* udis86_types.h in Headers */,
    6281                                 70B0A9D11A9B66460001306A /* RuntimeFlags.h in Headers */,
    62826278                                A7E5AB391799E4B200D2833D /* UDis86Disassembler.h in Headers */,
    62836279                                A7A8AF4117ADB5F3005AB174 /* Uint16Array.h in Headers */,
  • trunk/Source/JavaScriptCore/bytecode/BytecodeList.json

    r180550 r180551  
    5454            { "name" : "op_is_string", "length" : 3 },
    5555            { "name" : "op_is_object", "length" : 3 },
    56             { "name" : "op_is_object_or_null", "length" : 3 },
    5756            { "name" : "op_is_function", "length" : 3 },
    5857            { "name" : "op_in", "length" : 4 },
  • trunk/Source/JavaScriptCore/bytecode/BytecodeUseDef.h

    r180550 r180551  
    134134    case op_is_string:
    135135    case op_is_object:
    136     case op_is_object_or_null:
    137136    case op_is_function:
    138137    case op_to_number:
     
    334333    case op_is_string:
    335334    case op_is_object:
    336     case op_is_object_or_null:
    337335    case op_is_function:
    338336    case op_in:
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r180550 r180551  
    10071007        case op_is_object: {
    10081008            printUnaryOp(out, exec, location, it, "is_object");
    1009             break;
    1010         }
    1011         case op_is_object_or_null: {
    1012             printUnaryOp(out, exec, location, it, "is_object_or_null");
    10131009            break;
    10141010        }
  • trunk/Source/JavaScriptCore/bytecode/PutByIdStatus.cpp

    r180550 r180551  
    361361        // If the structure corresponds to something that isn't an object, then give up, since
    362362        // we don't want to be adding properties to strings.
    363         if (!structure->typeInfo().isObject())
     363        if (structure->typeInfo().type() == StringType)
    364364            return PutByIdStatus(TakesSlowPath);
    365365   
  • trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

    r180550 r180551  
    10971097            if (value == "object") {
    10981098                rewindUnaryOp();
    1099                 emitOpcode(op_is_object_or_null);
     1099                emitOpcode(op_is_object);
    11001100                instructions().append(dst->index());
    11011101                instructions().append(srcIndex);
     
    19421942
    19431943        size_t begin = instructions().size();
     1944        emitOpcode(op_jtrue);
     1945        instructions().append(isObjectRegister->index());
     1946        instructions().append(isObjectLabel->bind(begin, instructions().size()));
     1947
     1948        emitOpcode(op_is_function);
     1949        instructions().append(isObjectRegister->index());
     1950        instructions().append(src->index());
     1951
     1952        begin = instructions().size();
    19441953        emitOpcode(op_jtrue);
    19451954        instructions().append(isObjectRegister->index());
  • trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h

    r180550 r180551  
    801801    case IsString:
    802802    case IsObject:
    803     case IsObjectOrNull:
    804803    case IsFunction: {
    805804        JSValue child = forNode(node->child1()).value();
     
    823822                break;
    824823            case IsObject:
    825                 setConstant(node, jsBoolean(child.isObject()));
    826                 break;
    827             case IsObjectOrNull:
    828824                if (child.isNull() || !child.isObject()) {
    829825                    setConstant(node, jsBoolean(child.isNull()));
  • trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

    r180550 r180551  
    28862886            set(VirtualRegister(currentInstruction[1].u.operand), addToGraph(IsObject, value));
    28872887            NEXT_OPCODE(op_is_object);
    2888         }
    2889 
    2890         case op_is_object_or_null: {
    2891             Node* value = get(VirtualRegister(currentInstruction[2].u.operand));
    2892             set(VirtualRegister(currentInstruction[1].u.operand), addToGraph(IsObjectOrNull, value));
    2893             NEXT_OPCODE(op_is_object_or_null);
    28942888        }
    28952889
  • trunk/Source/JavaScriptCore/dfg/DFGCapabilities.cpp

    r180550 r180551  
    133133    case op_is_string:
    134134    case op_is_object:
    135     case op_is_object_or_null:
    136135    case op_is_function:
    137136    case op_not:
  • trunk/Source/JavaScriptCore/dfg/DFGClobberize.h

    r180550 r180551  
    138138    case IsNumber:
    139139    case IsString:
    140     case IsObject:
    141140    case LogicalNot:
    142141    case CheckInBounds:
     
    342341        return;
    343342       
    344     case IsObjectOrNull:
     343    case IsObject:
    345344        read(MiscFields);
    346         def(HeapLocation(IsObjectOrNullLoc, MiscFields, node->child1()), node);
     345        def(HeapLocation(IsObjectLoc, MiscFields, node->child1()), node);
    347346        return;
    348347       
  • trunk/Source/JavaScriptCore/dfg/DFGDoesGC.cpp

    r180550 r180551  
    136136    case IsString:
    137137    case IsObject:
    138     case IsObjectOrNull:
    139138    case IsFunction:
    140139    case TypeOf:
  • trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp

    r180550 r180551  
    10901090            break;
    10911091
    1092         case IsObject:
    1093             if (node->child1()->shouldSpeculateObject()) {
    1094                 m_insertionSet.insertNode(
    1095                     m_indexInBlock, SpecNone, Phantom, node->origin,
    1096                     Edge(node->child1().node(), ObjectUse));
    1097                 m_graph.convertToConstant(node, jsBoolean(true));
    1098                 observeUseKindOnNode<ObjectUse>(node);
    1099             }
    1100             break;
    1101 
    11021092        case GetEnumerableLength: {
    11031093            fixEdge<CellUse>(node->child1());
     
    12411231        case IsBoolean:
    12421232        case IsNumber:
    1243         case IsObjectOrNull:
     1233        case IsObject:
    12441234        case IsFunction:
    12451235        case CreateArguments:
  • trunk/Source/JavaScriptCore/dfg/DFGHeapLocation.cpp

    r180550 r180551  
    6161        return;
    6262       
    63     case IsObjectOrNullLoc:
    64         out.print("IsObjectOrNullLoc");
     63    case IsObjectLoc:
     64        out.print("IsObjectLoc");
    6565        return;
    66 
     66       
    6767    case IsFunctionLoc:
    6868        out.print("IsFunctionLoc");
  • trunk/Source/JavaScriptCore/dfg/DFGHeapLocation.h

    r180550 r180551  
    5151    InvalidationPointLoc,
    5252    IsFunctionLoc,
    53     IsObjectOrNullLoc,
     53    IsObjectLoc,
    5454    MyArgumentByValLoc,
    5555    MyArgumentsLengthLoc,
  • trunk/Source/JavaScriptCore/dfg/DFGNodeType.h

    r180550 r180551  
    251251    macro(IsString, NodeResultBoolean) \
    252252    macro(IsObject, NodeResultBoolean) \
    253     macro(IsObjectOrNull, NodeResultBoolean) \
    254253    macro(IsFunction, NodeResultBoolean) \
    255254    macro(TypeOf, NodeResultJS) \
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp

    r180550 r180551  
    809809}
    810810
    811 size_t JIT_OPERATION operationIsObjectOrNull(ExecState* exec, EncodedJSValue value)
    812 {
    813     return jsIsObjectTypeOrNull(exec, JSValue::decode(value));
     811size_t JIT_OPERATION operationIsObject(ExecState* exec, EncodedJSValue value)
     812{
     813    return jsIsObjectType(exec, JSValue::decode(value));
    814814}
    815815
  • trunk/Source/JavaScriptCore/dfg/DFGOperations.h

    r180550 r180551  
    103103JSCell* JIT_OPERATION operationNewFunctionNoCheck(ExecState*, JSScope*, JSCell*) WTF_INTERNAL;
    104104double JIT_OPERATION operationFModOnInts(int32_t, int32_t) WTF_INTERNAL;
    105 size_t JIT_OPERATION operationIsObjectOrNull(ExecState*, EncodedJSValue) WTF_INTERNAL;
     105size_t JIT_OPERATION operationIsObject(ExecState*, EncodedJSValue) WTF_INTERNAL;
    106106size_t JIT_OPERATION operationIsFunction(EncodedJSValue) WTF_INTERNAL;
    107107JSCell* JIT_OPERATION operationTypeOf(ExecState*, JSCell*) WTF_INTERNAL;
  • trunk/Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp

    r180550 r180551  
    359359        case IsString:
    360360        case IsObject:
    361         case IsObjectOrNull:
    362361        case IsFunction: {
    363362            changed |= setPrediction(SpecBoolean);
  • trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h

    r180550 r180551  
    211211    case IsString:
    212212    case IsObject:
    213     case IsObjectOrNull:
    214213    case IsFunction:
    215214    case TypeOf:
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r180550 r180551  
    11581158        if (m_state.forNode(node->child1()).m_type & ~SpecObject) {
    11591159            speculationCheck(
    1160                 BadType, JSValueSource::unboxedCell(op1GPR), node->child1(), branchNotObject(op1GPR));
     1160                BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
     1161                m_jit.branchStructurePtr(
     1162                    MacroAssembler::Equal,
     1163                    MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1164                    m_jit.vm()->stringStructure.get()));
    11611165        }
    11621166        if (m_state.forNode(node->child2()).m_type & ~SpecObject) {
    11631167            speculationCheck(
    1164                 BadType, JSValueSource::unboxedCell(op2GPR), node->child2(), branchNotObject(op2GPR));
     1168                BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
     1169                m_jit.branchStructurePtr(
     1170                    MacroAssembler::Equal,
     1171                    MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1172                    m_jit.vm()->stringStructure.get()));
    11651173        }
    11661174    } else {
     1175        GPRTemporary structure(this);
     1176        GPRTemporary temp(this);
     1177        GPRReg structureGPR = structure.gpr();
     1178
     1179        m_jit.emitLoadStructure(op1GPR, structureGPR, temp.gpr());
    11671180        if (m_state.forNode(node->child1()).m_type & ~SpecObject) {
    11681181            speculationCheck(
    11691182                BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
    1170                 branchNotObject(op1GPR));
     1183                m_jit.branchPtr(
     1184                    MacroAssembler::Equal,
     1185                    structureGPR,
     1186                    MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    11711187        }
    11721188        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
     
    11761192                MacroAssembler::TrustedImm32(MasqueradesAsUndefined)));
    11771193
     1194        m_jit.emitLoadStructure(op2GPR, structureGPR, temp.gpr());
    11781195        if (m_state.forNode(node->child2()).m_type & ~SpecObject) {
    11791196            speculationCheck(
    11801197                BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
    1181                 branchNotObject(op2GPR));
     1198                m_jit.branchPtr(
     1199                    MacroAssembler::Equal,
     1200                    structureGPR,
     1201                    MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    11821202        }
    11831203        speculationCheck(BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
     
    39443964        MacroAssembler::Equal, leftGPR, rightRegs.payloadGPR()));
    39453965   
    3946     fastFalse.append(branchNotString(rightRegs.payloadGPR()));
     3966    fastFalse.append(m_jit.branchStructurePtr(
     3967        MacroAssembler::NotEqual,
     3968        MacroAssembler::Address(rightRegs.payloadGPR(), JSCell::structureIDOffset()),
     3969        m_jit.vm()->stringStructure.get()));
    39473970   
    39483971    compileStringEquality(
     
    39924015    JITCompiler::JumpList notString;
    39934016    notString.append(branchNotCell(rightRegs));
    3994     notString.append(branchNotString(rightRegs.payloadGPR()));
     4017    notString.append(m_jit.branchStructurePtr(
     4018        MacroAssembler::NotEqual,
     4019        MacroAssembler::Address(rightRegs.payloadGPR(), JSCell::structureIDOffset()),
     4020        m_jit.vm()->stringStructure.get()));
    39954021   
    39964022    speculateStringIdentAndLoadStorage(notStringVarEdge, rightRegs.payloadGPR(), rightTempGPR);
     
    44354461        m_jit.load32(JITCompiler::Address(op1GPR, JSCell::structureIDOffset()), resultGPR);
    44364462        JITCompiler::Jump isString = m_jit.branchStructurePtr(
    4437             JITCompiler::Equal,
     4463            JITCompiler::Equal, 
    44384464            resultGPR,
    44394465            m_jit.vm()->stringStructure.get());
    4440 
     4466       
    44414467        speculateStringObjectForStructure(node->child1(), resultGPR);
    44424468       
     
    44644490        JITCompiler::Jump done;
    44654491        if (node->child1()->prediction() & SpecString) {
    4466             JITCompiler::Jump needCall = branchNotString(op1GPR);
     4492            JITCompiler::Jump needCall = m_jit.branchStructurePtr(
     4493                JITCompiler::NotEqual,
     4494                JITCompiler::Address(op1GPR, JSCell::structureIDOffset()),
     4495                m_jit.vm()->stringStructure.get());
    44674496            m_jit.move(op1GPR, resultGPR);
    44684497            done = m_jit.jump();
     
    46884717    GPRReg gpr = operand.gpr();
    46894718    DFG_TYPE_CHECK(
    4690         JSValueSource::unboxedCell(gpr), edge, SpecObject, branchNotObject(gpr));
     4719        JSValueSource::unboxedCell(gpr), edge, SpecObject, m_jit.branchStructurePtr(
     4720            MacroAssembler::Equal,
     4721            MacroAssembler::Address(gpr, JSCell::structureIDOffset()),
     4722            m_jit.vm()->stringStructure.get()));
    46914723}
    46924724
     
    47204752    GPRReg gpr = operand.jsValueRegs().payloadGPR();
    47214753    DFG_TYPE_CHECK(
    4722         operand.jsValueRegs(), edge, (~SpecCell) | SpecObject, branchNotObject(gpr));
     4754        operand.jsValueRegs(), edge, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     4755            MacroAssembler::Equal,
     4756            MacroAssembler::Address(gpr, JSCell::structureIDOffset()),
     4757            m_jit.vm()->stringStructure.get()));
    47234758    MacroAssembler::Jump done = m_jit.jump();
    47244759    notCell.link(&m_jit);
     
    47344769{
    47354770    DFG_TYPE_CHECK(
    4736         JSValueSource::unboxedCell(cell), edge, SpecString | ~SpecCell, branchNotString(cell));
     4771        JSValueSource::unboxedCell(cell), edge, SpecString | ~SpecCell,
     4772        m_jit.branchStructurePtr(
     4773            MacroAssembler::NotEqual,
     4774            MacroAssembler::Address(cell, JSCell::structureIDOffset()),
     4775            m_jit.vm()->stringStructure.get()));
    47374776}
    47384777
     
    48394878    GPRReg cell = operand.jsValueRegs().payloadGPR();
    48404879   
    4841     JITCompiler::Jump notString = branchNotString(cell);
     4880    JITCompiler::Jump notString = m_jit.branchStructurePtr(
     4881        MacroAssembler::NotEqual,
     4882        MacroAssembler::Address(cell, JSCell::structureIDOffset()),
     4883        m_jit.vm()->stringStructure.get());
    48424884   
    48434885    speculateStringIdentAndLoadStorage(edge, cell, tempGPR);
     
    51155157        addBranch(branchNotCell(op1Regs), data->fallThrough.block);
    51165158       
    5117         addBranch(branchNotString(op1Regs.payloadGPR()), data->fallThrough.block);
     5159        addBranch(
     5160            m_jit.branchStructurePtr(
     5161                MacroAssembler::NotEqual,
     5162                MacroAssembler::Address(op1Regs.payloadGPR(), JSCell::structureIDOffset()),
     5163                m_jit.vm()->stringStructure.get()),
     5164            data->fallThrough.block);
    51185165       
    51195166        emitSwitchCharStringJump(data, op1Regs.payloadGPR(), tempGPR);
     
    54005447        addBranch(branchNotCell(op1Regs), data->fallThrough.block);
    54015448       
    5402         addBranch(branchNotString(op1Regs.payloadGPR()), data->fallThrough.block);
     5449        addBranch(
     5450            m_jit.branchStructurePtr(
     5451                MacroAssembler::NotEqual,
     5452                MacroAssembler::Address(op1Regs.payloadGPR(), JSCell::structureIDOffset()),
     5453                m_jit.vm()->stringStructure.get()),
     5454            data->fallThrough.block);
    54035455       
    54045456        emitSwitchStringOnString(data, op1Regs.payloadGPR());
     
    54485500        branch.jump.linkTo(m_jit.blockHeads()[branch.destination->index], &m_jit);
    54495501    }
    5450 }
    5451 
    5452 JITCompiler::Jump SpeculativeJIT::branchIsObject(GPRReg cellGPR)
    5453 {
    5454     return m_jit.branch8(
    5455         MacroAssembler::AboveOrEqual,
    5456         MacroAssembler::Address(cellGPR, JSCell::typeInfoTypeOffset()),
    5457         MacroAssembler::TrustedImm32(ObjectType));
    5458 }
    5459 
    5460 JITCompiler::Jump SpeculativeJIT::branchNotObject(GPRReg cellGPR)
    5461 {
    5462     return m_jit.branch8(
    5463         MacroAssembler::Below,
    5464         MacroAssembler::Address(cellGPR, JSCell::typeInfoTypeOffset()),
    5465         MacroAssembler::TrustedImm32(ObjectType));
    5466 }
    5467 
    5468 JITCompiler::Jump SpeculativeJIT::branchIsString(GPRReg cellGPR)
    5469 {
    5470     return m_jit.branchStructurePtr(
    5471         MacroAssembler::Equal,
    5472         MacroAssembler::Address(cellGPR, JSCell::structureIDOffset()),
    5473         m_jit.vm()->stringStructure.get());
    5474 }
    5475 
    5476 JITCompiler::Jump SpeculativeJIT::branchNotString(GPRReg cellGPR)
    5477 {
    5478     return m_jit.branchStructurePtr(
    5479         MacroAssembler::NotEqual,
    5480         MacroAssembler::Address(cellGPR, JSCell::structureIDOffset()),
    5481         m_jit.vm()->stringStructure.get());
    54825502}
    54835503
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h

    r180550 r180551  
    21922192    JITCompiler::Jump branchIsOther(JSValueRegs, GPRReg tempGPR);
    21932193    JITCompiler::Jump branchNotOther(JSValueRegs, GPRReg tempGPR);
    2194     JITCompiler::Jump branchIsObject(GPRReg cellGPR);
    2195     JITCompiler::Jump branchNotObject(GPRReg cellGPR);
    2196     JITCompiler::Jump branchIsString(GPRReg cellGPR);
    2197     JITCompiler::Jump branchNotString(GPRReg cellGPR);
    21982194   
    21992195    void moveTrueTo(GPRReg);
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp

    r180550 r180551  
    12011201    if (masqueradesAsUndefinedWatchpointIsStillValid()) {
    12021202        DFG_TYPE_CHECK(
    1203             JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, branchNotObject(op1GPR));
     1203            JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, m_jit.branchPtr(
     1204                MacroAssembler::Equal,
     1205                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1206                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    12041207        DFG_TYPE_CHECK(
    1205             JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, branchNotObject(op2GPR));
     1208            JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, m_jit.branchPtr(
     1209                MacroAssembler::Equal,
     1210                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1211                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    12061212    } else {
    12071213        DFG_TYPE_CHECK(
    1208             JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, branchNotObject(op1GPR));
    1209         speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
     1214            JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, m_jit.branchPtr(
     1215                MacroAssembler::Equal,
     1216                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1217                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
     1218        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
    12101219            m_jit.branchTest8(
    12111220                MacroAssembler::NonZero,
    1212                 MacroAssembler::Address(op1GPR, JSCell::typeInfoFlagsOffset()),
     1221                MacroAssembler::Address(op1GPR, JSCell::typeInfoFlagsOffset()), 
    12131222                MacroAssembler::TrustedImm32(MasqueradesAsUndefined)));
    12141223
    12151224        DFG_TYPE_CHECK(
    1216             JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, branchNotObject(op2GPR));
    1217         speculationCheck(BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
     1225            JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, m_jit.branchPtr(
     1226                MacroAssembler::Equal,
     1227                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1228                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
     1229        speculationCheck(BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
    12181230            m_jit.branchTest8(
    1219                 MacroAssembler::NonZero,
    1220                 MacroAssembler::Address(op2GPR, JSCell::typeInfoFlagsOffset()),
     1231                MacroAssembler::NonZero, 
     1232                MacroAssembler::Address(op2GPR, JSCell::typeInfoFlagsOffset()), 
    12211233                MacroAssembler::TrustedImm32(MasqueradesAsUndefined)));
    12221234    }
     
    12511263    if (masqueradesAsUndefinedWatchpointValid) {
    12521264        DFG_TYPE_CHECK(
    1253             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1265            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchPtr(
     1266                MacroAssembler::Equal,
     1267                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1268                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    12541269    } else {
    12551270        DFG_TYPE_CHECK(
    1256             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1271            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchPtr(
     1272                MacroAssembler::Equal,
     1273                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1274                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    12571275        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), leftChild,
    12581276            m_jit.branchTest8(
     
    12701288    if (masqueradesAsUndefinedWatchpointValid) {
    12711289        DFG_TYPE_CHECK(
    1272             JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild, (~SpecCell) | SpecObject, branchNotObject(op2PayloadGPR));
     1290            JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild, (~SpecCell) | SpecObject,
     1291            m_jit.branchPtr(
     1292                MacroAssembler::Equal,
     1293                MacroAssembler::Address(op2PayloadGPR, JSCell::structureIDOffset()),
     1294                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    12731295    } else {
    12741296        DFG_TYPE_CHECK(
    1275             JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild, (~SpecCell) | SpecObject, branchNotObject(op2PayloadGPR));
     1297            JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild, (~SpecCell) | SpecObject,
     1298            m_jit.branchPtr(
     1299                MacroAssembler::Equal,
     1300                MacroAssembler::Address(op2PayloadGPR, JSCell::structureIDOffset()),
     1301                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    12761302        speculationCheck(BadType, JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild,
    12771303            m_jit.branchTest8(
     
    13301356    if (masqueradesAsUndefinedWatchpointValid) {
    13311357        DFG_TYPE_CHECK(
    1332             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1358            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchPtr(
     1359                MacroAssembler::Equal,
     1360                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1361                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    13331362    } else {
    13341363        DFG_TYPE_CHECK(
    1335             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1364            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchPtr(
     1365                MacroAssembler::Equal,
     1366                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1367                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    13361368        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), leftChild,
    13371369            m_jit.branchTest8(
     
    13491381        DFG_TYPE_CHECK(
    13501382            JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild, (~SpecCell) | SpecObject,
    1351             branchNotObject(op2PayloadGPR));
     1383            m_jit.branchPtr(
     1384                MacroAssembler::Equal,
     1385                MacroAssembler::Address(op2PayloadGPR, JSCell::structureIDOffset()),
     1386                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    13521387    } else {
    13531388        DFG_TYPE_CHECK(
    13541389            JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild, (~SpecCell) | SpecObject,
    1355             branchNotObject(op2PayloadGPR));
     1390            m_jit.branchPtr(
     1391                MacroAssembler::Equal,
     1392                MacroAssembler::Address(op2PayloadGPR, JSCell::structureIDOffset()),
     1393                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    13561394        speculationCheck(BadType, JSValueRegs(op2TagGPR, op2PayloadGPR), rightChild,
    13571395            m_jit.branchTest8(
     
    14371475        DFG_TYPE_CHECK(
    14381476            JSValueRegs(valueTagGPR, valuePayloadGPR), nodeUse, (~SpecCell) | SpecObject,
    1439             branchNotObject(valuePayloadGPR));
     1477            m_jit.branchPtr(
     1478                MacroAssembler::Equal,
     1479                MacroAssembler::Address(valuePayloadGPR, JSCell::structureIDOffset()),
     1480                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    14401481    } else {
     1482        m_jit.loadPtr(MacroAssembler::Address(valuePayloadGPR, JSCell::structureIDOffset()), structureGPR);
     1483
    14411484        DFG_TYPE_CHECK(
    14421485            JSValueRegs(valueTagGPR, valuePayloadGPR), nodeUse, (~SpecCell) | SpecObject,
    1443             branchNotObject(valuePayloadGPR));
     1486            m_jit.branchPtr(
     1487                MacroAssembler::Equal,
     1488                structureGPR,
     1489                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    14441490
    14451491        MacroAssembler::Jump isNotMasqueradesAsUndefined =
     
    14491495                MacroAssembler::TrustedImm32(MasqueradesAsUndefined));
    14501496
    1451         m_jit.loadPtr(MacroAssembler::Address(valuePayloadGPR, JSCell::structureIDOffset()), structureGPR);
    14521497        speculationCheck(BadType, JSValueRegs(valueTagGPR, valuePayloadGPR), nodeUse,
    14531498            m_jit.branchPtr(
     
    15591604        DFG_TYPE_CHECK(
    15601605            JSValueRegs(valueTagGPR, valuePayloadGPR), nodeUse, (~SpecCell) | SpecObject,
    1561             branchNotObject(valuePayloadGPR));
     1606            m_jit.branchPtr(
     1607                MacroAssembler::Equal,
     1608                MacroAssembler::Address(valuePayloadGPR, JSCell::structureIDOffset()),
     1609                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    15621610    } else {
     1611        m_jit.loadPtr(MacroAssembler::Address(valuePayloadGPR, JSCell::structureIDOffset()), scratchGPR);
     1612
    15631613        DFG_TYPE_CHECK(
    15641614            JSValueRegs(valueTagGPR, valuePayloadGPR), nodeUse, (~SpecCell) | SpecObject,
    1565             branchNotObject(valuePayloadGPR));
     1615            m_jit.branchPtr(
     1616                MacroAssembler::Equal,
     1617                scratchGPR,
     1618                MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get())));
    15661619
    15671620        JITCompiler::Jump isNotMasqueradesAsUndefined = m_jit.branchTest8(
     
    15701623            TrustedImm32(MasqueradesAsUndefined));
    15711624
    1572         m_jit.loadPtr(MacroAssembler::Address(valuePayloadGPR, JSCell::structureIDOffset()), scratchGPR);
    15731625        speculationCheck(BadType, JSValueRegs(valueTagGPR, valuePayloadGPR), nodeUse,
    15741626            m_jit.branchPtr(
     
    31143166        } else {
    31153167            MacroAssembler::Jump alreadyPrimitive = branchNotCell(op1.jsValueRegs());
    3116             MacroAssembler::Jump notPrimitive = branchIsObject(op1PayloadGPR);
     3168            MacroAssembler::Jump notPrimitive = m_jit.branchPtr(MacroAssembler::NotEqual, MacroAssembler::Address(op1PayloadGPR, JSCell::structureIDOffset()), MacroAssembler::TrustedImmPtr(m_jit.vm()->stringStructure.get()));
    31173169           
    31183170            alreadyPrimitive.link(&m_jit);
     
    31443196            if (node->child1()->prediction() & SpecString) {
    31453197                JITCompiler::Jump slowPath1 = branchNotCell(op1.jsValueRegs());
    3146                 JITCompiler::Jump slowPath2 = branchNotString(op1PayloadGPR);
     3198                JITCompiler::Jump slowPath2 = m_jit.branchPtr(
     3199                    JITCompiler::NotEqual,
     3200                    JITCompiler::Address(op1PayloadGPR, JSCell::structureIDOffset()),
     3201                    TrustedImmPtr(m_jit.vm()->stringStructure.get()));
    31473202                m_jit.move(op1PayloadGPR, resultGPR);
    31483203                done = m_jit.jump();
     
    41534208    case IsObject: {
    41544209        JSValueOperand value(this, node->child1());
    4155         GPRTemporary result(this, Reuse, value, TagWord);
    4156 
    4157         JITCompiler::Jump isNotCell = branchNotCell(value.jsValueRegs());
    4158 
    4159         m_jit.compare8(JITCompiler::AboveOrEqual,
    4160             JITCompiler::Address(value.payloadGPR(), JSCell::typeInfoTypeOffset()),
    4161             TrustedImm32(ObjectType),
    4162             result.gpr());
    4163         JITCompiler::Jump done = m_jit.jump();
    4164 
    4165         isNotCell.link(&m_jit);
    4166         m_jit.move(TrustedImm32(0), result.gpr());
    4167 
    4168         done.link(&m_jit);
    4169         booleanResult(result.gpr(), node);
    4170         break;
    4171     }
    4172 
    4173     case IsObjectOrNull: {
    4174         JSValueOperand value(this, node->child1());
    41754210        GPRReg valueTagGPR = value.tagGPR();
    41764211        GPRReg valuePayloadGPR = value.payloadGPR();
     
    41784213        GPRReg resultGPR = result.gpr();
    41794214        flushRegisters();
    4180         callOperation(operationIsObjectOrNull, resultGPR, valueTagGPR, valuePayloadGPR);
     4215        callOperation(operationIsObject, resultGPR, valueTagGPR, valuePayloadGPR);
    41814216        booleanResult(result.gpr(), node);
    41824217        break;
     
    42134248
    42144249        if (!node->child1()->shouldSpeculateObject() || node->child1().useKind() == StringUse) {
    4215             JITCompiler::Jump notString = branchNotString(payloadGPR);
     4250            JITCompiler::Jump notString = m_jit.branch8(
     4251                JITCompiler::NotEqual,
     4252                JITCompiler::Address(payloadGPR, JSCell::typeInfoTypeOffset()),
     4253                TrustedImm32(StringType));
    42164254            if (node->child1().useKind() == StringUse)
    42174255                DFG_TYPE_CHECK(JSValueRegs(tagGPR, payloadGPR), node->child1(), SpecString, notString);
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r180550 r180551  
    13071307    if (masqueradesAsUndefinedWatchpointIsStillValid()) {
    13081308        DFG_TYPE_CHECK(
    1309             JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, branchNotObject(op1GPR));
     1309            JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, m_jit.branchStructurePtr(
     1310                MacroAssembler::Equal,
     1311                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1312                m_jit.vm()->stringStructure.get()));
    13101313        DFG_TYPE_CHECK(
    1311             JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, branchNotObject(op2GPR));
     1314            JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, m_jit.branchStructurePtr(
     1315                MacroAssembler::Equal,
     1316                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1317                m_jit.vm()->stringStructure.get()));
    13121318    } else {
    13131319        DFG_TYPE_CHECK(
    1314             JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, branchNotObject(op1GPR));
     1320            JSValueSource::unboxedCell(op1GPR), node->child1(), SpecObject, m_jit.branchStructurePtr(
     1321                MacroAssembler::Equal,
     1322                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1323                m_jit.vm()->stringStructure.get()));
    13151324        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), node->child1(),
    13161325            m_jit.branchTest8(
     
    13201329
    13211330        DFG_TYPE_CHECK(
    1322             JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, branchNotObject(op2GPR));
     1331            JSValueSource::unboxedCell(op2GPR), node->child2(), SpecObject, m_jit.branchStructurePtr(
     1332                MacroAssembler::Equal,
     1333                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1334                m_jit.vm()->stringStructure.get()));
    13231335        speculationCheck(BadType, JSValueSource::unboxedCell(op2GPR), node->child2(),
    13241336            m_jit.branchTest8(
     
    13531365    if (masqueradesAsUndefinedWatchpointValid) {
    13541366        DFG_TYPE_CHECK(
    1355             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1367            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchStructurePtr(
     1368                MacroAssembler::Equal,
     1369                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1370                m_jit.vm()->stringStructure.get()));
    13561371    } else {
    13571372        DFG_TYPE_CHECK(
    1358             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1373            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchStructurePtr(
     1374                MacroAssembler::Equal,
     1375                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1376                m_jit.vm()->stringStructure.get()));
    13591377        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), leftChild,
    13601378            m_jit.branchTest8(
     
    13711389    if (masqueradesAsUndefinedWatchpointValid) {
    13721390        DFG_TYPE_CHECK(
    1373             JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, branchNotObject(op2GPR));
     1391            JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1392                MacroAssembler::Equal,
     1393                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1394                m_jit.vm()->stringStructure.get()));
    13741395    } else {
    13751396        DFG_TYPE_CHECK(
    1376             JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, branchNotObject(op2GPR));
     1397            JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1398                MacroAssembler::Equal,
     1399                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1400                m_jit.vm()->stringStructure.get()));
    13771401        speculationCheck(BadType, JSValueRegs(op2GPR), rightChild,
    13781402            m_jit.branchTest8(
     
    14311455    if (masqueradesAsUndefinedWatchpointValid) {
    14321456        DFG_TYPE_CHECK(
    1433             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1457            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchStructurePtr(
     1458                MacroAssembler::Equal,
     1459                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1460                m_jit.vm()->stringStructure.get()));
    14341461    } else {
    14351462        DFG_TYPE_CHECK(
    1436             JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, branchNotObject(op1GPR));
     1463            JSValueSource::unboxedCell(op1GPR), leftChild, SpecObject, m_jit.branchStructurePtr(
     1464                MacroAssembler::Equal,
     1465                MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     1466                m_jit.vm()->stringStructure.get()));
    14371467        speculationCheck(BadType, JSValueSource::unboxedCell(op1GPR), leftChild,
    14381468            m_jit.branchTest8(
     
    14491479    if (masqueradesAsUndefinedWatchpointValid) {
    14501480        DFG_TYPE_CHECK(
    1451             JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, branchNotObject(op2GPR));
     1481            JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1482                MacroAssembler::Equal,
     1483                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1484                m_jit.vm()->stringStructure.get()));
    14521485    } else {
    14531486        DFG_TYPE_CHECK(
    1454             JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, branchNotObject(op2GPR));
     1487            JSValueRegs(op2GPR), rightChild, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1488                MacroAssembler::Equal,
     1489                MacroAssembler::Address(op2GPR, JSCell::structureIDOffset()),
     1490                m_jit.vm()->stringStructure.get()));
    14551491        speculationCheck(BadType, JSValueRegs(op2GPR), rightChild,
    14561492            m_jit.branchTest8(
     
    15741610    if (masqueradesAsUndefinedWatchpointValid) {
    15751611        DFG_TYPE_CHECK(
    1576             JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, branchNotObject(valueGPR));
     1612            JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1613                MacroAssembler::Equal,
     1614                MacroAssembler::Address(valueGPR, JSCell::structureIDOffset()),
     1615                m_jit.vm()->stringStructure.get()));
    15771616    } else {
    15781617        DFG_TYPE_CHECK(
    1579             JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, branchNotObject(valueGPR));
     1618            JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1619                MacroAssembler::Equal,
     1620                MacroAssembler::Address(valueGPR, JSCell::structureIDOffset()),
     1621                m_jit.vm()->stringStructure.get()));
    15801622
    15811623        MacroAssembler::Jump isNotMasqueradesAsUndefined =
     
    17181760    if (masqueradesAsUndefinedWatchpointIsStillValid()) {
    17191761        DFG_TYPE_CHECK(
    1720             JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, branchNotObject(valueGPR));
     1762            JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1763                MacroAssembler::Equal,
     1764                MacroAssembler::Address(valueGPR, JSCell::structureIDOffset()),
     1765                m_jit.vm()->stringStructure.get()));               
    17211766    } else {
    17221767        DFG_TYPE_CHECK(
    1723             JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, branchNotObject(valueGPR));
     1768            JSValueRegs(valueGPR), nodeUse, (~SpecCell) | SpecObject, m_jit.branchStructurePtr(
     1769                MacroAssembler::Equal,
     1770                MacroAssembler::Address(valueGPR, JSCell::structureIDOffset()),
     1771                m_jit.vm()->stringStructure.get()));
    17241772
    17251773        JITCompiler::Jump isNotMasqueradesAsUndefined = m_jit.branchTest8(
     
    32323280       
    32333281        MacroAssembler::Jump alreadyPrimitive = branchNotCell(JSValueRegs(op1GPR));
    3234         MacroAssembler::Jump notPrimitive = branchIsObject(op1GPR);
     3282        MacroAssembler::Jump notPrimitive = m_jit.branchStructurePtr(
     3283            MacroAssembler::NotEqual,
     3284            MacroAssembler::Address(op1GPR, JSCell::structureIDOffset()),
     3285            m_jit.vm()->stringStructure.get());
    32353286       
    32363287        alreadyPrimitive.link(&m_jit);
     
    32573308            if (node->child1()->prediction() & SpecString) {
    32583309                JITCompiler::Jump slowPath1 = branchNotCell(JSValueRegs(op1GPR));
    3259                 JITCompiler::Jump slowPath2 = branchNotString(op1GPR);
     3310                JITCompiler::Jump slowPath2 = m_jit.branchStructurePtr(
     3311                    JITCompiler::NotEqual,
     3312                    JITCompiler::Address(op1GPR, JSCell::structureIDOffset()),
     3313                    m_jit.vm()->stringStructure.get());
    32603314                m_jit.move(op1GPR, resultGPR);
    32613315                done = m_jit.jump();
     
    42094263        break;
    42104264    }
    4211 
     4265       
    42124266    case IsObject: {
    4213         JSValueOperand value(this, node->child1());
    4214         GPRTemporary result(this, Reuse, value);
    4215 
    4216         JITCompiler::Jump isNotCell = branchNotCell(value.jsValueRegs());
    4217 
    4218         m_jit.compare8(JITCompiler::AboveOrEqual,
    4219             JITCompiler::Address(value.gpr(), JSCell::typeInfoTypeOffset()),
    4220             TrustedImm32(ObjectType),
    4221             result.gpr());
    4222         m_jit.or32(TrustedImm32(ValueFalse), result.gpr());
    4223         JITCompiler::Jump done = m_jit.jump();
    4224 
    4225         isNotCell.link(&m_jit);
    4226         m_jit.move(TrustedImm32(ValueFalse), result.gpr());
    4227 
    4228         done.link(&m_jit);
    4229         jsValueResult(result.gpr(), node, DataFormatJSBoolean);
    4230         break;
    4231     }
    4232 
    4233     case IsObjectOrNull: {
    42344267        JSValueOperand value(this, node->child1());
    42354268        GPRReg valueGPR = value.gpr();
     
    42374270        GPRReg resultGPR = result.gpr();
    42384271        flushRegisters();
    4239         callOperation(operationIsObjectOrNull, resultGPR, valueGPR);
     4272        callOperation(operationIsObject, resultGPR, valueGPR);
    42404273        m_jit.or32(TrustedImm32(ValueFalse), resultGPR);
    42414274        jsValueResult(result.gpr(), node, DataFormatJSBoolean);
     
    42714304
    42724305        if (!node->child1()->shouldSpeculateObject() || node->child1().useKind() == StringUse) {
    4273             JITCompiler::Jump notString = branchNotString(valueGPR);
     4306            JITCompiler::Jump notString = m_jit.branch8(
     4307                JITCompiler::NotEqual,
     4308                JITCompiler::Address(valueGPR, JSCell::typeInfoTypeOffset()),
     4309                TrustedImm32(StringType));
    42744310            if (node->child1().useKind() == StringUse)
    42754311                DFG_TYPE_CHECK(JSValueSource(valueGPR), node->child1(), SpecString, notString);
     
    50435079        else if (cachedTypeLocation->m_lastSeenType == TypeString) {
    50445080            MacroAssembler::Jump isNotCell = branchNotCell(JSValueRegs(valueGPR));
    5045             jumpToEnd.append(branchIsString(valueGPR));
     5081            jumpToEnd.append(m_jit.branch8(MacroAssembler::Equal, MacroAssembler::Address(valueGPR, JSCell::typeInfoTypeOffset()), TrustedImm32(StringType)));
    50465082            isNotCell.link(&m_jit);
    50475083        }
  • trunk/Source/JavaScriptCore/ftl/FTLCapabilities.cpp

    r180550 r180551  
    157157    case IsString:
    158158    case IsObject:
    159     case IsObjectOrNull:
    160159    case IsFunction:
    161160    case CheckHasInstance:
  • trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp

    r180550 r180551  
    761761        case IsObject:
    762762            compileIsObject();
    763             break;
    764         case IsObjectOrNull:
    765             compileIsObjectOrNull();
    766763            break;
    767764        case IsFunction:
     
    31003097            LValue isStringPredicate;
    31013098            if (m_node->child1()->prediction() & SpecString) {
    3102                 isStringPredicate = isString(value);
     3099                isStringPredicate = m_out.equal(
     3100                    m_out.load32(value, m_heaps.JSCell_structureID),
     3101                    m_out.constInt32(vm().stringStructure->id()));
    31033102            } else
    31043103                isStringPredicate = m_out.booleanFalse;
     
    42064205        setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
    42074206    }
    4208 
     4207   
    42094208    void compileIsObject()
    42104209    {
    4211         LValue value = lowJSValue(m_node->child1());
    4212 
    4213         LBasicBlock isCellCase = FTL_NEW_BLOCK(m_out, ("IsObject cell case"));
    4214         LBasicBlock continuation = FTL_NEW_BLOCK(m_out, ("IsObject continuation"));
    4215 
    4216         ValueFromBlock notCellResult = m_out.anchor(m_out.booleanFalse);
    4217         m_out.branch(isCell(value), unsure(isCellCase), unsure(continuation));
    4218 
    4219         LBasicBlock lastNext = m_out.appendTo(isCellCase, continuation);
    4220         ValueFromBlock cellResult = m_out.anchor(isObject(value));
    4221         m_out.jump(continuation);
    4222 
    4223         m_out.appendTo(continuation, lastNext);
    4224         setBoolean(m_out.phi(m_out.boolean, notCellResult, cellResult));
    4225     }
    4226 
    4227     void compileIsObjectOrNull()
    4228     {
    42294210        LValue pointerResult = vmCall(
    4230             m_out.operation(operationIsObjectOrNull), m_callFrame, lowJSValue(m_node->child1()));
     4211            m_out.operation(operationIsObject), m_callFrame, lowJSValue(m_node->child1()));
    42314212        setBoolean(m_out.notNull(pointerResult));
    42324213    }
     
    51505131        }
    51515132       
    5152         FTL_TYPE_CHECK(jsValueValue(cell), edge, filter, isNotObject(cell));
     5133        LValue structureID = m_out.load32(cell, m_heaps.JSCell_structureID);
     5134        FTL_TYPE_CHECK(
     5135            jsValueValue(cell), edge, filter,
     5136            m_out.equal(structureID, m_out.constInt32(vm().stringStructure->id())));
    51535137        speculate(
    51545138            BadType, jsValueValue(cell), edge.node(),
     
    54605444        case CellCaseSpeculatesObject:
    54615445            FTL_TYPE_CHECK(
    5462                 jsValueValue(value), edge, (~SpecCell) | SpecObject, isNotObject(value));
     5446                jsValueValue(value), edge, (~SpecCell) | SpecObject,
     5447                m_out.equal(
     5448                    m_out.load32(value, m_heaps.JSCell_structureID),
     5449                    m_out.constInt32(vm().stringStructure->id())));
    54635450            break;
    54645451        }
     
    62866273    LValue isObject(LValue cell)
    62876274    {
    6288         return m_out.aboveOrEqual(
    6289             m_out.load8(cell, m_heaps.JSCell_typeInfoType),
    6290             m_out.constInt8(ObjectType));
    6291     }
    6292 
    6293     LValue isNotObject(LValue cell)
    6294     {
    6295         return m_out.below(
    6296             m_out.load8(cell, m_heaps.JSCell_typeInfoType),
    6297             m_out.constInt8(ObjectType));
    6298     }
    6299 
    6300     LValue isNotString(LValue cell)
    6301     {
    63026275        return m_out.notEqual(
    63036276            m_out.load32(cell, m_heaps.JSCell_structureID),
     
    63056278    }
    63066279   
     6280    LValue isNotString(LValue cell)
     6281    {
     6282        return isObject(cell);
     6283    }
     6284   
    63076285    LValue isString(LValue cell)
    63086286    {
     
    63106288            m_out.load32(cell, m_heaps.JSCell_structureID),
    63116289            m_out.constInt32(vm().stringStructure->id()));
     6290    }
     6291   
     6292    LValue isNotObject(LValue cell)
     6293    {
     6294        return isString(cell);
    63126295    }
    63136296   
     
    65086491    void speculateNonNullObject(Edge edge, LValue cell)
    65096492    {
    6510         FTL_TYPE_CHECK(jsValueValue(cell), edge, SpecObject, isNotObject(cell));
     6493        FTL_TYPE_CHECK(
     6494            jsValueValue(cell), edge, SpecObject,
     6495            m_out.equal(
     6496                m_out.load32(cell, m_heaps.JSCell_structureID),
     6497                m_out.constInt32(vm().stringStructure->id())));
    65116498        if (masqueradesAsUndefinedWatchpointIsStillValid())
    65126499            return;
  • trunk/Source/JavaScriptCore/jit/JIT.cpp

    r180550 r180551  
    186186        DEFINE_SLOW_OP(greatereq)
    187187        DEFINE_SLOW_OP(is_function)
    188         DEFINE_SLOW_OP(is_object_or_null)
     188        DEFINE_SLOW_OP(is_object)
    189189        DEFINE_SLOW_OP(typeof)
    190190
     
    226226        DEFINE_OP(op_is_number)
    227227        DEFINE_OP(op_is_string)
    228         DEFINE_OP(op_is_object)
    229228        DEFINE_OP(op_jeq_null)
    230229        DEFINE_OP(op_jfalse)
  • trunk/Source/JavaScriptCore/jit/JIT.h

    r180550 r180551  
    308308        void emitLoadDouble(int index, FPRegisterID value);
    309309        void emitLoadInt32ToDouble(int index, FPRegisterID value);
    310         Jump emitJumpIfCellObject(RegisterID cellReg);
    311310        Jump emitJumpIfCellNotObject(RegisterID cellReg);
    312311
     
    491490        void emit_op_is_number(Instruction*);
    492491        void emit_op_is_string(Instruction*);
    493         void emit_op_is_object(Instruction*);
    494492        void emit_op_jeq_null(Instruction*);
    495493        void emit_op_jfalse(Instruction*);
  • trunk/Source/JavaScriptCore/jit/JITInlines.h

    r180550 r180551  
    686686}
    687687
    688 ALWAYS_INLINE JIT::Jump JIT::emitJumpIfCellObject(RegisterID cellReg)
    689 {
    690     return branch8(AboveOrEqual, Address(cellReg, JSCell::typeInfoTypeOffset()), TrustedImm32(ObjectType));
    691 }
    692 
    693688ALWAYS_INLINE JIT::Jump JIT::emitJumpIfCellNotObject(RegisterID cellReg)
    694689{
  • trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp

    r180550 r180551  
    227227}
    228228
    229 void JIT::emit_op_is_object(Instruction* currentInstruction)
    230 {
    231     int dst = currentInstruction[1].u.operand;
    232     int value = currentInstruction[2].u.operand;
    233 
    234     emitGetVirtualRegister(value, regT0);
    235     Jump isNotCell = emitJumpIfNotJSCell(regT0);
    236 
    237     compare8(AboveOrEqual, Address(regT0, JSCell::typeInfoTypeOffset()), TrustedImm32(ObjectType), regT0);
    238     emitTagAsBoolImmediate(regT0);
    239     Jump done = jump();
    240 
    241     isNotCell.link(this);
    242     move(TrustedImm32(ValueFalse), regT0);
    243 
    244     done.link(this);
    245     emitPutVirtualRegister(dst);
    246 }
    247 
    248229void JIT::emit_op_tear_off_arguments(Instruction* currentInstruction)
    249230{
     
    280261   
    281262    Jump isImm = emitJumpIfNotJSCell(regT0);
    282     addSlowCase(emitJumpIfCellObject(regT0));
     263    addSlowCase(branchStructure(NotEqual,
     264        Address(regT0, JSCell::structureIDOffset()),
     265        m_vm->stringStructure.get()));
    283266    isImm.link(this);
    284267
  • trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp

    r180550 r180551  
    332332}
    333333
    334 void JIT::emit_op_is_object(Instruction* currentInstruction)
    335 {
    336     int dst = currentInstruction[1].u.operand;
    337     int value = currentInstruction[2].u.operand;
    338 
    339     emitLoad(value, regT1, regT0);
    340     Jump isNotCell = branch32(NotEqual, regT1, TrustedImm32(JSValue::CellTag));
    341 
    342     compare8(AboveOrEqual, Address(regT0, JSCell::typeInfoTypeOffset()), TrustedImm32(ObjectType), regT0);
    343     Jump done = jump();
    344 
    345     isNotCell.link(this);
    346     move(TrustedImm32(0), regT0);
    347 
    348     done.link(this);
    349     emitStoreBool(dst, regT0);
    350 }
    351 
    352334void JIT::emit_op_tear_off_arguments(Instruction* currentInstruction)
    353335{
     
    370352
    371353    Jump isImm = branch32(NotEqual, regT1, TrustedImm32(JSValue::CellTag));
    372     addSlowCase(emitJumpIfCellObject(regT0));
     354    addSlowCase(branchPtr(NotEqual, Address(regT0, JSCell::structureIDOffset()), TrustedImmPtr(m_vm->stringStructure.get())));
    373355    isImm.link(this);
    374356
     
    643625    addSlowCase(branch32(Below, regT1, TrustedImm32(JSValue::LowestTag)));
    644626
    645     // Jump to a slow case if both are strings or symbols (non object).
     627    // Jump to a slow case if both are strings.
    646628    Jump notCell = branch32(NotEqual, regT1, TrustedImm32(JSValue::CellTag));
    647     Jump firstIsObject = emitJumpIfCellObject(regT0);
    648     addSlowCase(emitJumpIfCellNotObject(regT2));
     629    Jump firstNotString = branchPtr(NotEqual, Address(regT0, JSCell::structureIDOffset()), TrustedImmPtr(m_vm->stringStructure.get()));
     630    addSlowCase(branchPtr(Equal, Address(regT2, JSCell::structureIDOffset()), TrustedImmPtr(m_vm->stringStructure.get())));
    649631    notCell.link(this);
    650     firstIsObject.link(this);
     632    firstNotString.link(this);
    651633
    652634    // Simply compare the payloads.
  • trunk/Source/JavaScriptCore/jsc.cpp

    r180547 r180551  
    576576    }
    577577
    578     static RuntimeFlags javaScriptRuntimeFlags(const JSGlobalObject*) { return RuntimeFlags::createAllEnabled(); }
     578    static bool javaScriptExperimentsEnabled(const JSGlobalObject*) { return true; }
    579579
    580580protected:
     
    664664
    665665const ClassInfo GlobalObject::s_info = { "global", &JSGlobalObject::s_info, &globalObjectTable, CREATE_METHOD_TABLE(GlobalObject) };
    666 const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, 0, &shouldInterruptScriptBeforeTimeout };
     666const GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, 0, &shouldInterruptScriptBeforeTimeout };
    667667
    668668
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm

    r180550 r180551  
    984984
    985985
    986 _llint_op_is_object_or_null:
    987     traceExecution()
    988     callSlowPath(_slow_path_is_object_or_null)
     986_llint_op_is_object:
     987    traceExecution()
     988    callSlowPath(_slow_path_is_object)
    989989    dispatch(3)
     990
    990991
    991992_llint_op_is_function:
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm

    r180550 r180551  
    953953    bineq t2, t3, .slow
    954954    bib t2, LowestTag, .slow
    955     bineq t2, CellTag, .notStringOrSymbol
    956     bbaeq JSCell::m_type[t0], ObjectType, .notStringOrSymbol
    957     bbb JSCell::m_type[t1], ObjectType, .slow
    958 .notStringOrSymbol:
     955    bineq t2, CellTag, .notString
     956    bbneq JSCell::m_type[t0], StringType, .notString
     957    bbeq JSCell::m_type[t1], StringType, .slow
     958.notString:
    959959    loadi 4[PC], t2
    960960    equalityOperation(t0, t1, t0)
     
    13301330    dispatch(3)
    13311331.opIsStringNotCell:
    1332     storep 0, PayloadOffset[cfr, t2, 8]
    1333     dispatch(3)
    1334 
    1335 
    1336 _llint_op_is_object:
    1337     traceExecution()
    1338     loadi 8[PC], t1
    1339     loadi 4[PC], t2
    1340     loadConstantOrVariable(t1, t0, t3)
    1341     storei BooleanTag, TagOffset[cfr, t2, 8]
    1342     bineq t0, CellTag, .opIsObjectNotCell
    1343     cbaeq JSCell::m_type[t3], ObjectType, t1
    1344     storei t1, PayloadOffset[cfr, t2, 8]
    1345     dispatch(3)
    1346 .opIsObjectNotCell:
    13471332    storep 0, PayloadOffset[cfr, t2, 8]
    13481333    dispatch(3)
     
    19921977    loadConstantOrVariable(t2, t1, t0)
    19931978    bineq t1, CellTag, .opToPrimitiveIsImm
    1994     bbaeq JSCell::m_type[t0], ObjectType, .opToPrimitiveSlowCase
     1979    bbneq JSCell::m_type[t0], StringType, .opToPrimitiveSlowCase
    19951980.opToPrimitiveIsImm:
    19961981    storei t1, TagOffset[cfr, t3, 8]
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

    r180550 r180551  
    12071207
    12081208
    1209 _llint_op_is_object:
    1210     traceExecution()
    1211     loadisFromInstruction(2, t1)
    1212     loadisFromInstruction(1, t2)
    1213     loadConstantOrVariable(t1, t0)
    1214     btqnz t0, tagMask, .opIsObjectNotCell
    1215     cbaeq JSCell::m_type[t0], ObjectType, t1
    1216     orq ValueFalse, t1
    1217     storeq t1, [cfr, t2, 8]
    1218     dispatch(3)
    1219 .opIsObjectNotCell:
    1220     storeq ValueFalse, [cfr, t2, 8]
    1221     dispatch(3)
    1222 
    1223 
    12241209macro loadPropertyAtVariableOffset(propertyOffsetAsInt, objectAndStorage, value)
    12251210    bilt propertyOffsetAsInt, firstOutOfLineOffset, .isInline
     
    18501835    loadConstantOrVariable(t2, t0)
    18511836    btqnz t0, tagMask, .opToPrimitiveIsImm
    1852     bbaeq JSCell::m_type[t0], ObjectType, .opToPrimitiveSlowCase
     1837    bbneq JSCell::m_type[t0], StringType, .opToPrimitiveSlowCase
    18531838.opToPrimitiveIsImm:
    18541839    storeq t0, [cfr, t3, 8]
  • trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp

    r180550 r180551  
    456456}
    457457
    458 SLOW_PATH_DECL(slow_path_is_object_or_null)
    459 {
    460     BEGIN();
    461     RETURN(jsBoolean(jsIsObjectTypeOrNull(exec, OP_C(2).jsValue())));
     458SLOW_PATH_DECL(slow_path_is_object)
     459{
     460    BEGIN();
     461    RETURN(jsBoolean(jsIsObjectType(exec, OP_C(2).jsValue())));
    462462}
    463463
  • trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h

    r180550 r180551  
    215215SLOW_PATH_HIDDEN_DECL(slow_path_typeof);
    216216SLOW_PATH_HIDDEN_DECL(slow_path_is_object);
    217 SLOW_PATH_HIDDEN_DECL(slow_path_is_object_or_null);
    218217SLOW_PATH_HIDDEN_DECL(slow_path_is_function);
    219218SLOW_PATH_HIDDEN_DECL(slow_path_in);
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp

    r180547 r180551  
    146146const ClassInfo JSGlobalObject::s_info = { "GlobalObject", &Base::s_info, &globalObjectTable, CREATE_METHOD_TABLE(JSGlobalObject) };
    147147
    148 const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, 0, &shouldInterruptScriptBeforeTimeout };
     148const GlobalObjectMethodTable JSGlobalObject::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, 0, &shouldInterruptScriptBeforeTimeout };
    149149
    150150/* Source for JSGlobalObject.lut.h
     
    174174    , m_weakRandom(Options::forceWeakRandomSeed() ? Options::forcedWeakRandomSeed() : static_cast<unsigned>(randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0)))
    175175    , m_evalEnabled(true)
    176     , m_runtimeFlags()
     176    , m_experimentsEnabled(false)
    177177    , m_consoleClient(nullptr)
    178178    , m_globalObjectMethodTable(globalObjectMethodTable ? globalObjectMethodTable : &s_globalObjectMethodTable)
     
    374374
    375375    FOR_EACH_SIMPLE_BUILTIN_TYPE_WITH_CONSTRUCTOR(PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE)
    376 
    377     if (m_runtimeFlags.isSymbolEnabled())
    378         putDirectWithoutTransition(vm, vm.propertyNames->Symbol, symbolConstructor, DontEnum);
    379 
     376   
    380377#undef PUT_CONSTRUCTOR_FOR_SIMPLE_TYPE
    381378    PrototypeMap& prototypeMap = vm.prototypeMap;
     
    440437    JSConsole* consoleObject = JSConsole::create(vm, m_consoleStructure.get());
    441438    putDirectWithoutTransition(vm, Identifier(exec, "console"), consoleObject, DontEnum);
    442 
     439   
    443440    resetPrototype(vm, prototype());
    444441}
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r180547 r180551  
    3232#include "JSWeakObjectMapRefInternal.h"
    3333#include "NumberPrototype.h"
    34 #include "RuntimeFlags.h"
    3534#include "SpecialPointer.h"
    3635#include "StringPrototype.h"
     
    8887
    8988#define DEFINE_STANDARD_BUILTIN(macro, upperName, lowerName) macro(upperName, lowerName, lowerName, JS ## upperName, upperName)
    90 
    91 #define FOR_EACH_EXPERIMENTAL_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \
    92     macro(Symbol, symbol, symbolObject, SymbolObject, Symbol) \
    93 
     89   
    9490#define FOR_EACH_SIMPLE_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \
    9591    macro(Set, set, set, JSSet, Set) \
     
    9793    macro(Date, date, date, DateInstance, Date) \
    9894    macro(String, string, stringObject, StringObject, String) \
     95    macro(Symbol, symbol, symbolObject, SymbolObject, Symbol) \
    9996    macro(Boolean, boolean, booleanObject, BooleanObject, Boolean) \
    10097    macro(Number, number, numberObject, NumberObject, Number) \
     
    105102#define FOR_EACH_SIMPLE_BUILTIN_TYPE(macro) \
    106103    FOR_EACH_SIMPLE_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \
    107     FOR_EACH_EXPERIMENTAL_BUILTIN_TYPE_WITH_CONSTRUCTOR(macro) \
    108104    DEFINE_STANDARD_BUILTIN(macro, ArrayIterator, arrayIterator) \
    109105    DEFINE_STANDARD_BUILTIN(macro, ArgumentsIterator, argumentsIterator) \
     
    136132    ShouldInterruptScriptFunctionPtr shouldInterruptScript;
    137133
    138     typedef RuntimeFlags (*JavaScriptRuntimeFlagsFunctionPtr)(const JSGlobalObject*);
    139     JavaScriptRuntimeFlagsFunctionPtr javaScriptRuntimeFlags;
     134    typedef bool (*JavaScriptExperimentsEnabledFunctionPtr)(const JSGlobalObject*);
     135    JavaScriptExperimentsEnabledFunctionPtr javaScriptExperimentsEnabled;
    140136
    141137    typedef void (*QueueTaskToEventLoopFunctionPtr)(const JSGlobalObject*, PassRefPtr<Microtask>);
     
    278274    bool m_evalEnabled;
    279275    String m_evalDisabledErrorMessage;
    280     RuntimeFlags m_runtimeFlags;
     276    bool m_experimentsEnabled;
    281277    ConsoleClient* m_consoleClient;
    282278
     
    314310        Base::finishCreation(vm);
    315311        structure()->setGlobalObject(vm, this);
    316         m_runtimeFlags = m_globalObjectMethodTable->javaScriptRuntimeFlags(this);
     312        m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this);
    317313        init(vm);
    318314        setGlobalThis(vm, JSProxy::create(vm, JSProxy::createStructure(vm, this, prototype(), PureForwardingProxyType), this));
     
    323319        Base::finishCreation(vm);
    324320        structure()->setGlobalObject(vm, this);
    325         m_runtimeFlags = m_globalObjectMethodTable->javaScriptRuntimeFlags(this);
     321        m_experimentsEnabled = m_globalObjectMethodTable->javaScriptExperimentsEnabled(this);
    326322        init(vm);
    327323        setGlobalThis(vm, thisValue);
     
    551547    static bool shouldInterruptScript(const JSGlobalObject*) { return true; }
    552548    static bool shouldInterruptScriptBeforeTimeout(const JSGlobalObject*) { return false; }
    553     static RuntimeFlags javaScriptRuntimeFlags(const JSGlobalObject*) { return RuntimeFlags(); }
     549    static bool javaScriptExperimentsEnabled(const JSGlobalObject*) { return false; }
    554550
    555551    void queueMicrotask(PassRefPtr<Microtask>);
  • trunk/Source/JavaScriptCore/runtime/Operations.cpp

    r180550 r180551  
    8686}
    8787
    88 bool jsIsObjectTypeOrNull(CallFrame* callFrame, JSValue v)
     88bool jsIsObjectType(CallFrame* callFrame, JSValue v)
    8989{
    9090    if (!v.isCell())
  • trunk/Source/JavaScriptCore/runtime/Operations.h

    r180550 r180551  
    3232JSValue jsTypeStringForValue(CallFrame*, JSValue);
    3333JSValue jsTypeStringForValue(VM&, JSGlobalObject*, JSValue);
    34 bool jsIsObjectTypeOrNull(CallFrame*, JSValue);
     34bool jsIsObjectType(CallFrame*, JSValue);
    3535bool jsIsFunctionType(JSValue);
    3636
  • trunk/Source/WebCore/ChangeLog

    r180549 r180551  
     12015-02-23  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r180547 and r180550.
     4        https://bugs.webkit.org/show_bug.cgi?id=141957
     5
     6        Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).
     7
     8        Reverted changesets:
     9
     10        "REGRESSION(r179429): Can't type comments in Facebook"
     11        https://bugs.webkit.org/show_bug.cgi?id=141859
     12        http://trac.webkit.org/changeset/180547
     13
     14        "Constructor returning null should construct an object instead
     15        of null"
     16        https://bugs.webkit.org/show_bug.cgi?id=141640
     17        http://trac.webkit.org/changeset/180550
     18
    1192015-02-23  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebCore/WebCore.order

    r180547 r180551  
    33363336__ZN7WebCore15JSDOMWindowBase14finishCreationERN3JSC2VMEPNS_16JSDOMWindowShellE
    33373337__ZN7WebCore17JSDOMGlobalObject14finishCreationERN3JSC2VMEPNS1_8JSObjectE
     3338__ZN7WebCore15JSDOMWindowBase28javaScriptExperimentsEnabledEPKN3JSC14JSGlobalObjectE
    33383339__ZN7WebCore12gcControllerEv
    33393340__ZN7WebCore12GCController18garbageCollectSoonEv
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r180547 r180551  
    1913919139    <ClInclude Include="..\ForwardingHeaders\runtime\RegExp.h" />
    1914019140    <ClInclude Include="..\ForwardingHeaders\runtime\RegExpObject.h" />
    19141     <ClInclude Include="..\ForwardingHeaders\runtime\RuntimeFlags.h" />
    1914219141    <ClInclude Include="..\ForwardingHeaders\runtime\StorageBarrier.h" />
    1914319142    <ClInclude Include="..\ForwardingHeaders\runtime\StringPrototype.h" />
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters

    r180547 r180551  
    1163211632      <Filter>ForwardingHeaders\runtime</Filter>
    1163311633    </ClInclude>
    11634     <ClInclude Include="..\ForwardingHeaders\runtime\RuntimeFlags.h">
    11635       <Filter>ForwardingHeaders\runtime</Filter>
    11636     </ClInclude>
    1163711634    <ClInclude Include="..\ForwardingHeaders\runtime\StringObject.h">
    1163811635      <Filter>ForwardingHeaders\runtime</Filter>
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp

    r180547 r180551  
    5757const ClassInfo JSDOMWindowBase::s_info = { "Window", &JSDOMGlobalObject::s_info, 0, CREATE_METHOD_TABLE(JSDOMWindowBase) };
    5858
    59 const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = { &shouldAllowAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout };
     59const GlobalObjectMethodTable JSDOMWindowBase::s_globalObjectMethodTable = { &shouldAllowAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout };
    6060
    6161JSDOMWindowBase::JSDOMWindowBase(VM& vm, Structure* structure, PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell)
     
    170170}
    171171
    172 RuntimeFlags JSDOMWindowBase::javaScriptRuntimeFlags(const JSGlobalObject* object)
     172bool JSDOMWindowBase::javaScriptExperimentsEnabled(const JSGlobalObject* object)
    173173{
    174174    const JSDOMWindowBase* thisObject = static_cast<const JSDOMWindowBase*>(object);
    175175    Frame* frame = thisObject->impl().frame();
    176176    if (!frame)
    177         return RuntimeFlags();
    178     return frame->settings().javaScriptRuntimeFlags();
     177        return false;
     178    return frame->settings().javaScriptExperimentsEnabled();
    179179}
    180180
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h

    r180547 r180551  
    6565        static bool shouldInterruptScript(const JSC::JSGlobalObject*);
    6666        static bool shouldInterruptScriptBeforeTimeout(const JSC::JSGlobalObject*);
    67         static JSC::RuntimeFlags javaScriptRuntimeFlags(const JSC::JSGlobalObject*);
     67        static bool javaScriptExperimentsEnabled(const JSC::JSGlobalObject*);
    6868        static void queueTaskToEventLoop(const JSC::JSGlobalObject*, PassRefPtr<JSC::Microtask>);
    6969       
  • trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp

    r180547 r180551  
    4444const ClassInfo JSWorkerGlobalScopeBase::s_info = { "WorkerGlobalScope", &JSDOMGlobalObject::s_info, 0, CREATE_METHOD_TABLE(JSWorkerGlobalScopeBase) };
    4545
    46 const GlobalObjectMethodTable JSWorkerGlobalScopeBase::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptRuntimeFlags, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout };
     46const GlobalObjectMethodTable JSWorkerGlobalScopeBase::s_globalObjectMethodTable = { &allowsAccessFrom, &supportsProfiling, &supportsRichSourceInfo, &shouldInterruptScript, &javaScriptExperimentsEnabled, &queueTaskToEventLoop, &shouldInterruptScriptBeforeTimeout };
    4747
    4848JSWorkerGlobalScopeBase::JSWorkerGlobalScopeBase(JSC::VM& vm, JSC::Structure* structure, PassRefPtr<WorkerGlobalScope> impl)
     
    9393}
    9494
    95 RuntimeFlags JSWorkerGlobalScopeBase::javaScriptRuntimeFlags(const JSGlobalObject* object)
     95bool JSWorkerGlobalScopeBase::javaScriptExperimentsEnabled(const JSGlobalObject* object)
    9696{
    97     return JSGlobalObject::javaScriptRuntimeFlags(object);
     97    return JSGlobalObject::javaScriptExperimentsEnabled(object);
    9898}
    9999
  • trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h

    r180547 r180551  
    5858        static bool shouldInterruptScript(const JSC::JSGlobalObject*);
    5959        static bool shouldInterruptScriptBeforeTimeout(const JSC::JSGlobalObject*);
    60         static JSC::RuntimeFlags javaScriptRuntimeFlags(const JSC::JSGlobalObject*);
     60        static bool javaScriptExperimentsEnabled(const JSC::JSGlobalObject*);
    6161        static void queueTaskToEventLoop(const JSC::JSGlobalObject*, PassRefPtr<JSC::Microtask>);
    6262
  • trunk/Source/WebCore/inspector/InspectorFrontendClientLocal.cpp

    r180547 r180551  
    121121{
    122122    m_frontendPage->settings().setAllowFileAccessFromFileURLs(true);
    123     m_frontendPage->settings().setJavaScriptRuntimeFlags({
    124         JSC::RuntimeFlags::SymbolEnabled
    125     });
    126123    m_dispatchTask = std::make_unique<InspectorBackendDispatchTask>(inspectorController);
    127124}
  • trunk/Source/WebCore/page/Settings.h

    r180547 r180551  
    3636#include "Timer.h"
    3737#include <chrono>
    38 #include <runtime/RuntimeFlags.h>
    3938#include <unicode/uscript.h>
    4039#include <wtf/HashMap.h>
  • trunk/Source/WebCore/page/Settings.in

    r180547 r180551  
    7474forceFTPDirectoryListings initial=false
    7575developerExtrasEnabled initial=false
     76javaScriptExperimentsEnabled initial=false
    7677scriptMarkupEnabled initial=true
    7778needsSiteSpecificQuirks initial=false
     
    8788acceleratedFiltersEnabled initial=false
    8889useLegacyTextAlignPositionedElementBehavior initial=false
    89 javaScriptRuntimeFlags type=JSC::RuntimeFlags
    9090
    9191# FIXME: This should really be disabled by default as it makes platforms that don't support the feature download files
  • trunk/Source/WebKit/mac/ChangeLog

    r180549 r180551  
     12015-02-23  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r180547 and r180550.
     4        https://bugs.webkit.org/show_bug.cgi?id=141957
     5
     6        Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).
     7
     8        Reverted changesets:
     9
     10        "REGRESSION(r179429): Can't type comments in Facebook"
     11        https://bugs.webkit.org/show_bug.cgi?id=141859
     12        http://trac.webkit.org/changeset/180547
     13
     14        "Constructor returning null should construct an object instead
     15        of null"
     16        https://bugs.webkit.org/show_bug.cgi?id=141640
     17        http://trac.webkit.org/changeset/180550
     18
    1192015-02-23  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebKit/mac/Misc/WebNSDictionaryExtras.h

    r180547 r180551  
    4545- (void)_webkit_setLongLong:(long long)value forKey:(id)key;
    4646- (void)_webkit_setUnsignedLongLong:(unsigned long long)value forKey:(id)key;
     47#if PLATFORM(IOS)
    4748- (void)_webkit_setUnsignedInt:(unsigned)value forKey:(id)key;
     49#endif
    4850@end
  • trunk/Source/WebKit/mac/Misc/WebNSDictionaryExtras.m

    r180547 r180551  
    119119}
    120120
     121#if PLATFORM(IOS)
    121122- (void)_webkit_setUnsignedInt:(unsigned)value forKey:(id)key
    122123{
     
    125126    [object release];
    126127}
     128#endif
    127129
    128130@end
  • trunk/Source/WebKit/mac/WebKit.order

    r180547 r180551  
    288288-[WebPreferences(WebPrivate) showsToolTipOverTruncatedText]
    289289-[WebPreferences(WebPrivate) developerExtrasEnabled]
     290-[WebPreferences(WebPrivate) javaScriptExperimentsEnabled]
    290291-[WebPreferences(WebPrivate) authorAndUserStylesEnabled]
    291292-[WebPreferences(WebPrivate) applicationChromeModeEnabled]
     
    12461247-[WebPreferences(WebPrivate) setJavaScriptCanAccessClipboard:]
    12471248-[WebPreferences(WebPrivate) setOfflineWebApplicationCacheEnabled:]
     1249-[WebPreferences(WebPrivate) setJavaScriptExperimentsEnabled:]
    12481250-[WebPreferences(WebPrivate) setLoadsSiteIconsIgnoringImageLoadingPreference:]
    12491251-[WebPreferences(WebPrivate) setFrameFlatteningEnabled:]
  • trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h

    r180547 r180551  
    8585#define WebKitForceFTPDirectoryListings @"WebKitForceFTPDirectoryListings"
    8686#define WebKitDeveloperExtrasEnabledPreferenceKey @"WebKitDeveloperExtrasEnabledPreferenceKey"
    87 #define WebKitJavaScriptRuntimeFlagsPreferenceKey @"WebKitJavaScriptRuntimeFlagsPreferenceKey"
     87#define WebKitJavaScriptExperimentsEnabledPreferenceKey @"WebKitJavaScriptExperimentsEnabledPreferenceKey"
    8888#define WebKitAuthorAndUserStylesEnabledPreferenceKey @"WebKitAuthorAndUserStylesEnabledPreferenceKey"
    8989#define WebKitDOMTimersThrottlingEnabledPreferenceKey @"WebKitDOMTimersThrottlingEnabledPreferenceKey"
  • trunk/Source/WebKit/mac/WebView/WebPreferences.mm

    r180547 r180551  
    474474        [NSNumber numberWithBool:YES],  WebKitPageCacheSupportsPluginsPreferenceKey,
    475475        [NSNumber numberWithBool:NO],   WebKitDeveloperExtrasEnabledPreferenceKey,
    476         [NSNumber numberWithUnsignedInt:0], WebKitJavaScriptRuntimeFlagsPreferenceKey,
     476        [NSNumber numberWithBool:NO],   WebKitJavaScriptExperimentsEnabledPreferenceKey,
    477477        [NSNumber numberWithBool:YES],  WebKitAuthorAndUserStylesEnabledPreferenceKey,
    478478        [NSNumber numberWithBool:YES],  WebKitDOMTimersThrottlingEnabledPreferenceKey,
     
    668668}
    669669
     670#if PLATFORM(IOS)
    670671- (unsigned int)_unsignedIntValueForKey:(NSString *)key
    671672{
     
    678679        return;
    679680    NSString *_key = KEY(key);
    680 #if PLATFORM(IOS)
    681681    dispatch_barrier_sync(_private->readWriteQueue, ^{
    682 #endif
    683682    [_private->values.get() _webkit_setUnsignedInt:value forKey:_key];
    684 #if PLATFORM(IOS)
    685683    });
    686 #endif
    687684    if (_private->autosaves)
    688685        [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithUnsignedInt:value] forKey:_key];
    689686    [self _postPreferencesChangedNotification];
    690687}
     688#endif
    691689
    692690- (float)_floatValueForKey:(NSString *)key
     
    11871185}
    11881186
    1189 - (WebKitJavaScriptRuntimeFlags)javaScriptRuntimeFlags
    1190 {
    1191     return static_cast<WebKitJavaScriptRuntimeFlags>([self _unsignedIntValueForKey:WebKitJavaScriptRuntimeFlagsPreferenceKey]);
    1192 }
    1193 
    1194 - (void)setJavaScriptRuntimeFlags:(WebKitJavaScriptRuntimeFlags)flags
    1195 {
    1196     [self _setUnsignedIntValue:flags forKey:WebKitJavaScriptRuntimeFlagsPreferenceKey];
     1187- (void)setJavaScriptExperimentsEnabled:(BOOL)flag
     1188{
     1189    [self _setBoolValue:flag forKey:WebKitJavaScriptExperimentsEnabledPreferenceKey];
     1190}
     1191
     1192- (BOOL)javaScriptExperimentsEnabled
     1193{
     1194    return [self _boolValueForKey:WebKitJavaScriptExperimentsEnabledPreferenceKey];
    11971195}
    11981196
  • trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h

    r180547 r180551  
    5353} WebStorageBlockingPolicy;
    5454
    55 typedef enum {
    56     WebKitJavaScriptRuntimeFlagsSymbolEnabled = 1u << 0,
    57     WebKitJavaScriptRuntimeFlagsAllEnabled = WebKitJavaScriptRuntimeFlagsSymbolEnabled
    58 } WebKitJavaScriptRuntimeFlags;
    59 
    6055extern NSString *WebPreferencesChangedNotification;
    6156extern NSString *WebPreferencesRemovedNotification;
     
    7368- (void)setDeveloperExtrasEnabled:(BOOL)flag;
    7469
    75 - (WebKitJavaScriptRuntimeFlags)javaScriptRuntimeFlags;
    76 - (void)setJavaScriptRuntimeFlags:(WebKitJavaScriptRuntimeFlags)flags;
     70- (BOOL)javaScriptExperimentsEnabled;
     71- (void)setJavaScriptExperimentsEnabled:(BOOL)flag;
    7772
    7873- (BOOL)authorAndUserStylesEnabled;
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r180547 r180551  
    22352235
    22362236    settings.setDeveloperExtrasEnabled([preferences developerExtrasEnabled]);
    2237     settings.setJavaScriptRuntimeFlags(JSC::RuntimeFlags([preferences javaScriptRuntimeFlags]));
     2237    settings.setJavaScriptExperimentsEnabled([preferences javaScriptExperimentsEnabled]);
    22382238    settings.setAuthorAndUserStylesEnabled([preferences authorAndUserStylesEnabled]);
    22392239
  • trunk/Source/WebKit2/ChangeLog

    r180549 r180551  
     12015-02-23  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r180547 and r180550.
     4        https://bugs.webkit.org/show_bug.cgi?id=141957
     5
     6        Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).
     7
     8        Reverted changesets:
     9
     10        "REGRESSION(r179429): Can't type comments in Facebook"
     11        https://bugs.webkit.org/show_bug.cgi?id=141859
     12        http://trac.webkit.org/changeset/180547
     13
     14        "Constructor returning null should construct an object instead
     15        of null"
     16        https://bugs.webkit.org/show_bug.cgi?id=141640
     17        http://trac.webkit.org/changeset/180550
     18
    1192015-02-23  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h

    r180547 r180551  
    9696    macro(XSSAuditorEnabled, xssAuditorEnabled, Bool, bool, true) \
    9797    macro(FrameFlatteningEnabled, frameFlatteningEnabled, Bool, bool, DEFAULT_FRAME_FLATTENING_ENABLED) \
     98    macro(JavaScriptExperimentsEnabled, javaScriptExperimentsEnabled, Bool, bool, false) \
    9899    macro(PrivateBrowsingEnabled, privateBrowsingEnabled, Bool, bool, false) \
    99100    macro(TextAreasAreResizable, textAreasAreResizable, Bool, bool, DEFAULT_TEXT_AREAS_ARE_RESIZABLE) \
     
    217218    macro(InspectorAttachmentSide, inspectorAttachmentSide, UInt32, uint32_t, 0) \
    218219    macro(StorageBlockingPolicy, storageBlockingPolicy, UInt32, uint32_t, WebCore::SecurityOrigin::BlockThirdPartyStorage) \
    219     macro(JavaScriptRuntimeFlags, javaScriptRuntimeFlags, UInt32, uint32_t, 0) \
    220220    \
    221221
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp

    r180547 r180551  
    350350}
    351351
    352 void WKPreferencesSetJavaScriptRuntimeFlags(WKPreferencesRef preferencesRef, WKJavaScriptRuntimeFlagSet javaScriptRuntimeFlagSet)
    353 {
    354     toImpl(preferencesRef)->setJavaScriptRuntimeFlags(javaScriptRuntimeFlagSet);
    355 }
    356 
    357 WKJavaScriptRuntimeFlagSet WKPreferencesGetJavaScriptRuntimeFlags(WKPreferencesRef preferencesRef)
    358 {
    359     return toImpl(preferencesRef)->javaScriptRuntimeFlags();
     352void WKPreferencesSetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef, bool enabled)
     353{
     354    toImpl(preferencesRef)->setJavaScriptExperimentsEnabled(enabled);
     355}
     356
     357bool WKPreferencesGetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef)
     358{
     359    return toImpl(preferencesRef)->javaScriptExperimentsEnabled();
    360360}
    361361
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRef.h

    r180547 r180551  
    151151WK_EXPORT bool WKPreferencesGetDeveloperExtrasEnabled(WKPreferencesRef preferencesRef);
    152152
     153// Defaults to false.
     154WK_EXPORT void WKPreferencesSetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef, bool enabled);
     155WK_EXPORT bool WKPreferencesGetJavaScriptExperimentsEnabled(WKPreferencesRef preferencesRef);
     156
    153157// Defaults to true.
    154158WK_EXPORT void WKPreferencesSetTextAreasAreResizable(WKPreferencesRef preferencesRef, bool resizable);
  • trunk/Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h

    r180547 r180551  
    5050typedef enum WKEditableLinkBehavior WKEditableLinkBehavior;
    5151
    52 enum WKJavaScriptRuntimeFlags {
    53     kWKJavaScriptRuntimeFlagsSymbolEnabled = 1 << 0,
    54     kWKJavaScriptRuntimeFlagsAllEnabled = kWKJavaScriptRuntimeFlagsSymbolEnabled
    55 };
    56 typedef unsigned WKJavaScriptRuntimeFlagSet;
    57 
    5852// Creates a copy with no identifier.
    5953WK_EXPORT WKPreferencesRef WKPreferencesCreateCopy(WKPreferencesRef);
     
    353347WK_EXPORT bool WKPreferencesGetScreenFontSubstitutionEnabled(WKPreferencesRef preferences);
    354348
    355 // Defaults to 0.
    356 WK_EXPORT void WKPreferencesSetJavaScriptRuntimeFlags(WKPreferencesRef preferences, WKJavaScriptRuntimeFlagSet javascriptRuntimeFlagSet);
    357 WK_EXPORT WKJavaScriptRuntimeFlagSet WKPreferencesGetJavaScriptRuntimeFlags(WKPreferencesRef preferences);
    358 
    359349#ifdef __cplusplus
    360350}
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferences.mm

    r180547 r180551  
    268268}
    269269
    270 - (_WKJavaScriptRuntimeFlags)_javaScriptRuntimeFlags
    271 {
    272     return _preferences->javaScriptRuntimeFlags();
    273 }
    274 
    275 - (void)_setJavaScriptRuntimeFlags:(_WKJavaScriptRuntimeFlags)javaScriptRuntimeFlags
    276 {
    277     _preferences->setJavaScriptRuntimeFlags(javaScriptRuntimeFlags);
    278 }
    279 
    280270- (BOOL)_isStandalone
    281271{
  • trunk/Source/WebKit2/UIProcess/API/Cocoa/WKPreferencesPrivate.h

    r180547 r180551  
    4343} WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    4444
    45 typedef NS_OPTIONS(NSUInteger, _WKJavaScriptRuntimeFlags) {
    46     _WKJavaScriptRuntimeFlagsSymbolEnabled = 1 << 0,
    47     _WKJavaScriptRuntimeFlagsAllEnabled = _WKJavaScriptRuntimeFlagsSymbolEnabled
    48 } WK_ENUM_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    49 
    5045@interface WKPreferences (WKPrivate)
    5146
     
    6560
    6661@property (nonatomic, setter=_setAllowFileAccessFromFileURLs:) BOOL _allowFileAccessFromFileURLs WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    67 @property (nonatomic, setter=_setJavaScriptRuntimeFlags:) _WKJavaScriptRuntimeFlags _javaScriptRuntimeFlags WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
    6862
    6963@property (nonatomic, setter=_setStandalone:, getter=_isStandalone) BOOL _standalone WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
  • trunk/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp

    r180547 r180551  
    115115    WKPreferencesRef wkPreferences = WKPageGroupGetPreferences(wkPageGroup);
    116116    WKPreferencesSetFileAccessFromFileURLsAllowed(wkPreferences, true);
    117     WKPreferencesSetJavaScriptRuntimeFlags(wkPreferences, kWKJavaScriptRuntimeFlagsSymbolEnabled);
    118117
    119118    return toImpl(WKViewGetPage(wkView));
  • trunk/Source/WebKit2/UIProcess/gtk/WebInspectorProxyGtk.cpp

    r180547 r180551  
    7070#endif
    7171    preferences->setAllowFileAccessFromFileURLs(true);
    72     preferences->setJavaScriptRuntimeFlags({
    73         JSC::RuntimeFlags::SymbolEnabled
    74     });
    7572    RefPtr<WebPageGroup> pageGroup = WebPageGroup::create(inspectorPageGroupIdentifier(), false, false);
    7673    m_inspectorView = GTK_WIDGET(webkitWebViewBaseCreate(&inspectorProcessPool(), preferences.get(), pageGroup.get(), nullptr, nullptr));
  • trunk/Source/WebKit2/UIProcess/mac/WebInspectorProxyMac.mm

    r180547 r180551  
    489489#endif
    490490    preferences._allowFileAccessFromFileURLs = YES;
    491     preferences._javaScriptRuntimeFlags = _WKJavaScriptRuntimeFlagsSymbolEnabled;
    492491    [configuration setProcessPool: ::WebKit::wrapper(inspectorProcessPool())];
    493492    [configuration _setGroupIdentifier:inspectorPageGroupIdentifier()];
  • trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp

    r180547 r180551  
    26542654        setSessionID(SessionID::defaultSessionID());
    26552655    settings.setDeveloperExtrasEnabled(store.getBoolValueForKey(WebPreferencesKey::developerExtrasEnabledKey()));
    2656     settings.setJavaScriptRuntimeFlags(RuntimeFlags(store.getUInt32ValueForKey(WebPreferencesKey::javaScriptRuntimeFlagsKey())));
     2656    settings.setJavaScriptExperimentsEnabled(store.getBoolValueForKey(WebPreferencesKey::javaScriptExperimentsEnabledKey()));
    26572657    settings.setTextAreasAreResizable(store.getBoolValueForKey(WebPreferencesKey::textAreasAreResizableKey()));
    26582658    settings.setNeedsSiteSpecificQuirks(store.getBoolValueForKey(WebPreferencesKey::needsSiteSpecificQuirksKey()));
  • trunk/Source/WebKit2/mac/WebKit2.order

    r180547 r180551  
    177177__ZN6WebKit17WebPreferencesKey25frameFlatteningEnabledKeyEv
    178178__ZN6WebKit17WebPreferencesKey25developerExtrasEnabledKeyEv
     179__ZN6WebKit17WebPreferencesKey31javaScriptExperimentsEnabledKeyEv
    179180__ZN6WebKit17WebPreferencesKey25privateBrowsingEnabledKeyEv
    180181__ZN6WebKit17WebPreferencesKey24textAreasAreResizableKeyEv
     
    81298130_WKPreferencesSetWebAudioEnabled
    81308131__ZN6WebKit14WebPreferences18setWebAudioEnabledERKb
     8132_WKPreferencesSetJavaScriptExperimentsEnabled
     8133__ZN6WebKit14WebPreferences31setJavaScriptExperimentsEnabledERKb
    81318134_WKPreferencesSetJavaScriptCanAccessClipboard
    81328135__ZN6WebKit14WebPreferences31setJavaScriptCanAccessClipboardERKb
  • trunk/Tools/ChangeLog

    r180547 r180551  
     12015-02-23  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, rolling out r180547 and r180550.
     4        https://bugs.webkit.org/show_bug.cgi?id=141957
     5
     6        Broke 10 Windows tests. (Requested by bfulgham_ on #webkit).
     7
     8        Reverted changesets:
     9
     10        "REGRESSION(r179429): Can't type comments in Facebook"
     11        https://bugs.webkit.org/show_bug.cgi?id=141859
     12        http://trac.webkit.org/changeset/180547
     13
     14        "Constructor returning null should construct an object instead
     15        of null"
     16        https://bugs.webkit.org/show_bug.cgi?id=141640
     17        http://trac.webkit.org/changeset/180550
     18
    1192015-02-23  Yusuke Suzuki  <utatane.tea@gmail.com>
    220
  • trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm

    r180547 r180551  
    840840    [preferences setOfflineWebApplicationCacheEnabled:YES];
    841841    [preferences setDeveloperExtrasEnabled:NO];
    842     [preferences setJavaScriptRuntimeFlags:WebKitJavaScriptRuntimeFlagsAllEnabled];
     842    [preferences setJavaScriptExperimentsEnabled:YES];
    843843    [preferences setLoadsImagesAutomatically:YES];
    844844    [preferences setLoadsSiteIconsIgnoringImageLoadingPreference:NO];
  • trunk/Tools/WebKitTestRunner/TestController.cpp

    r180547 r180551  
    550550    WKPreferencesSetMediaStreamEnabled(preferences, true);
    551551    WKPreferencesSetDeveloperExtrasEnabled(preferences, true);
    552     WKPreferencesSetJavaScriptRuntimeFlags(preferences, kWKJavaScriptRuntimeFlagsAllEnabled);
     552    WKPreferencesSetJavaScriptExperimentsEnabled(preferences, true);
    553553    WKPreferencesSetJavaScriptCanOpenWindowsAutomatically(preferences, true);
    554554    WKPreferencesSetJavaScriptCanAccessClipboard(preferences, true);
Note: See TracChangeset for help on using the changeset viewer.