Changeset 219702 in webkit for trunk/Source/JavaScriptCore/b3


Ignore:
Timestamp:
Jul 20, 2017, 2:06:12 PM (8 years ago)
Author:
Chris Dumez
Message:

Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable
https://bugs.webkit.org/show_bug.cgi?id=174660

Reviewed by Geoffrey Garen.

Replace calls to Vector::resize() with calls to more efficient shrink() / grow() when applicable.
This essentially replaces a branch to figure out if the new size is less or greater than the
current size by an assertion.

Source/bmalloc:

  • bmalloc/Map.h:

(bmalloc::Hash>::rehash):

Source/JavaScriptCore:

  • b3/B3BasicBlockUtils.h:

(JSC::B3::clearPredecessors):

  • b3/B3InferSwitches.cpp:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::finishAppendingInstructions):

  • b3/B3ReduceStrength.cpp:
  • b3/B3SparseCollection.h:

(JSC::B3::SparseCollection::packIndices):

  • b3/B3UseCounts.cpp:

(JSC::B3::UseCounts::UseCounts):

  • b3/air/AirAllocateRegistersAndStackByLinearScan.cpp:
  • b3/air/AirEmitShuffle.cpp:

(JSC::B3::Air::emitShuffle):

  • b3/air/AirLowerAfterRegAlloc.cpp:

(JSC::B3::Air::lowerAfterRegAlloc):

  • b3/air/AirOptimizeBlockOrder.cpp:

(JSC::B3::Air::optimizeBlockOrder):

  • bytecode/Operands.h:

(JSC::Operands::ensureLocals):

  • bytecode/PreciseJumpTargets.cpp:

(JSC::computePreciseJumpTargetsInternal):

  • dfg/DFGBlockInsertionSet.cpp:

(JSC::DFG::BlockInsertionSet::execute):

  • dfg/DFGBlockMapInlines.h:

(JSC::DFG::BlockMap<T>::BlockMap):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::processSetLocalQueue):
(JSC::DFG::ByteCodeParser::clearCaches):

  • dfg/DFGDisassembler.cpp:

(JSC::DFG::Disassembler::Disassembler):

  • dfg/DFGFlowIndexing.cpp:

(JSC::DFG::FlowIndexing::recompute):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::registerFrozenValues):

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::setLiveValues):

  • dfg/DFGLICMPhase.cpp:

(JSC::DFG::LICMPhase::run):

  • dfg/DFGLivenessAnalysisPhase.cpp:
  • dfg/DFGNaturalLoops.cpp:

(JSC::DFG::NaturalLoops::NaturalLoops):

  • dfg/DFGStoreBarrierClusteringPhase.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):

  • heap/CodeBlockSet.cpp:

(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::sweepLargeAllocations):

  • inspector/ContentSearchUtilities.cpp:

(Inspector::ContentSearchUtilities::findMagicComment):

  • interpreter/ShadowChicken.cpp:

(JSC::ShadowChicken::update):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::shrinkOperandStackBy):

  • parser/Lexer.h:

(JSC::Lexer::setOffset):

  • runtime/RegExpInlines.h:

(JSC::RegExp::matchInline):

  • runtime/RegExpPrototype.cpp:

(JSC::genericSplit):

  • yarr/RegularExpression.cpp:

(JSC::Yarr::RegularExpression::match):

Source/WebCore:

  • Modules/gamepad/Gamepad.cpp:

(WebCore::Gamepad::Gamepad):

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::addReaction):

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::skipBuffer):

  • Modules/websockets/WebSocketDeflater.cpp:

(WebCore::WebSocketDeflater::finish):

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::serializeSelector):

  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::append):

  • crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp:

(WebCore::gcryptEncrypt):
(WebCore::gcryptDecrypt):

  • crypto/gcrypt/CryptoAlgorithmECDHGCrypt.cpp:

(WebCore::gcryptDerive):

  • platform/gamepad/cocoa/GameControllerGamepadProvider.mm:

(WebCore::GameControllerGamepadProvider::controllerDidConnect):

  • platform/gamepad/mac/HIDGamepadProvider.cpp:

(WebCore::HIDGamepadProvider::deviceAdded):

  • platform/graphics/ImageBackingStore.h:

(WebCore::ImageBackingStore::setSize):

  • platform/graphics/WOFFFileFormat.cpp:
  • platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp:

(WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes):
(WebCore::InbandMetadataTextTrackPrivateAVF::flushPartialCues):

  • platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:

(WebCore::InbandTextTrackPrivateAVF::resetCueValues):
(WebCore::InbandTextTrackPrivateAVF::readNativeSampleBuffer):

  • platform/graphics/avfoundation/cf/InbandTextTrackPrivateAVCF.cpp:

(WebCore::InbandTextTrackPrivateAVCF::readNativeSampleBuffer):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::cfData):

  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::frameBufferAtIndex):

  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::decode):

  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::frameBufferAtIndex):

  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::frameBufferAtIndex):
(WebCore::PNGImageDecoder::readChunks):

  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::frameBufferAtIndex):

  • platform/image-encoders/JPEGImageEncoder.cpp:

(WebCore::compressRGBABigEndianToJPEG):

  • platform/text/DecodeEscapeSequences.h:

(WebCore::URLEscapeSequence::decodeRun):

  • platform/text/SuffixTree.h:

(WebCore::SuffixTree::Node::Node):

  • rendering/Grid.cpp:

(WebCore::Grid::setNeedsItemsPlacement):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::invalidateCachedColumns):

Source/WebKit:

  • Platform/IPC/ArgumentCoders.h:
  • UIProcess/Gamepad/UIGamepadProvider.cpp:

(WebKit::UIGamepadProvider::platformGamepadConnected):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::setInitialConnectedGamepads):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::loadResourceSynchronously):

  • WebProcess/WebCoreSupport/WebPasteboardOverrides.cpp:

(WebKit::WebPasteboardOverrides::getDataForOverride):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::requestAutocorrectionData):

Source/WebKitLegacy/mac:

  • Plugins/WebNetscapePluginView.mm:

(-[WebNetscapePluginView saveAndSetNewPortStateForUpdate:]):

Source/WTF:

  • wtf/IndexSparseSet.h:

(WTF::OverflowHandler>::IndexSparseSet):
(WTF::OverflowHandler>::clear):

  • wtf/Insertion.h:

(WTF::executeInsertions):

  • wtf/RangeSet.h:

(WTF::RangeSet::compact):

  • wtf/Vector.h:

(WTF::removeRepeatedElements):

  • wtf/persistence/Coders.h:
Location:
trunk/Source/JavaScriptCore/b3
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/b3/B3BasicBlockUtils.h

    r214636 r219702  
    9090    for (auto& block : blocks) {
    9191        if (block)
    92             block->predecessors().resize(0);
     92            block->predecessors().shrink(0);
    9393    }
    9494}
  • trunk/Source/JavaScriptCore/b3/B3InferSwitches.cpp

    r203491 r219702  
    196196        }
    197197        m_insertionSet.execute(predecessor);
    198         block->values().resize(0);
     198        block->values().shrink(0);
    199199        block->appendNew<Value>(m_proc, Oops, description.branch->origin());
    200200        block->removePredecessor(predecessor);
  • trunk/Source/JavaScriptCore/b3/B3LowerToAir.cpp

    r217127 r219702  
    11851185                target->appendInst(WTFMove(inst));
    11861186        }
    1187         m_insts.resize(0);
     1187        m_insts.shrink(0);
    11881188    }
    11891189   
  • trunk/Source/JavaScriptCore/b3/B3ReduceStrength.cpp

    r215407 r219702  
    23712371                    // Make sure that the successor has nothing left in it. Make sure that the block
    23722372                    // has a terminal so that nobody chokes when they look at it.
    2373                     successor->values().resize(0);
     2373                    successor->values().shrink(0);
    23742374                    successor->appendNew<Value>(m_proc, Oops, jumpOrigin);
    23752375                    successor->clearSuccessors();
  • trunk/Source/JavaScriptCore/b3/B3SparseCollection.h

    r216815 r219702  
    108108        }
    109109
    110         m_indexFreeList.resize(0);
    111         m_vector.resize(endIndex);
     110        m_indexFreeList.shrink(0);
     111        m_vector.shrink(endIndex);
    112112    }
    113113
  • trunk/Source/JavaScriptCore/b3/B3UseCounts.cpp

    r192816 r219702  
    3838    Vector<Value*, 64> children;
    3939    for (Value* value : procedure.values()) {
    40         children.resize(0);
     40        children.shrink(0);
    4141        for (Value* child : value->children()) {
    4242            m_counts[child].numUses++;
  • trunk/Source/JavaScriptCore/b3/air/AirAllocateRegistersAndStackByLinearScan.cpp

    r217050 r219702  
    334334    void prepareIntervals(const SelectFunc& selectFunc)
    335335    {
    336         m_tmps.resize(0);
     336        m_tmps.shrink(0);
    337337       
    338338        m_code.forEachTmp(
  • trunk/Source/JavaScriptCore/b3/air/AirEmitShuffle.cpp

    r216468 r219702  
    276276                    ASSERT(rotate.loop[i].dst() == rotate.loop[i + 1].src());
    277277                rotates.append(WTFMove(rotate));
    278                 currentPairs.resize(0);
     278                currentPairs.shrink(0);
    279279            } else {
    280280                if (verbose)
  • trunk/Source/JavaScriptCore/b3/air/AirLowerAfterRegAlloc.cpp

    r219633 r219702  
    233233
    234234                // Now we need to emit code to restore registers.
    235                 pairs.resize(0);
     235                pairs.shrink(0);
    236236                unsigned stackSlotIndex = 0;
    237237                regsToSave.forEach(
  • trunk/Source/JavaScriptCore/b3/air/AirOptimizeBlockOrder.cpp

    r213714 r219702  
    6565            worklist.push(m_successors[i]);
    6666       
    67         m_successors.resize(0);
     67        m_successors.shrink(0);
    6868    }
    6969
     
    138138        entry.release();
    139139
    140     code.blockList().resize(0);
     140    code.blockList().shrink(0);
    141141
    142142    for (unsigned i = 0; i < blocksInOrder.size(); ++i) {
Note: See TracChangeset for help on using the changeset viewer.