haikuwebkit/Source/WTF/wtf/SHA1.h

97 lines
2.9 KiB
C
Raw Permalink Normal View History

2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
/*
* Copyright (C) 2011 Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
Use pragma once in WTF https://bugs.webkit.org/show_bug.cgi?id=190527 Reviewed by Chris Dumez. Source/WTF: We also need to consistently include wtf headers from within wtf so we can build wtf without symbol redefinition errors from including the copy in Source and the copy in the build directory. * wtf/ASCIICType.h: * wtf/Assertions.cpp: * wtf/Assertions.h: * wtf/Atomics.h: * wtf/AutomaticThread.cpp: * wtf/AutomaticThread.h: * wtf/BackwardsGraph.h: * wtf/Bag.h: * wtf/BagToHashMap.h: * wtf/BitVector.cpp: * wtf/BitVector.h: * wtf/Bitmap.h: * wtf/BloomFilter.h: * wtf/Box.h: * wtf/BubbleSort.h: * wtf/BumpPointerAllocator.h: * wtf/ByteOrder.h: * wtf/CPUTime.cpp: * wtf/CallbackAggregator.h: * wtf/CheckedArithmetic.h: * wtf/CheckedBoolean.h: * wtf/ClockType.cpp: * wtf/ClockType.h: * wtf/CommaPrinter.h: * wtf/CompilationThread.cpp: * wtf/CompilationThread.h: * wtf/Compiler.h: * wtf/ConcurrentPtrHashSet.cpp: * wtf/ConcurrentVector.h: * wtf/Condition.h: * wtf/CountingLock.cpp: * wtf/CrossThreadTaskHandler.cpp: * wtf/CryptographicUtilities.cpp: * wtf/CryptographicUtilities.h: * wtf/CryptographicallyRandomNumber.cpp: * wtf/CryptographicallyRandomNumber.h: * wtf/CurrentTime.cpp: * wtf/DataLog.cpp: * wtf/DataLog.h: * wtf/DateMath.cpp: * wtf/DateMath.h: * wtf/DecimalNumber.cpp: * wtf/DecimalNumber.h: * wtf/Deque.h: * wtf/DisallowCType.h: * wtf/Dominators.h: * wtf/DoublyLinkedList.h: * wtf/FastBitVector.cpp: * wtf/FastMalloc.cpp: * wtf/FastMalloc.h: * wtf/FeatureDefines.h: * wtf/FilePrintStream.cpp: * wtf/FilePrintStream.h: * wtf/FlipBytes.h: * wtf/FunctionDispatcher.cpp: * wtf/FunctionDispatcher.h: * wtf/GetPtr.h: * wtf/Gigacage.cpp: * wtf/GlobalVersion.cpp: * wtf/GraphNodeWorklist.h: * wtf/GregorianDateTime.cpp: * wtf/GregorianDateTime.h: * wtf/HashFunctions.h: * wtf/HashMap.h: * wtf/HashMethod.h: * wtf/HashSet.h: * wtf/HashTable.cpp: * wtf/HashTraits.h: * wtf/Indenter.h: * wtf/IndexSparseSet.h: * wtf/InlineASM.h: * wtf/Insertion.h: * wtf/IteratorAdaptors.h: * wtf/IteratorRange.h: * wtf/JSONValues.cpp: * wtf/JSValueMalloc.cpp: * wtf/LEBDecoder.h: * wtf/Language.cpp: * wtf/ListDump.h: * wtf/Lock.cpp: * wtf/Lock.h: * wtf/LockAlgorithm.h: * wtf/LockedPrintStream.cpp: * wtf/Locker.h: * wtf/MD5.cpp: * wtf/MD5.h: * wtf/MainThread.cpp: * wtf/MainThread.h: * wtf/MallocPtr.h: * wtf/MathExtras.h: * wtf/MediaTime.cpp: * wtf/MediaTime.h: * wtf/MemoryPressureHandler.cpp: * wtf/MessageQueue.h: * wtf/MetaAllocator.cpp: * wtf/MetaAllocator.h: * wtf/MetaAllocatorHandle.h: * wtf/MonotonicTime.cpp: * wtf/MonotonicTime.h: * wtf/NakedPtr.h: * wtf/NoLock.h: * wtf/NoTailCalls.h: * wtf/Noncopyable.h: * wtf/NumberOfCores.cpp: * wtf/NumberOfCores.h: * wtf/OSAllocator.h: * wtf/OSAllocatorPosix.cpp: * wtf/OSRandomSource.cpp: * wtf/OSRandomSource.h: * wtf/ObjcRuntimeExtras.h: * wtf/OrderMaker.h: * wtf/PackedIntVector.h: * wtf/PageAllocation.h: * wtf/PageBlock.cpp: * wtf/PageBlock.h: * wtf/PageReservation.h: * wtf/ParallelHelperPool.cpp: * wtf/ParallelHelperPool.h: * wtf/ParallelJobs.h: * wtf/ParallelJobsLibdispatch.h: * wtf/ParallelVectorIterator.h: * wtf/ParkingLot.cpp: * wtf/ParkingLot.h: * wtf/Platform.h: * wtf/PointerComparison.h: * wtf/Poisoned.cpp: * wtf/PrintStream.cpp: * wtf/PrintStream.h: * wtf/ProcessID.h: * wtf/ProcessPrivilege.cpp: * wtf/RAMSize.cpp: * wtf/RAMSize.h: * wtf/RandomDevice.cpp: * wtf/RandomNumber.cpp: * wtf/RandomNumber.h: * wtf/RandomNumberSeed.h: * wtf/RangeSet.h: * wtf/RawPointer.h: * wtf/ReadWriteLock.cpp: * wtf/RedBlackTree.h: * wtf/Ref.h: * wtf/RefCountedArray.h: * wtf/RefCountedLeakCounter.cpp: * wtf/RefCountedLeakCounter.h: * wtf/RefCounter.h: * wtf/RefPtr.h: * wtf/RetainPtr.h: * wtf/RunLoop.cpp: * wtf/RunLoop.h: * wtf/RunLoopTimer.h: * wtf/RunLoopTimerCF.cpp: * wtf/SHA1.cpp: * wtf/SHA1.h: * wtf/SaturatedArithmetic.h: (saturatedSubtraction): * wtf/SchedulePair.h: * wtf/SchedulePairCF.cpp: * wtf/SchedulePairMac.mm: * wtf/ScopedLambda.h: * wtf/Seconds.cpp: * wtf/Seconds.h: * wtf/SegmentedVector.h: * wtf/SentinelLinkedList.h: * wtf/SharedTask.h: * wtf/SimpleStats.h: * wtf/SingleRootGraph.h: * wtf/SinglyLinkedList.h: * wtf/SixCharacterHash.cpp: * wtf/SixCharacterHash.h: * wtf/SmallPtrSet.h: * wtf/Spectrum.h: * wtf/StackBounds.cpp: * wtf/StackBounds.h: * wtf/StackStats.cpp: * wtf/StackStats.h: * wtf/StackTrace.cpp: * wtf/StdLibExtras.h: * wtf/StreamBuffer.h: * wtf/StringHashDumpContext.h: * wtf/StringPrintStream.cpp: * wtf/StringPrintStream.h: * wtf/ThreadGroup.cpp: * wtf/ThreadMessage.cpp: * wtf/ThreadSpecific.h: * wtf/Threading.cpp: * wtf/Threading.h: * wtf/ThreadingPrimitives.h: * wtf/ThreadingPthreads.cpp: * wtf/TimeWithDynamicClockType.cpp: * wtf/TimeWithDynamicClockType.h: * wtf/TimingScope.cpp: * wtf/TinyLRUCache.h: * wtf/TinyPtrSet.h: * wtf/TriState.h: * wtf/TypeCasts.h: * wtf/UUID.cpp: * wtf/UnionFind.h: * wtf/VMTags.h: * wtf/ValueCheck.h: * wtf/Vector.h: * wtf/VectorTraits.h: * wtf/WallTime.cpp: * wtf/WallTime.h: * wtf/WeakPtr.h: * wtf/WeakRandom.h: * wtf/WordLock.cpp: * wtf/WordLock.h: * wtf/WorkQueue.cpp: * wtf/WorkQueue.h: * wtf/WorkerPool.cpp: * wtf/cf/LanguageCF.cpp: * wtf/cf/RunLoopCF.cpp: * wtf/cocoa/Entitlements.mm: * wtf/cocoa/MachSendRight.cpp: * wtf/cocoa/MainThreadCocoa.mm: * wtf/cocoa/MemoryFootprintCocoa.cpp: * wtf/cocoa/WorkQueueCocoa.cpp: * wtf/dtoa.cpp: * wtf/dtoa.h: * wtf/ios/WebCoreThread.cpp: * wtf/ios/WebCoreThread.h: * wtf/mac/AppKitCompatibilityDeclarations.h: * wtf/mac/DeprecatedSymbolsUsedBySafari.mm: * wtf/mbmalloc.cpp: * wtf/persistence/PersistentCoders.cpp: * wtf/persistence/PersistentDecoder.cpp: * wtf/persistence/PersistentEncoder.cpp: * wtf/spi/cf/CFBundleSPI.h: * wtf/spi/darwin/CommonCryptoSPI.h: * wtf/text/ASCIIFastPath.h: * wtf/text/ASCIILiteral.cpp: * wtf/text/AtomicString.cpp: * wtf/text/AtomicString.h: * wtf/text/AtomicStringHash.h: * wtf/text/AtomicStringImpl.cpp: * wtf/text/AtomicStringImpl.h: * wtf/text/AtomicStringTable.cpp: * wtf/text/AtomicStringTable.h: * wtf/text/Base64.cpp: * wtf/text/CString.cpp: * wtf/text/CString.h: * wtf/text/ConversionMode.h: * wtf/text/ExternalStringImpl.cpp: * wtf/text/IntegerToStringConversion.h: * wtf/text/LChar.h: * wtf/text/LineEnding.cpp: * wtf/text/StringBuffer.h: * wtf/text/StringBuilder.cpp: * wtf/text/StringBuilder.h: * wtf/text/StringBuilderJSON.cpp: * wtf/text/StringCommon.h: * wtf/text/StringConcatenate.h: * wtf/text/StringHash.h: * wtf/text/StringImpl.cpp: * wtf/text/StringImpl.h: * wtf/text/StringOperators.h: * wtf/text/StringView.cpp: * wtf/text/StringView.h: * wtf/text/SymbolImpl.cpp: * wtf/text/SymbolRegistry.cpp: * wtf/text/SymbolRegistry.h: * wtf/text/TextBreakIterator.cpp: * wtf/text/TextBreakIterator.h: * wtf/text/TextBreakIteratorInternalICU.h: * wtf/text/TextPosition.h: * wtf/text/TextStream.cpp: * wtf/text/UniquedStringImpl.h: * wtf/text/WTFString.cpp: * wtf/text/WTFString.h: * wtf/text/cocoa/StringCocoa.mm: * wtf/text/cocoa/StringViewCocoa.mm: * wtf/text/cocoa/TextBreakIteratorInternalICUCocoa.cpp: * wtf/text/icu/UTextProvider.cpp: * wtf/text/icu/UTextProvider.h: * wtf/text/icu/UTextProviderLatin1.cpp: * wtf/text/icu/UTextProviderLatin1.h: * wtf/text/icu/UTextProviderUTF16.cpp: * wtf/text/icu/UTextProviderUTF16.h: * wtf/threads/BinarySemaphore.cpp: * wtf/threads/BinarySemaphore.h: * wtf/threads/Signals.cpp: * wtf/unicode/CharacterNames.h: * wtf/unicode/Collator.h: * wtf/unicode/CollatorDefault.cpp: * wtf/unicode/UTF8.cpp: * wtf/unicode/UTF8.h: Tools: Put WorkQueue in namespace DRT so it does not conflict with WTF::WorkQueue. * DumpRenderTree/TestRunner.cpp: (TestRunner::queueLoadHTMLString): (TestRunner::queueLoadAlternateHTMLString): (TestRunner::queueBackNavigation): (TestRunner::queueForwardNavigation): (TestRunner::queueLoadingScript): (TestRunner::queueNonLoadingScript): (TestRunner::queueReload): * DumpRenderTree/WorkQueue.cpp: (WorkQueue::singleton): Deleted. (WorkQueue::WorkQueue): Deleted. (WorkQueue::queue): Deleted. (WorkQueue::dequeue): Deleted. (WorkQueue::count): Deleted. (WorkQueue::clear): Deleted. (WorkQueue::processWork): Deleted. * DumpRenderTree/WorkQueue.h: (WorkQueue::setFrozen): Deleted. * DumpRenderTree/WorkQueueItem.h: * DumpRenderTree/mac/DumpRenderTree.mm: (runTest): * DumpRenderTree/mac/FrameLoadDelegate.mm: (-[FrameLoadDelegate processWork:]): (-[FrameLoadDelegate webView:locationChangeDone:forDataSource:]): * DumpRenderTree/mac/TestRunnerMac.mm: (TestRunner::notifyDone): (TestRunner::forceImmediateCompletion): (TestRunner::queueLoad): * DumpRenderTree/win/DumpRenderTree.cpp: (runTest): * DumpRenderTree/win/FrameLoadDelegate.cpp: (FrameLoadDelegate::processWork): (FrameLoadDelegate::locationChangeDone): * DumpRenderTree/win/TestRunnerWin.cpp: (TestRunner::notifyDone): (TestRunner::forceImmediateCompletion): (TestRunner::queueLoad): Canonical link: https://commits.webkit.org/205473@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237099 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2018-10-15 14:24:49 +00:00
#pragma once
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
#include <array>
#include <wtf/Span.h>
It should be easy to find code blocks in debug dumps https://bugs.webkit.org/show_bug.cgi?id=103623 Source/JavaScriptCore: Reviewed by Goeffrey Garen. This gives CodeBlock a relatively strong, but also relatively compact, hash. We compute it lazily so that it only impacts run-time when debug support is enabled. We stringify it smartly so that it's short and easy to type. We base it on the source code so that the optimization level is irrelevant. And, we use SHA1 since it's already in our code base. Now, when a piece of code wants to print some debugging to say that it's operating on some code block, it can use this CodeBlockHash instead of memory addresses. This also takes CodeBlock debugging into the new world of print() and dataLog(). In particular, CodeBlock::dump() corresponds to the thing you want printed if you do: dataLog("I heart ", *myCodeBlock); Probably, you want to just print some identifying information at this point rather than the full bytecode dump. So, the existing CodeBlock::dump() has been renamed to CodeBlock::dumpBytecode(), and CodeBlock::dump() now prints the CodeBlockHash plus just a few little tidbits. Here's an example of CodeBlock::dump() output: EkILzr:[0x103883a00, BaselineFunctionCall] EkILzr is the CodeBlockHash. 0x103883a00 is the CodeBlock's address in memory. The other part is self-explanatory. Finally, this new notion of CodeBlockHash is available for other purposes like bisecting breakage. As such CodeBlockHash has all of the comparison operator overloads. When bisecting in DFGDriver.cpp, you can now say things like: if (codeBlock->hash() < CodeBlockHash("CAAAAA")) return false; And yes, CAAAAA is near the median hash, and the largest one is smaller than E99999. Such is life when you use base 62 to encode a 32-bit number. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CallLinkInfo.h: (CallLinkInfo): (JSC::CallLinkInfo::specializationKind): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::hash): (JSC): (JSC::CodeBlock::dumpAssumingJITType): (JSC::CodeBlock::dump): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::jettison): (JSC::EvalCodeBlock::jettison): (JSC::FunctionCodeBlock::jettison): (JSC::CodeBlock::shouldOptimizeNow): (JSC::CodeBlock::tallyFrequentExitSites): (JSC::CodeBlock::dumpValueProfiles): * bytecode/CodeBlock.h: (JSC::CodeBlock::specializationKind): (CodeBlock): (JSC::CodeBlock::getJITType): * bytecode/CodeBlockHash.cpp: Added. (JSC): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::dump): * bytecode/CodeBlockHash.h: Added. (JSC): (CodeBlockHash): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::hash): (JSC::CodeBlockHash::operator==): (JSC::CodeBlockHash::operator!=): (JSC::CodeBlockHash::operator<): (JSC::CodeBlockHash::operator>): (JSC::CodeBlockHash::operator<=): (JSC::CodeBlockHash::operator>=): * bytecode/CodeBlockWithJITType.h: Added. (JSC): (CodeBlockWithJITType): (JSC::CodeBlockWithJITType::CodeBlockWithJITType): (JSC::CodeBlockWithJITType::dump): * bytecode/CodeOrigin.cpp: Added. (JSC): (JSC::CodeOrigin::inlineDepthForCallFrame): (JSC::CodeOrigin::inlineDepth): (JSC::CodeOrigin::inlineStack): (JSC::InlineCallFrame::hash): * bytecode/CodeOrigin.h: (InlineCallFrame): (JSC::InlineCallFrame::specializationKind): (JSC): * bytecode/CodeType.cpp: Added. (WTF): (WTF::printInternal): * bytecode/CodeType.h: (WTF): * bytecode/ExecutionCounter.cpp: (JSC::ExecutionCounter::dump): * bytecode/ExecutionCounter.h: (ExecutionCounter): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dump): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dumpCodeOrigin): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOperations.cpp: * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::dfgLinkClosureCall): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpCallFrame): * jit/JITCode.cpp: Added. (WTF): (WTF::printInternal): * jit/JITCode.h: (JSC::JITCode::jitType): (WTF): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dump): (JSC::JITDisassembler::dumpForInstructions): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/CodeSpecializationKind.cpp: Added. (WTF): (WTF::printInternal): * runtime/CodeSpecializationKind.h: (JSC::specializationFromIsCall): (JSC): (JSC::specializationFromIsConstruct): (WTF): * runtime/Executable.cpp: (JSC::ExecutableBase::hashFor): (JSC): (JSC::NativeExecutable::hashFor): (JSC::ScriptExecutable::hashFor): * runtime/Executable.h: (ExecutableBase): (NativeExecutable): (ScriptExecutable): (JSC::ScriptExecutable::source): Source/WTF: Reviewed by Geoffrey Garen. Changed RawPointer to accept both const void* and void*, and use the former internally. Cleaned up SHA1 so that the functionality already used internally for self-testing is available via the API. This includes addBytes(CString) and computing hex digests. * wtf/RawPointer.h: (WTF::RawPointer::RawPointer): (RawPointer): (WTF::RawPointer::value): * wtf/SHA1.cpp: (WTF::expectSHA1): (WTF::SHA1::hexDigest): (WTF::SHA1::computeHexDigest): * wtf/SHA1.h: (WTF::SHA1::addBytes): Canonical link: https://commits.webkit.org/121814@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-11-30 03:42:29 +00:00
#include <wtf/text/CString.h>
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
#if PLATFORM(COCOA)
#include <CommonCrypto/CommonDigest.h>
#endif
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
namespace WTF {
class SHA1 {
[WTF][JSC] Make JSC and WTF aggressively-fast-malloced https://bugs.webkit.org/show_bug.cgi?id=200611 Reviewed by Saam Barati. Source/JavaScriptCore: This patch aggressively puts many classes into FastMalloc. In JSC side, we grep `std::make_unique` etc. to find potentially system-malloc-allocated classes. After this patch, all the JSC related allocations in JetStream2 cli is done from bmalloc. In the future, it would be nice that we add `WTF::makeUnique<T>` helper function and throw a compile error if `T` is not FastMalloc annotated[1]. Putting WebKit classes in FastMalloc has many benefits. 1. Simply, it is fast. 2. vmmap can tell the amount of memory used for WebKit. 3. bmalloc can isolate WebKit memory allocation from the rest of the world. This is useful since we can know more about what component is corrupting the memory from the memory corruption crash. [1]: https://bugs.webkit.org/show_bug.cgi?id=200620 * API/ObjCCallbackFunction.mm: * assembler/AbstractMacroAssembler.h: * b3/B3PhiChildren.h: * b3/air/AirAllocateRegistersAndStackAndGenerateCode.h: * b3/air/AirDisassembler.h: * bytecode/AccessCaseSnippetParams.h: * bytecode/CallVariant.h: * bytecode/DeferredSourceDump.h: * bytecode/ExecutionCounter.h: * bytecode/GetByIdStatus.h: * bytecode/GetByIdVariant.h: * bytecode/InByIdStatus.h: * bytecode/InByIdVariant.h: * bytecode/InstanceOfStatus.h: * bytecode/InstanceOfVariant.h: * bytecode/PutByIdStatus.h: * bytecode/PutByIdVariant.h: * bytecode/ValueProfile.h: * dfg/DFGAbstractInterpreter.h: * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::newVariableAccessData): * dfg/DFGFlowIndexing.h: * dfg/DFGFlowMap.h: * dfg/DFGLiveCatchVariablePreservationPhase.cpp: (JSC::DFG::LiveCatchVariablePreservationPhase::newVariableAccessData): * dfg/DFGMaximalFlushInsertionPhase.cpp: (JSC::DFG::MaximalFlushInsertionPhase::newVariableAccessData): * dfg/DFGOSRExit.h: * dfg/DFGSpeculativeJIT.h: * dfg/DFGVariableAccessData.h: * disassembler/ARM64/A64DOpcode.h: * inspector/remote/socket/RemoteInspectorMessageParser.h: * inspector/remote/socket/RemoteInspectorSocket.h: * inspector/remote/socket/RemoteInspectorSocketEndpoint.h: * jit/PCToCodeOriginMap.h: * runtime/BasicBlockLocation.h: * runtime/DoublePredictionFuzzerAgent.h: * runtime/JSRunLoopTimer.h: * runtime/PromiseDeferredTimer.h: (JSC::PromiseDeferredTimer::create): PromiseDeferredTimer should be allocated as `Ref<>` instead of `std::unique_ptr` since it is inheriting ThreadSafeRefCounted<>. Holding such a class with std::unique_ptr could lead to potentially dangerous operations (like, someone holds it with Ref<> while it is deleted by std::unique_ptr<>). * runtime/RandomizingFuzzerAgent.h: * runtime/SymbolTable.h: * runtime/VM.cpp: (JSC::VM::VM): * runtime/VM.h: * tools/JSDollarVM.cpp: * tools/SigillCrashAnalyzer.cpp: * wasm/WasmFormat.h: * wasm/WasmMemory.cpp: * wasm/WasmSignature.h: * yarr/YarrJIT.h: Source/WebCore: Changed the accessor since we changed std::unique_ptr to Ref for this field. No behavior change. * bindings/js/WorkerScriptController.cpp: (WebCore::WorkerScriptController::addTimerSetNotification): (WebCore::WorkerScriptController::removeTimerSetNotification): Source/WTF: WTF has many data structures, in particular, containers. And these containers can be allocated like `std::make_unique<Container>()`. Without WTF_MAKE_FAST_ALLOCATED, this container itself is allocated from the system malloc. This patch attaches WTF_MAKE_FAST_ALLOCATED more aggressively not to allocate them from the system malloc. And we add some `final` to containers and classes that would be never inherited. * wtf/Assertions.cpp: * wtf/Atomics.h: * wtf/AutodrainedPool.h: * wtf/Bag.h: (WTF::Bag::Bag): Deleted. (WTF::Bag::~Bag): Deleted. (WTF::Bag::clear): Deleted. (WTF::Bag::add): Deleted. (WTF::Bag::iterator::iterator): Deleted. (WTF::Bag::iterator::operator! const): Deleted. (WTF::Bag::iterator::operator* const): Deleted. (WTF::Bag::iterator::operator++): Deleted. (WTF::Bag::iterator::operator== const): Deleted. (WTF::Bag::iterator::operator!= const): Deleted. (WTF::Bag::begin): Deleted. (WTF::Bag::begin const): Deleted. (WTF::Bag::end const): Deleted. (WTF::Bag::isEmpty const): Deleted. (WTF::Bag::unwrappedHead const): Deleted. * wtf/BitVector.h: (WTF::BitVector::BitVector): Deleted. (WTF::BitVector::~BitVector): Deleted. (WTF::BitVector::operator=): Deleted. (WTF::BitVector::size const): Deleted. (WTF::BitVector::ensureSize): Deleted. (WTF::BitVector::quickGet const): Deleted. (WTF::BitVector::quickSet): Deleted. (WTF::BitVector::quickClear): Deleted. (WTF::BitVector::get const): Deleted. (WTF::BitVector::contains const): Deleted. (WTF::BitVector::set): Deleted. (WTF::BitVector::add): Deleted. (WTF::BitVector::ensureSizeAndSet): Deleted. (WTF::BitVector::clear): Deleted. (WTF::BitVector::remove): Deleted. (WTF::BitVector::merge): Deleted. (WTF::BitVector::filter): Deleted. (WTF::BitVector::exclude): Deleted. (WTF::BitVector::bitCount const): Deleted. (WTF::BitVector::isEmpty const): Deleted. (WTF::BitVector::findBit const): Deleted. (WTF::BitVector::isEmptyValue const): Deleted. (WTF::BitVector::isDeletedValue const): Deleted. (WTF::BitVector::isEmptyOrDeletedValue const): Deleted. (WTF::BitVector::operator== const): Deleted. (WTF::BitVector::hash const): Deleted. (WTF::BitVector::iterator::iterator): Deleted. (WTF::BitVector::iterator::operator* const): Deleted. (WTF::BitVector::iterator::operator++): Deleted. (WTF::BitVector::iterator::isAtEnd const): Deleted. (WTF::BitVector::iterator::operator== const): Deleted. (WTF::BitVector::iterator::operator!= const): Deleted. (WTF::BitVector::begin const): Deleted. (WTF::BitVector::end const): Deleted. (WTF::BitVector::bitsInPointer): Deleted. (WTF::BitVector::maxInlineBits): Deleted. (WTF::BitVector::byteCount): Deleted. (WTF::BitVector::makeInlineBits): Deleted. (WTF::BitVector::cleanseInlineBits): Deleted. (WTF::BitVector::bitCount): Deleted. (WTF::BitVector::findBitFast const): Deleted. (WTF::BitVector::findBitSimple const): Deleted. (WTF::BitVector::OutOfLineBits::numBits const): Deleted. (WTF::BitVector::OutOfLineBits::numWords const): Deleted. (WTF::BitVector::OutOfLineBits::bits): Deleted. (WTF::BitVector::OutOfLineBits::bits const): Deleted. (WTF::BitVector::OutOfLineBits::OutOfLineBits): Deleted. (WTF::BitVector::isInline const): Deleted. (WTF::BitVector::outOfLineBits const): Deleted. (WTF::BitVector::outOfLineBits): Deleted. (WTF::BitVector::bits): Deleted. (WTF::BitVector::bits const): Deleted. * wtf/Bitmap.h: (WTF::Bitmap::size): Deleted. (WTF::Bitmap::iterator::iterator): Deleted. (WTF::Bitmap::iterator::operator* const): Deleted. (WTF::Bitmap::iterator::operator++): Deleted. (WTF::Bitmap::iterator::operator== const): Deleted. (WTF::Bitmap::iterator::operator!= const): Deleted. (WTF::Bitmap::begin const): Deleted. (WTF::Bitmap::end const): Deleted. * wtf/Box.h: * wtf/BumpPointerAllocator.h: * wtf/CPUTime.h: * wtf/CheckedBoolean.h: * wtf/CommaPrinter.h: (WTF::CommaPrinter::CommaPrinter): Deleted. (WTF::CommaPrinter::dump const): Deleted. (WTF::CommaPrinter::didPrint const): Deleted. * wtf/CompactPointerTuple.h: (WTF::CompactPointerTuple::encodeType): Deleted. (WTF::CompactPointerTuple::decodeType): Deleted. (WTF::CompactPointerTuple::CompactPointerTuple): Deleted. (WTF::CompactPointerTuple::pointer const): Deleted. (WTF::CompactPointerTuple::setPointer): Deleted. (WTF::CompactPointerTuple::type const): Deleted. (WTF::CompactPointerTuple::setType): Deleted. * wtf/CompilationThread.h: (WTF::CompilationScope::CompilationScope): Deleted. (WTF::CompilationScope::~CompilationScope): Deleted. (WTF::CompilationScope::leaveEarly): Deleted. * wtf/CompletionHandler.h: (WTF::CompletionHandler<Out): (WTF::Detail::CallableWrapper<CompletionHandler<Out): (WTF::CompletionHandlerCallingScope::CompletionHandlerCallingScope): Deleted. (WTF::CompletionHandlerCallingScope::~CompletionHandlerCallingScope): Deleted. (WTF::CompletionHandlerCallingScope::CompletionHandler<void): Deleted. * wtf/ConcurrentBuffer.h: (WTF::ConcurrentBuffer::ConcurrentBuffer): Deleted. (WTF::ConcurrentBuffer::~ConcurrentBuffer): Deleted. (WTF::ConcurrentBuffer::growExact): Deleted. (WTF::ConcurrentBuffer::grow): Deleted. (WTF::ConcurrentBuffer::array const): Deleted. (WTF::ConcurrentBuffer::operator[]): Deleted. (WTF::ConcurrentBuffer::operator[] const): Deleted. (WTF::ConcurrentBuffer::createArray): Deleted. * wtf/ConcurrentPtrHashSet.h: (WTF::ConcurrentPtrHashSet::contains): Deleted. (WTF::ConcurrentPtrHashSet::add): Deleted. (WTF::ConcurrentPtrHashSet::size const): Deleted. (WTF::ConcurrentPtrHashSet::Table::maxLoad const): Deleted. (WTF::ConcurrentPtrHashSet::hash): Deleted. (WTF::ConcurrentPtrHashSet::cast): Deleted. (WTF::ConcurrentPtrHashSet::containsImpl const): Deleted. (WTF::ConcurrentPtrHashSet::addImpl): Deleted. * wtf/ConcurrentVector.h: (WTF::ConcurrentVector::~ConcurrentVector): Deleted. (WTF::ConcurrentVector::size const): Deleted. (WTF::ConcurrentVector::isEmpty const): Deleted. (WTF::ConcurrentVector::at): Deleted. (WTF::ConcurrentVector::at const): Deleted. (WTF::ConcurrentVector::operator[]): Deleted. (WTF::ConcurrentVector::operator[] const): Deleted. (WTF::ConcurrentVector::first): Deleted. (WTF::ConcurrentVector::first const): Deleted. (WTF::ConcurrentVector::last): Deleted. (WTF::ConcurrentVector::last const): Deleted. (WTF::ConcurrentVector::takeLast): Deleted. (WTF::ConcurrentVector::append): Deleted. (WTF::ConcurrentVector::alloc): Deleted. (WTF::ConcurrentVector::removeLast): Deleted. (WTF::ConcurrentVector::grow): Deleted. (WTF::ConcurrentVector::begin): Deleted. (WTF::ConcurrentVector::end): Deleted. (WTF::ConcurrentVector::segmentExistsFor): Deleted. (WTF::ConcurrentVector::segmentFor): Deleted. (WTF::ConcurrentVector::subscriptFor): Deleted. (WTF::ConcurrentVector::ensureSegmentsFor): Deleted. (WTF::ConcurrentVector::ensureSegment): Deleted. (WTF::ConcurrentVector::allocateSegment): Deleted. * wtf/Condition.h: (WTF::Condition::waitUntil): Deleted. (WTF::Condition::waitFor): Deleted. (WTF::Condition::wait): Deleted. (WTF::Condition::notifyOne): Deleted. (WTF::Condition::notifyAll): Deleted. * wtf/CountingLock.h: (WTF::CountingLock::LockHooks::lockHook): Deleted. (WTF::CountingLock::LockHooks::unlockHook): Deleted. (WTF::CountingLock::LockHooks::parkHook): Deleted. (WTF::CountingLock::LockHooks::handoffHook): Deleted. (WTF::CountingLock::tryLock): Deleted. (WTF::CountingLock::lock): Deleted. (WTF::CountingLock::unlock): Deleted. (WTF::CountingLock::isHeld const): Deleted. (WTF::CountingLock::isLocked const): Deleted. (WTF::CountingLock::Count::operator bool const): Deleted. (WTF::CountingLock::Count::operator== const): Deleted. (WTF::CountingLock::Count::operator!= const): Deleted. (WTF::CountingLock::tryOptimisticRead): Deleted. (WTF::CountingLock::validate): Deleted. (WTF::CountingLock::doOptimizedRead): Deleted. (WTF::CountingLock::tryOptimisticFencelessRead): Deleted. (WTF::CountingLock::fencelessValidate): Deleted. (WTF::CountingLock::doOptimizedFencelessRead): Deleted. (WTF::CountingLock::getCount): Deleted. * wtf/CrossThreadQueue.h: * wtf/CrossThreadTask.h: * wtf/CryptographicallyRandomNumber.cpp: * wtf/DataMutex.h: * wtf/DateMath.h: * wtf/Deque.h: (WTF::Deque::size const): Deleted. (WTF::Deque::isEmpty const): Deleted. (WTF::Deque::begin): Deleted. (WTF::Deque::end): Deleted. (WTF::Deque::begin const): Deleted. (WTF::Deque::end const): Deleted. (WTF::Deque::rbegin): Deleted. (WTF::Deque::rend): Deleted. (WTF::Deque::rbegin const): Deleted. (WTF::Deque::rend const): Deleted. (WTF::Deque::first): Deleted. (WTF::Deque::first const): Deleted. (WTF::Deque::last): Deleted. (WTF::Deque::last const): Deleted. (WTF::Deque::append): Deleted. * wtf/Dominators.h: * wtf/DoublyLinkedList.h: * wtf/Expected.h: * wtf/FastBitVector.h: * wtf/FileMetadata.h: * wtf/FileSystem.h: * wtf/GraphNodeWorklist.h: * wtf/GregorianDateTime.h: (WTF::GregorianDateTime::GregorianDateTime): Deleted. (WTF::GregorianDateTime::year const): Deleted. (WTF::GregorianDateTime::month const): Deleted. (WTF::GregorianDateTime::yearDay const): Deleted. (WTF::GregorianDateTime::monthDay const): Deleted. (WTF::GregorianDateTime::weekDay const): Deleted. (WTF::GregorianDateTime::hour const): Deleted. (WTF::GregorianDateTime::minute const): Deleted. (WTF::GregorianDateTime::second const): Deleted. (WTF::GregorianDateTime::utcOffset const): Deleted. (WTF::GregorianDateTime::isDST const): Deleted. (WTF::GregorianDateTime::setYear): Deleted. (WTF::GregorianDateTime::setMonth): Deleted. (WTF::GregorianDateTime::setYearDay): Deleted. (WTF::GregorianDateTime::setMonthDay): Deleted. (WTF::GregorianDateTime::setWeekDay): Deleted. (WTF::GregorianDateTime::setHour): Deleted. (WTF::GregorianDateTime::setMinute): Deleted. (WTF::GregorianDateTime::setSecond): Deleted. (WTF::GregorianDateTime::setUtcOffset): Deleted. (WTF::GregorianDateTime::setIsDST): Deleted. (WTF::GregorianDateTime::operator tm const): Deleted. (WTF::GregorianDateTime::copyFrom): Deleted. * wtf/HashTable.h: * wtf/Hasher.h: * wtf/HexNumber.h: * wtf/Indenter.h: * wtf/IndexMap.h: * wtf/IndexSet.h: * wtf/IndexSparseSet.h: * wtf/IndexedContainerIterator.h: * wtf/Insertion.h: * wtf/IteratorAdaptors.h: * wtf/IteratorRange.h: * wtf/KeyValuePair.h: * wtf/ListHashSet.h: (WTF::ListHashSet::begin): Deleted. (WTF::ListHashSet::end): Deleted. (WTF::ListHashSet::begin const): Deleted. (WTF::ListHashSet::end const): Deleted. (WTF::ListHashSet::random): Deleted. (WTF::ListHashSet::random const): Deleted. (WTF::ListHashSet::rbegin): Deleted. (WTF::ListHashSet::rend): Deleted. (WTF::ListHashSet::rbegin const): Deleted. (WTF::ListHashSet::rend const): Deleted. * wtf/Liveness.h: * wtf/LocklessBag.h: (WTF::LocklessBag::LocklessBag): Deleted. (WTF::LocklessBag::add): Deleted. (WTF::LocklessBag::iterate): Deleted. (WTF::LocklessBag::consumeAll): Deleted. (WTF::LocklessBag::consumeAllWithNode): Deleted. (WTF::LocklessBag::~LocklessBag): Deleted. * wtf/LoggingHashID.h: * wtf/MD5.h: * wtf/MachSendRight.h: * wtf/MainThreadData.h: * wtf/Markable.h: * wtf/MediaTime.h: * wtf/MemoryPressureHandler.h: * wtf/MessageQueue.h: (WTF::MessageQueue::MessageQueue): Deleted. * wtf/MetaAllocator.h: * wtf/MonotonicTime.h: (WTF::MonotonicTime::MonotonicTime): Deleted. (WTF::MonotonicTime::fromRawSeconds): Deleted. (WTF::MonotonicTime::infinity): Deleted. (WTF::MonotonicTime::nan): Deleted. (WTF::MonotonicTime::secondsSinceEpoch const): Deleted. (WTF::MonotonicTime::approximateMonotonicTime const): Deleted. (WTF::MonotonicTime::operator bool const): Deleted. (WTF::MonotonicTime::operator+ const): Deleted. (WTF::MonotonicTime::operator- const): Deleted. (WTF::MonotonicTime::operator% const): Deleted. (WTF::MonotonicTime::operator+=): Deleted. (WTF::MonotonicTime::operator-=): Deleted. (WTF::MonotonicTime::operator== const): Deleted. (WTF::MonotonicTime::operator!= const): Deleted. (WTF::MonotonicTime::operator< const): Deleted. (WTF::MonotonicTime::operator> const): Deleted. (WTF::MonotonicTime::operator<= const): Deleted. (WTF::MonotonicTime::operator>= const): Deleted. (WTF::MonotonicTime::isolatedCopy const): Deleted. (WTF::MonotonicTime::encode const): Deleted. (WTF::MonotonicTime::decode): Deleted. * wtf/NaturalLoops.h: * wtf/NoLock.h: * wtf/OSAllocator.h: * wtf/OptionSet.h: * wtf/Optional.h: * wtf/OrderMaker.h: * wtf/Packed.h: (WTF::alignof): * wtf/PackedIntVector.h: (WTF::PackedIntVector::PackedIntVector): Deleted. (WTF::PackedIntVector::operator=): Deleted. (WTF::PackedIntVector::size const): Deleted. (WTF::PackedIntVector::ensureSize): Deleted. (WTF::PackedIntVector::resize): Deleted. (WTF::PackedIntVector::clearAll): Deleted. (WTF::PackedIntVector::get const): Deleted. (WTF::PackedIntVector::set): Deleted. (WTF::PackedIntVector::mask): Deleted. * wtf/PageBlock.h: * wtf/ParallelJobsOpenMP.h: * wtf/ParkingLot.h: * wtf/PriorityQueue.h: (WTF::PriorityQueue::size const): Deleted. (WTF::PriorityQueue::isEmpty const): Deleted. (WTF::PriorityQueue::enqueue): Deleted. (WTF::PriorityQueue::peek const): Deleted. (WTF::PriorityQueue::dequeue): Deleted. (WTF::PriorityQueue::decreaseKey): Deleted. (WTF::PriorityQueue::increaseKey): Deleted. (WTF::PriorityQueue::begin const): Deleted. (WTF::PriorityQueue::end const): Deleted. (WTF::PriorityQueue::isValidHeap const): Deleted. (WTF::PriorityQueue::parentOf): Deleted. (WTF::PriorityQueue::leftChildOf): Deleted. (WTF::PriorityQueue::rightChildOf): Deleted. (WTF::PriorityQueue::siftUp): Deleted. (WTF::PriorityQueue::siftDown): Deleted. * wtf/RandomDevice.h: * wtf/Range.h: * wtf/RangeSet.h: (WTF::RangeSet::RangeSet): Deleted. (WTF::RangeSet::~RangeSet): Deleted. (WTF::RangeSet::add): Deleted. (WTF::RangeSet::contains const): Deleted. (WTF::RangeSet::overlaps const): Deleted. (WTF::RangeSet::clear): Deleted. (WTF::RangeSet::dump const): Deleted. (WTF::RangeSet::dumpRaw const): Deleted. (WTF::RangeSet::begin const): Deleted. (WTF::RangeSet::end const): Deleted. (WTF::RangeSet::addAll): Deleted. (WTF::RangeSet::compact): Deleted. (WTF::RangeSet::overlapsNonEmpty): Deleted. (WTF::RangeSet::subsumesNonEmpty): Deleted. (WTF::RangeSet::findRange const): Deleted. * wtf/RecursableLambda.h: * wtf/RedBlackTree.h: (WTF::RedBlackTree::Node::successor const): Deleted. (WTF::RedBlackTree::Node::predecessor const): Deleted. (WTF::RedBlackTree::Node::successor): Deleted. (WTF::RedBlackTree::Node::predecessor): Deleted. (WTF::RedBlackTree::Node::reset): Deleted. (WTF::RedBlackTree::Node::parent const): Deleted. (WTF::RedBlackTree::Node::setParent): Deleted. (WTF::RedBlackTree::Node::left const): Deleted. (WTF::RedBlackTree::Node::setLeft): Deleted. (WTF::RedBlackTree::Node::right const): Deleted. (WTF::RedBlackTree::Node::setRight): Deleted. (WTF::RedBlackTree::Node::color const): Deleted. (WTF::RedBlackTree::Node::setColor): Deleted. (WTF::RedBlackTree::RedBlackTree): Deleted. (WTF::RedBlackTree::insert): Deleted. (WTF::RedBlackTree::remove): Deleted. (WTF::RedBlackTree::findExact const): Deleted. (WTF::RedBlackTree::findLeastGreaterThanOrEqual const): Deleted. (WTF::RedBlackTree::findGreatestLessThanOrEqual const): Deleted. (WTF::RedBlackTree::first const): Deleted. (WTF::RedBlackTree::last const): Deleted. (WTF::RedBlackTree::size): Deleted. (WTF::RedBlackTree::isEmpty): Deleted. (WTF::RedBlackTree::treeMinimum): Deleted. (WTF::RedBlackTree::treeMaximum): Deleted. (WTF::RedBlackTree::treeInsert): Deleted. (WTF::RedBlackTree::leftRotate): Deleted. (WTF::RedBlackTree::rightRotate): Deleted. (WTF::RedBlackTree::removeFixup): Deleted. * wtf/ResourceUsage.h: * wtf/RunLoop.cpp: * wtf/RunLoopTimer.h: * wtf/SHA1.h: * wtf/Seconds.h: (WTF::Seconds::Seconds): Deleted. (WTF::Seconds::value const): Deleted. (WTF::Seconds::minutes const): Deleted. (WTF::Seconds::seconds const): Deleted. (WTF::Seconds::milliseconds const): Deleted. (WTF::Seconds::microseconds const): Deleted. (WTF::Seconds::nanoseconds const): Deleted. (WTF::Seconds::minutesAs const): Deleted. (WTF::Seconds::secondsAs const): Deleted. (WTF::Seconds::millisecondsAs const): Deleted. (WTF::Seconds::microsecondsAs const): Deleted. (WTF::Seconds::nanosecondsAs const): Deleted. (WTF::Seconds::fromMinutes): Deleted. (WTF::Seconds::fromHours): Deleted. (WTF::Seconds::fromMilliseconds): Deleted. (WTF::Seconds::fromMicroseconds): Deleted. (WTF::Seconds::fromNanoseconds): Deleted. (WTF::Seconds::infinity): Deleted. (WTF::Seconds::nan): Deleted. (WTF::Seconds::operator bool const): Deleted. (WTF::Seconds::operator+ const): Deleted. (WTF::Seconds::operator- const): Deleted. (WTF::Seconds::operator* const): Deleted. (WTF::Seconds::operator/ const): Deleted. (WTF::Seconds::operator% const): Deleted. (WTF::Seconds::operator+=): Deleted. (WTF::Seconds::operator-=): Deleted. (WTF::Seconds::operator*=): Deleted. (WTF::Seconds::operator/=): Deleted. (WTF::Seconds::operator%=): Deleted. (WTF::Seconds::operator== const): Deleted. (WTF::Seconds::operator!= const): Deleted. (WTF::Seconds::operator< const): Deleted. (WTF::Seconds::operator> const): Deleted. (WTF::Seconds::operator<= const): Deleted. (WTF::Seconds::operator>= const): Deleted. (WTF::Seconds::isolatedCopy const): Deleted. (WTF::Seconds::encode const): Deleted. (WTF::Seconds::decode): Deleted. * wtf/SegmentedVector.h: (WTF::SegmentedVector::~SegmentedVector): Deleted. (WTF::SegmentedVector::size const): Deleted. (WTF::SegmentedVector::isEmpty const): Deleted. (WTF::SegmentedVector::at): Deleted. (WTF::SegmentedVector::at const): Deleted. (WTF::SegmentedVector::operator[]): Deleted. (WTF::SegmentedVector::operator[] const): Deleted. (WTF::SegmentedVector::first): Deleted. (WTF::SegmentedVector::first const): Deleted. (WTF::SegmentedVector::last): Deleted. (WTF::SegmentedVector::last const): Deleted. (WTF::SegmentedVector::takeLast): Deleted. (WTF::SegmentedVector::append): Deleted. (WTF::SegmentedVector::alloc): Deleted. (WTF::SegmentedVector::removeLast): Deleted. (WTF::SegmentedVector::grow): Deleted. (WTF::SegmentedVector::clear): Deleted. (WTF::SegmentedVector::begin): Deleted. (WTF::SegmentedVector::end): Deleted. (WTF::SegmentedVector::shrinkToFit): Deleted. (WTF::SegmentedVector::deleteAllSegments): Deleted. (WTF::SegmentedVector::segmentExistsFor): Deleted. (WTF::SegmentedVector::segmentFor): Deleted. (WTF::SegmentedVector::subscriptFor): Deleted. (WTF::SegmentedVector::ensureSegmentsFor): Deleted. (WTF::SegmentedVector::ensureSegment): Deleted. (WTF::SegmentedVector::allocateSegment): Deleted. * wtf/SetForScope.h: * wtf/SingleRootGraph.h: * wtf/SinglyLinkedList.h: * wtf/SmallPtrSet.h: * wtf/SpanningTree.h: * wtf/Spectrum.h: * wtf/StackBounds.h: * wtf/StackShot.h: * wtf/StackShotProfiler.h: * wtf/StackStats.h: * wtf/StackTrace.h: * wtf/StreamBuffer.h: * wtf/SynchronizedFixedQueue.h: (WTF::SynchronizedFixedQueue::create): Deleted. (WTF::SynchronizedFixedQueue::open): Deleted. (WTF::SynchronizedFixedQueue::close): Deleted. (WTF::SynchronizedFixedQueue::isOpen): Deleted. (WTF::SynchronizedFixedQueue::enqueue): Deleted. (WTF::SynchronizedFixedQueue::dequeue): Deleted. (WTF::SynchronizedFixedQueue::SynchronizedFixedQueue): Deleted. * wtf/SystemTracing.h: * wtf/ThreadGroup.h: (WTF::ThreadGroup::create): Deleted. (WTF::ThreadGroup::threads const): Deleted. (WTF::ThreadGroup::getLock): Deleted. (WTF::ThreadGroup::weakFromThis): Deleted. * wtf/ThreadSpecific.h: * wtf/ThreadingPrimitives.h: (WTF::Mutex::impl): Deleted. * wtf/TimeWithDynamicClockType.h: (WTF::TimeWithDynamicClockType::TimeWithDynamicClockType): Deleted. (WTF::TimeWithDynamicClockType::fromRawSeconds): Deleted. (WTF::TimeWithDynamicClockType::secondsSinceEpoch const): Deleted. (WTF::TimeWithDynamicClockType::clockType const): Deleted. (WTF::TimeWithDynamicClockType::withSameClockAndRawSeconds const): Deleted. (WTF::TimeWithDynamicClockType::operator bool const): Deleted. (WTF::TimeWithDynamicClockType::operator+ const): Deleted. (WTF::TimeWithDynamicClockType::operator- const): Deleted. (WTF::TimeWithDynamicClockType::operator+=): Deleted. (WTF::TimeWithDynamicClockType::operator-=): Deleted. (WTF::TimeWithDynamicClockType::operator== const): Deleted. (WTF::TimeWithDynamicClockType::operator!= const): Deleted. * wtf/TimingScope.h: * wtf/TinyLRUCache.h: * wtf/TinyPtrSet.h: * wtf/URLParser.cpp: * wtf/URLParser.h: * wtf/Unexpected.h: * wtf/Variant.h: * wtf/WTFSemaphore.h: (WTF::Semaphore::Semaphore): Deleted. (WTF::Semaphore::signal): Deleted. (WTF::Semaphore::waitUntil): Deleted. (WTF::Semaphore::waitFor): Deleted. (WTF::Semaphore::wait): Deleted. * wtf/WallTime.h: (WTF::WallTime::WallTime): Deleted. (WTF::WallTime::fromRawSeconds): Deleted. (WTF::WallTime::infinity): Deleted. (WTF::WallTime::nan): Deleted. (WTF::WallTime::secondsSinceEpoch const): Deleted. (WTF::WallTime::approximateWallTime const): Deleted. (WTF::WallTime::operator bool const): Deleted. (WTF::WallTime::operator+ const): Deleted. (WTF::WallTime::operator- const): Deleted. (WTF::WallTime::operator+=): Deleted. (WTF::WallTime::operator-=): Deleted. (WTF::WallTime::operator== const): Deleted. (WTF::WallTime::operator!= const): Deleted. (WTF::WallTime::operator< const): Deleted. (WTF::WallTime::operator> const): Deleted. (WTF::WallTime::operator<= const): Deleted. (WTF::WallTime::operator>= const): Deleted. (WTF::WallTime::isolatedCopy const): Deleted. * wtf/WeakHashSet.h: (WTF::WeakHashSet::WeakHashSetConstIterator::WeakHashSetConstIterator): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::get const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator* const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator-> const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator++): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::skipEmptyBuckets): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator== const): Deleted. (WTF::WeakHashSet::WeakHashSetConstIterator::operator!= const): Deleted. (WTF::WeakHashSet::WeakHashSet): Deleted. (WTF::WeakHashSet::begin const): Deleted. (WTF::WeakHashSet::end const): Deleted. (WTF::WeakHashSet::add): Deleted. (WTF::WeakHashSet::remove): Deleted. (WTF::WeakHashSet::contains const): Deleted. (WTF::WeakHashSet::capacity const): Deleted. (WTF::WeakHashSet::computesEmpty const): Deleted. (WTF::WeakHashSet::hasNullReferences const): Deleted. (WTF::WeakHashSet::computeSize const): Deleted. (WTF::WeakHashSet::checkConsistency const): Deleted. * wtf/WeakRandom.h: (WTF::WeakRandom::WeakRandom): Deleted. (WTF::WeakRandom::setSeed): Deleted. (WTF::WeakRandom::seed const): Deleted. (WTF::WeakRandom::get): Deleted. (WTF::WeakRandom::getUint32): Deleted. (WTF::WeakRandom::lowOffset): Deleted. (WTF::WeakRandom::highOffset): Deleted. (WTF::WeakRandom::nextState): Deleted. (WTF::WeakRandom::generate): Deleted. (WTF::WeakRandom::advance): Deleted. * wtf/WordLock.h: (WTF::WordLock::lock): Deleted. (WTF::WordLock::unlock): Deleted. (WTF::WordLock::isHeld const): Deleted. (WTF::WordLock::isLocked const): Deleted. (WTF::WordLock::isFullyReset const): Deleted. * wtf/generic/MainThreadGeneric.cpp: * wtf/glib/GMutexLocker.h: * wtf/linux/CurrentProcessMemoryStatus.h: * wtf/posix/ThreadingPOSIX.cpp: (WTF::Semaphore::Semaphore): Deleted. (WTF::Semaphore::~Semaphore): Deleted. (WTF::Semaphore::wait): Deleted. (WTF::Semaphore::post): Deleted. * wtf/text/ASCIILiteral.h: (WTF::ASCIILiteral::operator const char* const): Deleted. (WTF::ASCIILiteral::fromLiteralUnsafe): Deleted. (WTF::ASCIILiteral::null): Deleted. (WTF::ASCIILiteral::characters const): Deleted. (WTF::ASCIILiteral::ASCIILiteral): Deleted. * wtf/text/AtomString.h: (WTF::AtomString::operator=): Deleted. (WTF::AtomString::isHashTableDeletedValue const): Deleted. (WTF::AtomString::existingHash const): Deleted. (WTF::AtomString::operator const String& const): Deleted. (WTF::AtomString::string const): Deleted. (WTF::AtomString::impl const): Deleted. (WTF::AtomString::is8Bit const): Deleted. (WTF::AtomString::characters8 const): Deleted. (WTF::AtomString::characters16 const): Deleted. (WTF::AtomString::length const): Deleted. (WTF::AtomString::operator[] const): Deleted. (WTF::AtomString::contains const): Deleted. (WTF::AtomString::containsIgnoringASCIICase const): Deleted. (WTF::AtomString::find const): Deleted. (WTF::AtomString::findIgnoringASCIICase const): Deleted. (WTF::AtomString::startsWith const): Deleted. (WTF::AtomString::startsWithIgnoringASCIICase const): Deleted. (WTF::AtomString::endsWith const): Deleted. (WTF::AtomString::endsWithIgnoringASCIICase const): Deleted. (WTF::AtomString::toInt const): Deleted. (WTF::AtomString::toDouble const): Deleted. (WTF::AtomString::toFloat const): Deleted. (WTF::AtomString::percentage const): Deleted. (WTF::AtomString::isNull const): Deleted. (WTF::AtomString::isEmpty const): Deleted. (WTF::AtomString::operator NSString * const): Deleted. * wtf/text/AtomStringImpl.h: (WTF::AtomStringImpl::lookUp): Deleted. (WTF::AtomStringImpl::add): Deleted. (WTF::AtomStringImpl::addWithStringTableProvider): Deleted. * wtf/text/CString.h: (WTF::CStringBuffer::data): Deleted. (WTF::CStringBuffer::length const): Deleted. (WTF::CStringBuffer::CStringBuffer): Deleted. (WTF::CStringBuffer::mutableData): Deleted. (WTF::CString::CString): Deleted. (WTF::CString::data const): Deleted. (WTF::CString::length const): Deleted. (WTF::CString::isNull const): Deleted. (WTF::CString::buffer const): Deleted. (WTF::CString::isHashTableDeletedValue const): Deleted. * wtf/text/ExternalStringImpl.h: (WTF::ExternalStringImpl::freeExternalBuffer): Deleted. * wtf/text/LineBreakIteratorPoolICU.h: * wtf/text/NullTextBreakIterator.h: * wtf/text/OrdinalNumber.h: * wtf/text/StringBuffer.h: * wtf/text/StringBuilder.h: * wtf/text/StringConcatenateNumbers.h: * wtf/text/StringHasher.h: * wtf/text/StringImpl.h: * wtf/text/StringView.cpp: * wtf/text/StringView.h: (WTF::StringView::left const): Deleted. (WTF::StringView::right const): Deleted. (WTF::StringView::underlyingStringIsValid const): Deleted. (WTF::StringView::setUnderlyingString): Deleted. * wtf/text/SymbolImpl.h: (WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl): Deleted. (WTF::SymbolImpl::StaticSymbolImpl::operator SymbolImpl&): Deleted. (WTF::PrivateSymbolImpl::PrivateSymbolImpl): Deleted. (WTF::RegisteredSymbolImpl::symbolRegistry const): Deleted. (WTF::RegisteredSymbolImpl::clearSymbolRegistry): Deleted. (WTF::RegisteredSymbolImpl::RegisteredSymbolImpl): Deleted. * wtf/text/SymbolRegistry.h: * wtf/text/TextBreakIterator.h: * wtf/text/TextPosition.h: * wtf/text/TextStream.h: * wtf/text/WTFString.h: (WTF::String::swap): Deleted. (WTF::String::adopt): Deleted. (WTF::String::isNull const): Deleted. (WTF::String::isEmpty const): Deleted. (WTF::String::impl const): Deleted. (WTF::String::releaseImpl): Deleted. (WTF::String::length const): Deleted. (WTF::String::characters8 const): Deleted. (WTF::String::characters16 const): Deleted. (WTF::String::is8Bit const): Deleted. (WTF::String::sizeInBytes const): Deleted. (WTF::String::operator[] const): Deleted. (WTF::String::find const): Deleted. (WTF::String::findIgnoringASCIICase const): Deleted. (WTF::String::reverseFind const): Deleted. (WTF::String::contains const): Deleted. (WTF::String::containsIgnoringASCIICase const): Deleted. (WTF::String::startsWith const): Deleted. (WTF::String::startsWithIgnoringASCIICase const): Deleted. (WTF::String::hasInfixStartingAt const): Deleted. (WTF::String::endsWith const): Deleted. (WTF::String::endsWithIgnoringASCIICase const): Deleted. (WTF::String::hasInfixEndingAt const): Deleted. (WTF::String::append): Deleted. (WTF::String::left const): Deleted. (WTF::String::right const): Deleted. (WTF::String::createUninitialized): Deleted. (WTF::String::fromUTF8WithLatin1Fallback): Deleted. (WTF::String::isAllASCII const): Deleted. (WTF::String::isAllLatin1 const): Deleted. (WTF::String::isSpecialCharacter const): Deleted. (WTF::String::isHashTableDeletedValue const): Deleted. (WTF::String::hash const): Deleted. (WTF::String::existingHash const): Deleted. * wtf/text/cf/TextBreakIteratorCF.h: * wtf/text/icu/TextBreakIteratorICU.h: * wtf/text/icu/UTextProviderLatin1.h: * wtf/threads/BinarySemaphore.h: (WTF::BinarySemaphore::waitFor): Deleted. (WTF::BinarySemaphore::wait): Deleted. * wtf/unicode/Collator.h: * wtf/win/GDIObject.h: * wtf/win/PathWalker.h: * wtf/win/Win32Handle.h: Canonical link: https://commits.webkit.org/214396@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@248546 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-08-12 20:57:15 +00:00
WTF_MAKE_FAST_ALLOCATED;
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
public:
JavaScriptCore: Mark all exported symbols in the header file automatically. https://bugs.webkit.org/show_bug.cgi?id=72855 Reviewed by Darin Adler. Added WTF_EXPORT_PRIVATE and JS_EXPORT_PRIVATE based on JavaScriptCore.exp files. The change is generated by a tool calledListExportables (https://github.com/omo/ListExportables) * API/OpaqueJSString.h: * bytecode/CodeBlock.h: * bytecode/SamplingTool.h: * debugger/Debugger.h: * debugger/DebuggerActivation.h: * debugger/DebuggerCallFrame.h: * heap/AllocationSpace.h: * heap/HandleHeap.h: * heap/Heap.h: * heap/MachineStackMarker.h: * heap/MarkStack.h: * heap/VTableSpectrum.h: * heap/WriteBarrierSupport.h: * parser/Nodes.h: * parser/ParserArena.h: * profiler/Profile.h: * runtime/ArgList.h: * runtime/CallData.h: * runtime/Completion.h: * runtime/ConstructData.h: * runtime/DateInstance.h: * runtime/Error.h: * runtime/ExceptionHelpers.h: * runtime/FunctionConstructor.h: * runtime/Identifier.h: * runtime/InitializeThreading.h: * runtime/InternalFunction.h: * runtime/JSArray.h: * runtime/JSByteArray.h: * runtime/JSCell.h: * runtime/JSFunction.h: * runtime/JSGlobalData.cpp: * runtime/JSGlobalData.h: * runtime/JSGlobalObject.h: * runtime/JSGlobalThis.h: * runtime/JSLock.h: * runtime/JSObject.h: * runtime/JSString.h: * runtime/JSValue.h: * runtime/JSVariableObject.h: * runtime/Lookup.h: * runtime/MemoryStatistics.h: * runtime/ObjectPrototype.h: * runtime/Options.h: * runtime/PropertyDescriptor.h: * runtime/PropertyNameArray.h: * runtime/PropertySlot.h: * runtime/RegExp.h: * runtime/RegExpObject.h: * runtime/SamplingCounter.h: * runtime/SmallStrings.h: * runtime/StringObject.h: * runtime/Structure.h: * runtime/TimeoutChecker.h: * runtime/UString.h: * runtime/WriteBarrier.h: * wtf/ArrayBufferView.h: * wtf/ByteArray.h: * wtf/CryptographicallyRandomNumber.h: * wtf/CurrentTime.h: * wtf/DateMath.h: * wtf/DecimalNumber.h: * wtf/FastMalloc.cpp: * wtf/FastMalloc.h: * wtf/MD5.h: * wtf/MainThread.h: * wtf/MetaAllocator.h: * wtf/MetaAllocatorHandle.h: * wtf/OSAllocator.h: * wtf/PageBlock.h: * wtf/RandomNumber.h: * wtf/RefCountedLeakCounter.h: * wtf/SHA1.h: * wtf/Threading.cpp: * wtf/Threading.h: * wtf/ThreadingPrimitives.h: * wtf/WTFThreadData.h: * wtf/dtoa.h: * wtf/text/AtomicString.h: * wtf/text/CString.h: * wtf/text/StringBuilder.h: * wtf/text/StringImpl.h: * wtf/text/WTFString.h: * wtf/unicode/Collator.h: * wtf/unicode/UTF8.h: * yarr/Yarr.h: * yarr/YarrPattern.h: Canonical link: https://commits.webkit.org/93051@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@104900 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-01-13 07:23:44 +00:00
WTF_EXPORT_PRIVATE SHA1();
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
WTF_EXPORT_PRIVATE void addBytes(Span<const std::byte>);
void addBytes(Span<const uint8_t> input)
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
{
addBytes(asBytes(input));
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
}
It should be easy to find code blocks in debug dumps https://bugs.webkit.org/show_bug.cgi?id=103623 Source/JavaScriptCore: Reviewed by Goeffrey Garen. This gives CodeBlock a relatively strong, but also relatively compact, hash. We compute it lazily so that it only impacts run-time when debug support is enabled. We stringify it smartly so that it's short and easy to type. We base it on the source code so that the optimization level is irrelevant. And, we use SHA1 since it's already in our code base. Now, when a piece of code wants to print some debugging to say that it's operating on some code block, it can use this CodeBlockHash instead of memory addresses. This also takes CodeBlock debugging into the new world of print() and dataLog(). In particular, CodeBlock::dump() corresponds to the thing you want printed if you do: dataLog("I heart ", *myCodeBlock); Probably, you want to just print some identifying information at this point rather than the full bytecode dump. So, the existing CodeBlock::dump() has been renamed to CodeBlock::dumpBytecode(), and CodeBlock::dump() now prints the CodeBlockHash plus just a few little tidbits. Here's an example of CodeBlock::dump() output: EkILzr:[0x103883a00, BaselineFunctionCall] EkILzr is the CodeBlockHash. 0x103883a00 is the CodeBlock's address in memory. The other part is self-explanatory. Finally, this new notion of CodeBlockHash is available for other purposes like bisecting breakage. As such CodeBlockHash has all of the comparison operator overloads. When bisecting in DFGDriver.cpp, you can now say things like: if (codeBlock->hash() < CodeBlockHash("CAAAAA")) return false; And yes, CAAAAA is near the median hash, and the largest one is smaller than E99999. Such is life when you use base 62 to encode a 32-bit number. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CallLinkInfo.h: (CallLinkInfo): (JSC::CallLinkInfo::specializationKind): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::hash): (JSC): (JSC::CodeBlock::dumpAssumingJITType): (JSC::CodeBlock::dump): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::jettison): (JSC::EvalCodeBlock::jettison): (JSC::FunctionCodeBlock::jettison): (JSC::CodeBlock::shouldOptimizeNow): (JSC::CodeBlock::tallyFrequentExitSites): (JSC::CodeBlock::dumpValueProfiles): * bytecode/CodeBlock.h: (JSC::CodeBlock::specializationKind): (CodeBlock): (JSC::CodeBlock::getJITType): * bytecode/CodeBlockHash.cpp: Added. (JSC): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::dump): * bytecode/CodeBlockHash.h: Added. (JSC): (CodeBlockHash): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::hash): (JSC::CodeBlockHash::operator==): (JSC::CodeBlockHash::operator!=): (JSC::CodeBlockHash::operator<): (JSC::CodeBlockHash::operator>): (JSC::CodeBlockHash::operator<=): (JSC::CodeBlockHash::operator>=): * bytecode/CodeBlockWithJITType.h: Added. (JSC): (CodeBlockWithJITType): (JSC::CodeBlockWithJITType::CodeBlockWithJITType): (JSC::CodeBlockWithJITType::dump): * bytecode/CodeOrigin.cpp: Added. (JSC): (JSC::CodeOrigin::inlineDepthForCallFrame): (JSC::CodeOrigin::inlineDepth): (JSC::CodeOrigin::inlineStack): (JSC::InlineCallFrame::hash): * bytecode/CodeOrigin.h: (InlineCallFrame): (JSC::InlineCallFrame::specializationKind): (JSC): * bytecode/CodeType.cpp: Added. (WTF): (WTF::printInternal): * bytecode/CodeType.h: (WTF): * bytecode/ExecutionCounter.cpp: (JSC::ExecutionCounter::dump): * bytecode/ExecutionCounter.h: (ExecutionCounter): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dump): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dumpCodeOrigin): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOperations.cpp: * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::dfgLinkClosureCall): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpCallFrame): * jit/JITCode.cpp: Added. (WTF): (WTF::printInternal): * jit/JITCode.h: (JSC::JITCode::jitType): (WTF): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dump): (JSC::JITDisassembler::dumpForInstructions): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/CodeSpecializationKind.cpp: Added. (WTF): (WTF::printInternal): * runtime/CodeSpecializationKind.h: (JSC::specializationFromIsCall): (JSC): (JSC::specializationFromIsConstruct): (WTF): * runtime/Executable.cpp: (JSC::ExecutableBase::hashFor): (JSC): (JSC::NativeExecutable::hashFor): (JSC::ScriptExecutable::hashFor): * runtime/Executable.h: (ExecutableBase): (NativeExecutable): (ScriptExecutable): (JSC::ScriptExecutable::source): Source/WTF: Reviewed by Geoffrey Garen. Changed RawPointer to accept both const void* and void*, and use the former internally. Cleaned up SHA1 so that the functionality already used internally for self-testing is available via the API. This includes addBytes(CString) and computing hex digests. * wtf/RawPointer.h: (WTF::RawPointer::RawPointer): (RawPointer): (WTF::RawPointer::value): * wtf/SHA1.cpp: (WTF::expectSHA1): (WTF::SHA1::hexDigest): (WTF::SHA1::computeHexDigest): * wtf/SHA1.h: (WTF::SHA1::addBytes): Canonical link: https://commits.webkit.org/121814@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-11-30 03:42:29 +00:00
void addBytes(const CString& input)
{
addBytes(input.bytes());
}
void addBytes(const uint8_t* input, size_t length)
{
addBytes(Span { input, length });
It should be easy to find code blocks in debug dumps https://bugs.webkit.org/show_bug.cgi?id=103623 Source/JavaScriptCore: Reviewed by Goeffrey Garen. This gives CodeBlock a relatively strong, but also relatively compact, hash. We compute it lazily so that it only impacts run-time when debug support is enabled. We stringify it smartly so that it's short and easy to type. We base it on the source code so that the optimization level is irrelevant. And, we use SHA1 since it's already in our code base. Now, when a piece of code wants to print some debugging to say that it's operating on some code block, it can use this CodeBlockHash instead of memory addresses. This also takes CodeBlock debugging into the new world of print() and dataLog(). In particular, CodeBlock::dump() corresponds to the thing you want printed if you do: dataLog("I heart ", *myCodeBlock); Probably, you want to just print some identifying information at this point rather than the full bytecode dump. So, the existing CodeBlock::dump() has been renamed to CodeBlock::dumpBytecode(), and CodeBlock::dump() now prints the CodeBlockHash plus just a few little tidbits. Here's an example of CodeBlock::dump() output: EkILzr:[0x103883a00, BaselineFunctionCall] EkILzr is the CodeBlockHash. 0x103883a00 is the CodeBlock's address in memory. The other part is self-explanatory. Finally, this new notion of CodeBlockHash is available for other purposes like bisecting breakage. As such CodeBlockHash has all of the comparison operator overloads. When bisecting in DFGDriver.cpp, you can now say things like: if (codeBlock->hash() < CodeBlockHash("CAAAAA")) return false; And yes, CAAAAA is near the median hash, and the largest one is smaller than E99999. Such is life when you use base 62 to encode a 32-bit number. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CallLinkInfo.h: (CallLinkInfo): (JSC::CallLinkInfo::specializationKind): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::hash): (JSC): (JSC::CodeBlock::dumpAssumingJITType): (JSC::CodeBlock::dump): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::jettison): (JSC::EvalCodeBlock::jettison): (JSC::FunctionCodeBlock::jettison): (JSC::CodeBlock::shouldOptimizeNow): (JSC::CodeBlock::tallyFrequentExitSites): (JSC::CodeBlock::dumpValueProfiles): * bytecode/CodeBlock.h: (JSC::CodeBlock::specializationKind): (CodeBlock): (JSC::CodeBlock::getJITType): * bytecode/CodeBlockHash.cpp: Added. (JSC): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::dump): * bytecode/CodeBlockHash.h: Added. (JSC): (CodeBlockHash): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::hash): (JSC::CodeBlockHash::operator==): (JSC::CodeBlockHash::operator!=): (JSC::CodeBlockHash::operator<): (JSC::CodeBlockHash::operator>): (JSC::CodeBlockHash::operator<=): (JSC::CodeBlockHash::operator>=): * bytecode/CodeBlockWithJITType.h: Added. (JSC): (CodeBlockWithJITType): (JSC::CodeBlockWithJITType::CodeBlockWithJITType): (JSC::CodeBlockWithJITType::dump): * bytecode/CodeOrigin.cpp: Added. (JSC): (JSC::CodeOrigin::inlineDepthForCallFrame): (JSC::CodeOrigin::inlineDepth): (JSC::CodeOrigin::inlineStack): (JSC::InlineCallFrame::hash): * bytecode/CodeOrigin.h: (InlineCallFrame): (JSC::InlineCallFrame::specializationKind): (JSC): * bytecode/CodeType.cpp: Added. (WTF): (WTF::printInternal): * bytecode/CodeType.h: (WTF): * bytecode/ExecutionCounter.cpp: (JSC::ExecutionCounter::dump): * bytecode/ExecutionCounter.h: (ExecutionCounter): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dump): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dumpCodeOrigin): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOperations.cpp: * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::dfgLinkClosureCall): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpCallFrame): * jit/JITCode.cpp: Added. (WTF): (WTF::printInternal): * jit/JITCode.h: (JSC::JITCode::jitType): (WTF): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dump): (JSC::JITDisassembler::dumpForInstructions): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/CodeSpecializationKind.cpp: Added. (WTF): (WTF::printInternal): * runtime/CodeSpecializationKind.h: (JSC::specializationFromIsCall): (JSC): (JSC::specializationFromIsConstruct): (WTF): * runtime/Executable.cpp: (JSC::ExecutableBase::hashFor): (JSC): (JSC::NativeExecutable::hashFor): (JSC::ScriptExecutable::hashFor): * runtime/Executable.h: (ExecutableBase): (NativeExecutable): (ScriptExecutable): (JSC::ScriptExecutable::source): Source/WTF: Reviewed by Geoffrey Garen. Changed RawPointer to accept both const void* and void*, and use the former internally. Cleaned up SHA1 so that the functionality already used internally for self-testing is available via the API. This includes addBytes(CString) and computing hex digests. * wtf/RawPointer.h: (WTF::RawPointer::RawPointer): (RawPointer): (WTF::RawPointer::value): * wtf/SHA1.cpp: (WTF::expectSHA1): (WTF::SHA1::hexDigest): (WTF::SHA1::computeHexDigest): * wtf/SHA1.h: (WTF::SHA1::addBytes): Canonical link: https://commits.webkit.org/121814@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-11-30 03:42:29 +00:00
}
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
// Size of the SHA1 hash
Use constexpr in more places and remove some unnecessary external linkage. https://bugs.webkit.org/show_bug.cgi?id=203115 Reviewed by Yusuke Suzuki. Source/JavaScriptCore: * API/JSWrapperMap.mm: * heap/MarkedBlock.cpp: * inspector/JSGlobalObjectInspectorController.cpp: (Inspector::JSGlobalObjectInspectorController::appendAPIBacktrace): * inspector/ScriptCallStack.h: * interpreter/CLoopStack.h: * interpreter/CallFrame.h: * interpreter/ShadowChicken.h: * jit/AssemblyHelpers.cpp: (JSC::emitRandomThunkImpl): * jit/GPRInfo.cpp: * jit/GPRInfo.h: * jit/JIT.h: * jit/PCToCodeOriginMap.cpp: * jit/SpecializedThunkJIT.h: * jit/ThunkGenerators.cpp: (JSC::roundThunkGenerator): * jit/UnusedPointer.h: * llint/LLIntData.h: * llint/LLIntPCRanges.h: * parser/Lexer.h: * parser/Nodes.h: * runtime/CodeCache.cpp: * runtime/CodeCache.h: * runtime/ErrorInstance.h: * runtime/JSAsyncFunction.h: * runtime/JSAsyncGeneratorFunction.h: * runtime/JSBoundFunction.h: * runtime/JSCallee.h: * runtime/JSFunction.h: * runtime/JSGeneratorFunction.h: * runtime/JSNativeStdFunction.h: * runtime/JSRunLoopTimer.cpp: (): Deleted. * runtime/JSRunLoopTimer.h: * runtime/ProxyObject.h: * runtime/Watchdog.cpp: (): Deleted. * runtime/Watchdog.h: * wasm/js/WebAssemblyFunction.h: * wasm/js/WebAssemblyFunctionBase.h: * wasm/js/WebAssemblyWrapperFunction.h: Source/WebCore: No new tests because this patch adds no new functionality. * html/track/TextTrackCueGeneric.cpp: * html/track/VTTCue.cpp: * page/EventHandler.cpp: (WebCore::SyntheticTouchPoint::SyntheticTouchPoint): * page/FrameTree.h: * page/scrolling/ScrollingMomentumCalculator.cpp: (WebCore::projectedInertialScrollDistance): * platform/graphics/FontTaggedSettings.h: * platform/graphics/Region.cpp: * platform/graphics/filters/FELighting.cpp: * rendering/TableLayout.h: * rendering/svg/SVGRenderingContext.h: Source/WebKit: * UIProcess/API/APIContentRuleListStore.h: * WebProcess/Plugins/Netscape/mac/PluginProxyMac.mm: Source/WTF: Also removed unused lockSpinLimit in Threading.h. * wtf/MD5.h: * wtf/SHA1.h: * wtf/StackBounds.h: * wtf/Threading.h: Tools: * TestWebKitAPI/Tests/WTF/WeakPtr.cpp: (TestWebKitAPI::TEST): * TestWebKitAPI/Tests/mac/IsNavigationActionTrusted.mm: Canonical link: https://commits.webkit.org/216529@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@251263 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2019-10-17 22:18:57 +00:00
WTF_EXPORT_PRIVATE static constexpr size_t hashSize = 20;
// type for computing SHA1 hash
typedef std::array<uint8_t, hashSize> Digest;
WTF_EXPORT_PRIVATE void computeHash(Digest&);
It should be easy to find code blocks in debug dumps https://bugs.webkit.org/show_bug.cgi?id=103623 Source/JavaScriptCore: Reviewed by Goeffrey Garen. This gives CodeBlock a relatively strong, but also relatively compact, hash. We compute it lazily so that it only impacts run-time when debug support is enabled. We stringify it smartly so that it's short and easy to type. We base it on the source code so that the optimization level is irrelevant. And, we use SHA1 since it's already in our code base. Now, when a piece of code wants to print some debugging to say that it's operating on some code block, it can use this CodeBlockHash instead of memory addresses. This also takes CodeBlock debugging into the new world of print() and dataLog(). In particular, CodeBlock::dump() corresponds to the thing you want printed if you do: dataLog("I heart ", *myCodeBlock); Probably, you want to just print some identifying information at this point rather than the full bytecode dump. So, the existing CodeBlock::dump() has been renamed to CodeBlock::dumpBytecode(), and CodeBlock::dump() now prints the CodeBlockHash plus just a few little tidbits. Here's an example of CodeBlock::dump() output: EkILzr:[0x103883a00, BaselineFunctionCall] EkILzr is the CodeBlockHash. 0x103883a00 is the CodeBlock's address in memory. The other part is self-explanatory. Finally, this new notion of CodeBlockHash is available for other purposes like bisecting breakage. As such CodeBlockHash has all of the comparison operator overloads. When bisecting in DFGDriver.cpp, you can now say things like: if (codeBlock->hash() < CodeBlockHash("CAAAAA")) return false; And yes, CAAAAA is near the median hash, and the largest one is smaller than E99999. Such is life when you use base 62 to encode a 32-bit number. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CallLinkInfo.h: (CallLinkInfo): (JSC::CallLinkInfo::specializationKind): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::hash): (JSC): (JSC::CodeBlock::dumpAssumingJITType): (JSC::CodeBlock::dump): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::jettison): (JSC::EvalCodeBlock::jettison): (JSC::FunctionCodeBlock::jettison): (JSC::CodeBlock::shouldOptimizeNow): (JSC::CodeBlock::tallyFrequentExitSites): (JSC::CodeBlock::dumpValueProfiles): * bytecode/CodeBlock.h: (JSC::CodeBlock::specializationKind): (CodeBlock): (JSC::CodeBlock::getJITType): * bytecode/CodeBlockHash.cpp: Added. (JSC): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::dump): * bytecode/CodeBlockHash.h: Added. (JSC): (CodeBlockHash): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::hash): (JSC::CodeBlockHash::operator==): (JSC::CodeBlockHash::operator!=): (JSC::CodeBlockHash::operator<): (JSC::CodeBlockHash::operator>): (JSC::CodeBlockHash::operator<=): (JSC::CodeBlockHash::operator>=): * bytecode/CodeBlockWithJITType.h: Added. (JSC): (CodeBlockWithJITType): (JSC::CodeBlockWithJITType::CodeBlockWithJITType): (JSC::CodeBlockWithJITType::dump): * bytecode/CodeOrigin.cpp: Added. (JSC): (JSC::CodeOrigin::inlineDepthForCallFrame): (JSC::CodeOrigin::inlineDepth): (JSC::CodeOrigin::inlineStack): (JSC::InlineCallFrame::hash): * bytecode/CodeOrigin.h: (InlineCallFrame): (JSC::InlineCallFrame::specializationKind): (JSC): * bytecode/CodeType.cpp: Added. (WTF): (WTF::printInternal): * bytecode/CodeType.h: (WTF): * bytecode/ExecutionCounter.cpp: (JSC::ExecutionCounter::dump): * bytecode/ExecutionCounter.h: (ExecutionCounter): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dump): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dumpCodeOrigin): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOperations.cpp: * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::dfgLinkClosureCall): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpCallFrame): * jit/JITCode.cpp: Added. (WTF): (WTF::printInternal): * jit/JITCode.h: (JSC::JITCode::jitType): (WTF): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dump): (JSC::JITDisassembler::dumpForInstructions): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/CodeSpecializationKind.cpp: Added. (WTF): (WTF::printInternal): * runtime/CodeSpecializationKind.h: (JSC::specializationFromIsCall): (JSC): (JSC::specializationFromIsConstruct): (WTF): * runtime/Executable.cpp: (JSC::ExecutableBase::hashFor): (JSC): (JSC::NativeExecutable::hashFor): (JSC::ScriptExecutable::hashFor): * runtime/Executable.h: (ExecutableBase): (NativeExecutable): (ScriptExecutable): (JSC::ScriptExecutable::source): Source/WTF: Reviewed by Geoffrey Garen. Changed RawPointer to accept both const void* and void*, and use the former internally. Cleaned up SHA1 so that the functionality already used internally for self-testing is available via the API. This includes addBytes(CString) and computing hex digests. * wtf/RawPointer.h: (WTF::RawPointer::RawPointer): (RawPointer): (WTF::RawPointer::value): * wtf/SHA1.cpp: (WTF::expectSHA1): (WTF::SHA1::hexDigest): (WTF::SHA1::computeHexDigest): * wtf/SHA1.h: (WTF::SHA1::addBytes): Canonical link: https://commits.webkit.org/121814@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-11-30 03:42:29 +00:00
// Get a hex hash from the digest.
WTF_EXPORT_PRIVATE static CString hexDigest(const Digest&);
It should be easy to find code blocks in debug dumps https://bugs.webkit.org/show_bug.cgi?id=103623 Source/JavaScriptCore: Reviewed by Goeffrey Garen. This gives CodeBlock a relatively strong, but also relatively compact, hash. We compute it lazily so that it only impacts run-time when debug support is enabled. We stringify it smartly so that it's short and easy to type. We base it on the source code so that the optimization level is irrelevant. And, we use SHA1 since it's already in our code base. Now, when a piece of code wants to print some debugging to say that it's operating on some code block, it can use this CodeBlockHash instead of memory addresses. This also takes CodeBlock debugging into the new world of print() and dataLog(). In particular, CodeBlock::dump() corresponds to the thing you want printed if you do: dataLog("I heart ", *myCodeBlock); Probably, you want to just print some identifying information at this point rather than the full bytecode dump. So, the existing CodeBlock::dump() has been renamed to CodeBlock::dumpBytecode(), and CodeBlock::dump() now prints the CodeBlockHash plus just a few little tidbits. Here's an example of CodeBlock::dump() output: EkILzr:[0x103883a00, BaselineFunctionCall] EkILzr is the CodeBlockHash. 0x103883a00 is the CodeBlock's address in memory. The other part is self-explanatory. Finally, this new notion of CodeBlockHash is available for other purposes like bisecting breakage. As such CodeBlockHash has all of the comparison operator overloads. When bisecting in DFGDriver.cpp, you can now say things like: if (codeBlock->hash() < CodeBlockHash("CAAAAA")) return false; And yes, CAAAAA is near the median hash, and the largest one is smaller than E99999. Such is life when you use base 62 to encode a 32-bit number. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CallLinkInfo.h: (CallLinkInfo): (JSC::CallLinkInfo::specializationKind): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::hash): (JSC): (JSC::CodeBlock::dumpAssumingJITType): (JSC::CodeBlock::dump): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::jettison): (JSC::EvalCodeBlock::jettison): (JSC::FunctionCodeBlock::jettison): (JSC::CodeBlock::shouldOptimizeNow): (JSC::CodeBlock::tallyFrequentExitSites): (JSC::CodeBlock::dumpValueProfiles): * bytecode/CodeBlock.h: (JSC::CodeBlock::specializationKind): (CodeBlock): (JSC::CodeBlock::getJITType): * bytecode/CodeBlockHash.cpp: Added. (JSC): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::dump): * bytecode/CodeBlockHash.h: Added. (JSC): (CodeBlockHash): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::hash): (JSC::CodeBlockHash::operator==): (JSC::CodeBlockHash::operator!=): (JSC::CodeBlockHash::operator<): (JSC::CodeBlockHash::operator>): (JSC::CodeBlockHash::operator<=): (JSC::CodeBlockHash::operator>=): * bytecode/CodeBlockWithJITType.h: Added. (JSC): (CodeBlockWithJITType): (JSC::CodeBlockWithJITType::CodeBlockWithJITType): (JSC::CodeBlockWithJITType::dump): * bytecode/CodeOrigin.cpp: Added. (JSC): (JSC::CodeOrigin::inlineDepthForCallFrame): (JSC::CodeOrigin::inlineDepth): (JSC::CodeOrigin::inlineStack): (JSC::InlineCallFrame::hash): * bytecode/CodeOrigin.h: (InlineCallFrame): (JSC::InlineCallFrame::specializationKind): (JSC): * bytecode/CodeType.cpp: Added. (WTF): (WTF::printInternal): * bytecode/CodeType.h: (WTF): * bytecode/ExecutionCounter.cpp: (JSC::ExecutionCounter::dump): * bytecode/ExecutionCounter.h: (ExecutionCounter): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dump): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dumpCodeOrigin): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOperations.cpp: * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::dfgLinkClosureCall): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpCallFrame): * jit/JITCode.cpp: Added. (WTF): (WTF::printInternal): * jit/JITCode.h: (JSC::JITCode::jitType): (WTF): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dump): (JSC::JITDisassembler::dumpForInstructions): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/CodeSpecializationKind.cpp: Added. (WTF): (WTF::printInternal): * runtime/CodeSpecializationKind.h: (JSC::specializationFromIsCall): (JSC): (JSC::specializationFromIsConstruct): (WTF): * runtime/Executable.cpp: (JSC::ExecutableBase::hashFor): (JSC): (JSC::NativeExecutable::hashFor): (JSC::ScriptExecutable::hashFor): * runtime/Executable.h: (ExecutableBase): (NativeExecutable): (ScriptExecutable): (JSC::ScriptExecutable::source): Source/WTF: Reviewed by Geoffrey Garen. Changed RawPointer to accept both const void* and void*, and use the former internally. Cleaned up SHA1 so that the functionality already used internally for self-testing is available via the API. This includes addBytes(CString) and computing hex digests. * wtf/RawPointer.h: (WTF::RawPointer::RawPointer): (RawPointer): (WTF::RawPointer::value): * wtf/SHA1.cpp: (WTF::expectSHA1): (WTF::SHA1::hexDigest): (WTF::SHA1::computeHexDigest): * wtf/SHA1.h: (WTF::SHA1::addBytes): Canonical link: https://commits.webkit.org/121814@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-11-30 03:42:29 +00:00
// Compute the hex digest directly.
It should be easy to find code blocks in debug dumps https://bugs.webkit.org/show_bug.cgi?id=103623 Source/JavaScriptCore: Reviewed by Goeffrey Garen. This gives CodeBlock a relatively strong, but also relatively compact, hash. We compute it lazily so that it only impacts run-time when debug support is enabled. We stringify it smartly so that it's short and easy to type. We base it on the source code so that the optimization level is irrelevant. And, we use SHA1 since it's already in our code base. Now, when a piece of code wants to print some debugging to say that it's operating on some code block, it can use this CodeBlockHash instead of memory addresses. This also takes CodeBlock debugging into the new world of print() and dataLog(). In particular, CodeBlock::dump() corresponds to the thing you want printed if you do: dataLog("I heart ", *myCodeBlock); Probably, you want to just print some identifying information at this point rather than the full bytecode dump. So, the existing CodeBlock::dump() has been renamed to CodeBlock::dumpBytecode(), and CodeBlock::dump() now prints the CodeBlockHash plus just a few little tidbits. Here's an example of CodeBlock::dump() output: EkILzr:[0x103883a00, BaselineFunctionCall] EkILzr is the CodeBlockHash. 0x103883a00 is the CodeBlock's address in memory. The other part is self-explanatory. Finally, this new notion of CodeBlockHash is available for other purposes like bisecting breakage. As such CodeBlockHash has all of the comparison operator overloads. When bisecting in DFGDriver.cpp, you can now say things like: if (codeBlock->hash() < CodeBlockHash("CAAAAA")) return false; And yes, CAAAAA is near the median hash, and the largest one is smaller than E99999. Such is life when you use base 62 to encode a 32-bit number. * CMakeLists.txt: * GNUmakefile.list.am: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * Target.pri: * bytecode/CallLinkInfo.h: (CallLinkInfo): (JSC::CallLinkInfo::specializationKind): * bytecode/CodeBlock.cpp: (JSC::CodeBlock::hash): (JSC): (JSC::CodeBlock::dumpAssumingJITType): (JSC::CodeBlock::dump): (JSC::CodeBlock::dumpBytecode): (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::finalizeUnconditionally): (JSC::CodeBlock::resetStubInternal): (JSC::CodeBlock::reoptimize): (JSC::ProgramCodeBlock::jettison): (JSC::EvalCodeBlock::jettison): (JSC::FunctionCodeBlock::jettison): (JSC::CodeBlock::shouldOptimizeNow): (JSC::CodeBlock::tallyFrequentExitSites): (JSC::CodeBlock::dumpValueProfiles): * bytecode/CodeBlock.h: (JSC::CodeBlock::specializationKind): (CodeBlock): (JSC::CodeBlock::getJITType): * bytecode/CodeBlockHash.cpp: Added. (JSC): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::dump): * bytecode/CodeBlockHash.h: Added. (JSC): (CodeBlockHash): (JSC::CodeBlockHash::CodeBlockHash): (JSC::CodeBlockHash::hash): (JSC::CodeBlockHash::operator==): (JSC::CodeBlockHash::operator!=): (JSC::CodeBlockHash::operator<): (JSC::CodeBlockHash::operator>): (JSC::CodeBlockHash::operator<=): (JSC::CodeBlockHash::operator>=): * bytecode/CodeBlockWithJITType.h: Added. (JSC): (CodeBlockWithJITType): (JSC::CodeBlockWithJITType::CodeBlockWithJITType): (JSC::CodeBlockWithJITType::dump): * bytecode/CodeOrigin.cpp: Added. (JSC): (JSC::CodeOrigin::inlineDepthForCallFrame): (JSC::CodeOrigin::inlineDepth): (JSC::CodeOrigin::inlineStack): (JSC::InlineCallFrame::hash): * bytecode/CodeOrigin.h: (InlineCallFrame): (JSC::InlineCallFrame::specializationKind): (JSC): * bytecode/CodeType.cpp: Added. (WTF): (WTF::printInternal): * bytecode/CodeType.h: (WTF): * bytecode/ExecutionCounter.cpp: (JSC::ExecutionCounter::dump): * bytecode/ExecutionCounter.h: (ExecutionCounter): * dfg/DFGByteCodeParser.cpp: (JSC::DFG::ByteCodeParser::parseCodeBlock): * dfg/DFGDisassembler.cpp: (JSC::DFG::Disassembler::dump): * dfg/DFGGraph.cpp: (JSC::DFG::Graph::dumpCodeOrigin): * dfg/DFGOSRExitCompiler.cpp: * dfg/DFGOperations.cpp: * dfg/DFGRepatch.cpp: (JSC::DFG::generateProtoChainAccessStub): (JSC::DFG::tryCacheGetByID): (JSC::DFG::tryBuildGetByIDList): (JSC::DFG::emitPutReplaceStub): (JSC::DFG::emitPutTransitionStub): (JSC::DFG::dfgLinkClosureCall): * interpreter/Interpreter.cpp: (JSC::Interpreter::dumpCallFrame): * jit/JITCode.cpp: Added. (WTF): (WTF::printInternal): * jit/JITCode.h: (JSC::JITCode::jitType): (WTF): * jit/JITDisassembler.cpp: (JSC::JITDisassembler::dump): (JSC::JITDisassembler::dumpForInstructions): * jit/JITPropertyAccess.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): (JSC::JIT::privateCompileGetByVal): (JSC::JIT::privateCompilePutByVal): * jit/JITPropertyAccess32_64.cpp: (JSC::JIT::privateCompilePutByIdTransition): (JSC::JIT::privateCompilePatchGetArrayLength): (JSC::JIT::privateCompileGetByIdProto): (JSC::JIT::privateCompileGetByIdSelfList): (JSC::JIT::privateCompileGetByIdProtoList): (JSC::JIT::privateCompileGetByIdChainList): (JSC::JIT::privateCompileGetByIdChain): * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): * runtime/CodeSpecializationKind.cpp: Added. (WTF): (WTF::printInternal): * runtime/CodeSpecializationKind.h: (JSC::specializationFromIsCall): (JSC): (JSC::specializationFromIsConstruct): (WTF): * runtime/Executable.cpp: (JSC::ExecutableBase::hashFor): (JSC): (JSC::NativeExecutable::hashFor): (JSC::ScriptExecutable::hashFor): * runtime/Executable.h: (ExecutableBase): (NativeExecutable): (ScriptExecutable): (JSC::ScriptExecutable::source): Source/WTF: Reviewed by Geoffrey Garen. Changed RawPointer to accept both const void* and void*, and use the former internally. Cleaned up SHA1 so that the functionality already used internally for self-testing is available via the API. This includes addBytes(CString) and computing hex digests. * wtf/RawPointer.h: (WTF::RawPointer::RawPointer): (RawPointer): (WTF::RawPointer::value): * wtf/SHA1.cpp: (WTF::expectSHA1): (WTF::SHA1::hexDigest): (WTF::SHA1::computeHexDigest): * wtf/SHA1.h: (WTF::SHA1::addBytes): Canonical link: https://commits.webkit.org/121814@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136199 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-11-30 03:42:29 +00:00
WTF_EXPORT_PRIVATE CString computeHexDigest();
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
private:
#if PLATFORM(COCOA)
CC_SHA1_CTX m_context;
#else
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
void finalize();
void processBlock();
void reset();
uint8_t m_buffer[64];
size_t m_cursor; // Number of bytes filled in m_buffer (0-64).
uint64_t m_totalBytes; // Number of bytes added so far.
uint32_t m_hash[5];
#endif
2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 The code is based on Chromium's portable SHA-1 implementation (src/base/sha1_portable.cc). Modifications were made in order to make the code comply with WebKit coding style. * GNUmakefile.am: * JavaScriptCore.exp: * JavaScriptCore.gypi: * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: * JavaScriptCore.vcproj/WTF/WTF.vcproj: * JavaScriptCore.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/MD5.cpp: (WTF::MD5::MD5): * wtf/SHA1.cpp: Added. (WTF::testSHA1): This function will be run the first time SHA1 constructor is called. This function computes a few hash values and checks the results in debug builds. However, constructor is probably not a good place to run these tests, so we need to find a good place for it (bug 55853). (WTF::expectSHA1): (WTF::f): (WTF::k): (WTF::rotateLeft): (WTF::SHA1::SHA1): (WTF::SHA1::addBytes): (WTF::SHA1::computeHash): (WTF::SHA1::finalize): (WTF::SHA1::processBlock): (WTF::SHA1::reset): * wtf/SHA1.h: Added. (WTF::SHA1::addBytes): * wtf/wtf.pri: 2011-03-06 Yuta Kitamura <yutak@chromium.org> Reviewed by Kent Tamura. Add SHA-1 for new WebSocket protocol https://bugs.webkit.org/show_bug.cgi?id=55039 * ForwardingHeaders/wtf/SHA1.h: Added. Canonical link: https://commits.webkit.org/70340@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@80446 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-03-07 03:17:01 +00:00
};
} // namespace WTF
using WTF::SHA1;