Changeset 230543 in webkit


Ignore:
Timestamp:
Apr 11, 2018 1:02:29 PM (6 years ago)
Author:
Yusuke Suzuki
Message:

[DFG] Remove CompareSlowPathGenerator
https://bugs.webkit.org/show_bug.cgi?id=184492

Reviewed by Mark Lam.

Now CompareSlowPathGenerator is just calling a specified function.
This can be altered with slowPathCall. This patch removes CompareSlowPathGenerator.

We also remove some of unnecessary USE(JSVALUE32_64) / USE(JSVALUE64) ifdefs by
introducing a new constructor for GPRTemporary.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGCompareSlowPathGenerator.h: Removed.
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::GPRTemporary::GPRTemporary):
(JSC::DFG::SpeculativeJIT::compileIsCellWithType):
(JSC::DFG::SpeculativeJIT::compileIsTypedArrayView):
(JSC::DFG::SpeculativeJIT::compileToObjectOrCallObjectConstructor):
(JSC::DFG::SpeculativeJIT::compileIsObject):
(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
(JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::GPRTemporary::GPRTemporary):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):

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

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r230520 r230543  
     12018-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        [DFG] Remove CompareSlowPathGenerator
     4        https://bugs.webkit.org/show_bug.cgi?id=184492
     5
     6        Reviewed by Mark Lam.
     7
     8        Now CompareSlowPathGenerator is just calling a specified function.
     9        This can be altered with slowPathCall. This patch removes CompareSlowPathGenerator.
     10
     11        We also remove some of unnecessary USE(JSVALUE32_64) / USE(JSVALUE64) ifdefs by
     12        introducing a new constructor for GPRTemporary.
     13
     14        * JavaScriptCore.xcodeproj/project.pbxproj:
     15        * dfg/DFGCompareSlowPathGenerator.h: Removed.
     16        * dfg/DFGSpeculativeJIT.cpp:
     17        (JSC::DFG::GPRTemporary::GPRTemporary):
     18        (JSC::DFG::SpeculativeJIT::compileIsCellWithType):
     19        (JSC::DFG::SpeculativeJIT::compileIsTypedArrayView):
     20        (JSC::DFG::SpeculativeJIT::compileToObjectOrCallObjectConstructor):
     21        (JSC::DFG::SpeculativeJIT::compileIsObject):
     22        (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompare):
     23        (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
     24        * dfg/DFGSpeculativeJIT.h:
     25        (JSC::DFG::GPRTemporary::GPRTemporary):
     26        * dfg/DFGSpeculativeJIT64.cpp:
     27        (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeStrictEq):
     28
    1292018-04-11  Yusuke Suzuki  <utatane.tea@gmail.com>
    230
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r230517 r230543  
    17071707                E3555B8A1DAE03A500F36921 /* DOMJITCallDOMGetterSnippet.h in Headers */ = {isa = PBXBuildFile; fileRef = E3555B891DAE03A200F36921 /* DOMJITCallDOMGetterSnippet.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17081708                E355F3531B7DC85300C50DC5 /* ModuleLoaderPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = E355F3511B7DC85300C50DC5 /* ModuleLoaderPrototype.h */; };
    1709                 E356D86420728381005AC750 /* DFGCompareSlowPathGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = E356D86320728381005AC750 /* DFGCompareSlowPathGenerator.h */; };
    17101709                E35CA1541DBC3A5C00F83516 /* DOMJITHeapRange.h in Headers */ = {isa = PBXBuildFile; fileRef = E35CA1521DBC3A5600F83516 /* DOMJITHeapRange.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17111710                E35CA1561DBC3A5F00F83516 /* DOMJITAbstractHeap.h in Headers */ = {isa = PBXBuildFile; fileRef = E35CA1501DBC3A5600F83516 /* DOMJITAbstractHeap.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    45574556                E355F3501B7DC85300C50DC5 /* ModuleLoaderPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleLoaderPrototype.cpp; sourceTree = "<group>"; };
    45584557                E355F3511B7DC85300C50DC5 /* ModuleLoaderPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleLoaderPrototype.h; sourceTree = "<group>"; };
    4559                 E356D86320728381005AC750 /* DFGCompareSlowPathGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCompareSlowPathGenerator.h; path = dfg/DFGCompareSlowPathGenerator.h; sourceTree = "<group>"; };
    45604558                E35CA14F1DBC3A5600F83516 /* DOMJITAbstractHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMJITAbstractHeap.cpp; sourceTree = "<group>"; };
    45614559                E35CA1501DBC3A5600F83516 /* DOMJITAbstractHeap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMJITAbstractHeap.h; sourceTree = "<group>"; };
     
    71637161                                0FEA0A2D170D40BF00BB722C /* DFGCommonData.cpp */,
    71647162                                0FEA0A2E170D40BF00BB722C /* DFGCommonData.h */,
    7165                                 E356D86320728381005AC750 /* DFGCompareSlowPathGenerator.h */,
    71667163                                0F38B01317CFE75500B144D3 /* DFGCompilationKey.cpp */,
    71677164                                0F38B01417CFE75500B144D3 /* DFGCompilationKey.h */,
     
    82248221                                8B3BF5E41E3D368B0076A87A /* AsyncGeneratorPrototype.lut.h in Headers */,
    82258222                                8BC064961E1D845C00B2B8CA /* AsyncIteratorPrototype.h in Headers */,
    8226                                 0F5E0FD8207C72730097F0DE /* DFGAbstractInterpreterClobberState.h in Headers */,
    82278223                                6A38CFAA1E32B5AB0060206F /* AsyncStackTrace.h in Headers */,
    82288224                                0F7CF9571DC125900098CC12 /* AtomicsObject.h in Headers */,
     
    84748470                                A77A423E17A0BBFD00A8DB81 /* DFGAbstractHeap.h in Headers */,
    84758471                                A704D90317A0BAA8006BA554 /* DFGAbstractInterpreter.h in Headers */,
     8472                                0F5E0FD8207C72730097F0DE /* DFGAbstractInterpreterClobberState.h in Headers */,
    84768473                                A704D90417A0BAA8006BA554 /* DFGAbstractInterpreterInlines.h in Headers */,
    84778474                                0F620177143FCD3F0068B77C /* DFGAbstractValue.h in Headers */,
     
    85138510                                0F7B294D14C3CD4C007C3DB1 /* DFGCommon.h in Headers */,
    85148511                                0FEA0A32170D40BF00BB722C /* DFGCommonData.h in Headers */,
    8515                                 E356D86420728381005AC750 /* DFGCompareSlowPathGenerator.h in Headers */,
    85168512                                0F38B01817CFE75500B144D3 /* DFGCompilationKey.h in Headers */,
    85178513                                0F38B01A17CFE75500B144D3 /* DFGCompilationMode.h in Headers */,
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r230520 r230543  
    3535#include "DFGCallCreateDirectArgumentsSlowPathGenerator.h"
    3636#include "DFGCapabilities.h"
    37 #include "DFGCompareSlowPathGenerator.h"
    3837#include "DFGMayExit.h"
    3938#include "DFGOSRExitFuzz.h"
     
    12921291        m_gpr = m_jit->allocate();
    12931292}
    1294 #endif // USE(JSVALUE32_64)
     1293#else // USE(JSVALUE32_64)
     1294GPRTemporary::GPRTemporary(SpeculativeJIT* jit, ReuseTag, JSValueOperand& op1, WhichValueWord)
     1295    : GPRTemporary(jit, Reuse, op1)
     1296{
     1297}
     1298#endif
    12951299
    12961300JSValueRegsTemporary::JSValueRegsTemporary() { }
     
    40324036    case UntypedUse: {
    40334037        JSValueOperand value(this, node->child1());
    4034 #if USE(JSVALUE64)
    4035         GPRTemporary result(this, Reuse, value);
    4036 #else
    40374038        GPRTemporary result(this, Reuse, value, PayloadWord);
    4038 #endif
    40394039
    40404040        JSValueRegs valueRegs = value.jsValueRegs();
     
    40834083{
    40844084    JSValueOperand value(this, node->child1());
    4085 #if USE(JSVALUE64)
    4086     GPRTemporary result(this, Reuse, value);
    4087 #else
    40884085    GPRTemporary result(this, Reuse, value, PayloadWord);
    4089 #endif
    40904086
    40914087    JSValueRegs valueRegs = value.jsValueRegs();
     
    41154111
    41164112    JSValueOperand value(this, node->child1());
    4117 #if USE(JSVALUE64)
    4118     GPRTemporary result(this, Reuse, value);
    4119 #else
    41204113    GPRTemporary result(this, Reuse, value, PayloadWord);
    4121 #endif
    41224114
    41234115    JSValueRegs valueRegs = value.jsValueRegs();
     
    85858577{
    85868578    JSValueOperand value(this, node->child1());
    8587 #if USE(JSVALUE64)
    8588     GPRTemporary result(this, Reuse, value);
    8589 #else
    85908579    GPRTemporary result(this, Reuse, value, TagWord);
    8591 #endif
    85928580
    85938581    JSValueRegs valueRegs = value.jsValueRegs();
     
    1287812866    }
    1287912867
    12880 #if USE(JSVALUE64)
    12881     GPRTemporary result(this, Reuse, arg1);
    12882 #else
    1288312868    GPRTemporary result(this, Reuse, arg1, TagWord);
    12884 #endif
    1288512869    GPRReg resultGPR = result.gpr();
    1288612870
     
    1289512879    m_jit.compare32(cond, arg1Regs.payloadGPR(), arg2Regs.payloadGPR(), resultGPR);
    1289612880
    12897     if (!isKnownInteger(node->child1().node()) || !isKnownInteger(node->child2().node())) {
    12898         addSlowPathGenerator(std::make_unique<CompareSlowPathGenerator<JITCompiler::JumpList>>(
    12899             slowPath, this, helperFunction, resultGPR, arg1Regs, arg2Regs));
    12900     }
     12881    if (!isKnownInteger(node->child1().node()) || !isKnownInteger(node->child2().node()))
     12882        addSlowPathGenerator(slowPathCall(slowPath, this, helperFunction, resultGPR, arg1Regs, arg2Regs));
    1290112883
    1290212884    unblessedBooleanResult(resultGPR, node, UseChildrenCalledExplicitly);
     
    1294012922        branchTest32(callResultCondition, resultGPR, taken);
    1294112923    } else {
    12942 #if USE(JSVALUE64)
    12943         GPRTemporary result(this, Reuse, arg2);
    12944 #else
    1294512924        GPRTemporary result(this, Reuse, arg2, TagWord);
    12946 #endif
    1294712925        GPRReg resultGPR = result.gpr();
    1294812926
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h

    r230517 r230543  
    20192019            m_gpr = m_jit->allocate();
    20202020    }
    2021 #if USE(JSVALUE32_64)
    20222021    GPRTemporary(SpeculativeJIT*, ReuseTag, JSValueOperand&, WhichValueWord);
    2023 #endif
    20242022
    20252023    GPRTemporary(GPRTemporary& other) = delete;
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp

    r230517 r230543  
    454454    m_jit.move(JITCompiler::TrustedImm64(!invert), resultGPR);
    455455
    456     addSlowPathGenerator(std::make_unique<CompareSlowPathGenerator<MacroAssembler::JumpList>>(
    457         slowPathCases, this, operationCompareStrictEq, resultGPR, arg1Regs, arg2Regs));
     456    addSlowPathGenerator(slowPathCall(slowPathCases, this, operationCompareStrictEq, resultGPR, arg1Regs, arg2Regs));
    458457
    459458    done.link(&m_jit);
Note: See TracChangeset for help on using the changeset viewer.