source: webkit/trunk/Source/JavaScriptCore/jit/BaselineJITPlan.cpp

Last change on this file was 288261, checked in by [email protected], 3 years ago

Update ARM64EHash
https://bugs.webkit.org/show_bug.cgi?id=235192

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • assembler/AssemblerBuffer.h:

(JSC::ARM64EHash::ARM64EHash):
(JSC::ARM64EHash::~ARM64EHash):
(JSC::ARM64EHash::allocatePinForCurrentThreadAndInitializeHash):
(JSC::ARM64EHash::deallocatePinForCurrentThread):
(JSC::ARM64EHash::update):
(JSC::ARM64EHash::pin):
(JSC::ARM64EHash::currentHash):
(JSC::ARM64EHash::setUpdatedHash):
(JSC::AssemblerBuffer::AssemblerBuffer):
(JSC::AssemblerBuffer::arm64eHash):
(JSC::AssemblerBuffer::putIntegralUnchecked):
(JSC::ARM64EHash::bitsForDiversifier): Deleted.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::allocate):

  • assembler/SecureARM64EHashPins.cpp: Added.

(JSC::WriteToJITRegionScope::WriteToJITRegionScope):
(JSC::WriteToJITRegionScope::~WriteToJITRegionScope):
(JSC::ValidateNonReentrancyScope::ValidateNonReentrancyScope):
(JSC::ValidateNonReentrancyScope::~ValidateNonReentrancyScope):
(JSC::allocateInExecutableMemory):
(JSC::SecureARM64EHashPins::Page::Page):
(JSC::initializePage):
(JSC::SecureARM64EHashPins::metadata):
(JSC::SecureARM64EHashPins::initializeAtStartup):
(JSC::SecureARM64EHashPins::allocatePinForCurrentThreadImpl):
(JSC::SecureARM64EHashPins::allocatePinForCurrentThread):
(JSC::SecureARM64EHashPins::deallocatePinForCurrentThread):

  • assembler/SecureARM64EHashPins.h: Added.

(JSC::SecureARM64EHashPins::firstPage):

  • assembler/SecureARM64EHashPinsInlines.h: Added.

(JSC::SecureARM64EHashPins::keyForCurrentThread):
(JSC::SecureARM64EHashPins::forEachPage):
(JSC::SecureARM64EHashPins::forEachEntry):
(JSC::SecureARM64EHashPins::findFirstEntry):
(JSC::SecureARM64EHashPins::pinForCurrentThread):

  • heap/MarkedBlock.h:
  • heap/MarkedSpace.h:
  • heap/SlotVisitor.h:
  • jit/BaselineJITPlan.cpp:

(JSC::BaselineJITPlan::BaselineJITPlan):
(JSC::BaselineJITPlan::compileInThreadImpl):

  • jit/ExecutableAllocator.cpp:
  • parser/Parser.h:
  • runtime/InitializeThreading.cpp:

(JSC::initialize):

  • runtime/IterationStatus.h: Removed.
  • runtime/JSCConfig.h:
  • wasm/WasmAirIRGenerator.cpp:

(JSC::Wasm::parseAndCompileAir):

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::parseAndCompileB3):

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::compileFunction):

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
  • wtf/Bitmap.h:

(WTF::WordType>::set):
(WTF::WordType>::forEachSetBit const):

  • wtf/CMakeLists.txt:
  • wtf/IterationStatus.h: Added.
File size: 2.9 KB
Line 
1/*
2 * Copyright (C) 2021 Apple Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "config.h"
27#include "BaselineJITPlan.h"
28
29#if ENABLE(JIT)
30
31namespace JSC {
32
33BaselineJITPlan::BaselineJITPlan(CodeBlock* codeBlock, BytecodeIndex loopOSREntryBytecodeIndex)
34 : JITPlan(JITCompilationMode::Baseline, codeBlock)
35 , m_jit(codeBlock->vm(), codeBlock, loopOSREntryBytecodeIndex)
36{
37#if CPU(ARM64E)
38 m_jit.m_assembler.buffer().arm64eHash().deallocatePinForCurrentThread();
39#endif
40 m_jit.doMainThreadPreparationBeforeCompile();
41}
42
43auto BaselineJITPlan::compileInThreadImpl() -> CompilationPath
44{
45#if CPU(ARM64E)
46 m_jit.m_assembler.buffer().arm64eHash().allocatePinForCurrentThreadAndInitializeHash();
47#endif
48 m_jit.compileAndLinkWithoutFinalizing(JITCompilationCanFail);
49 return BaselinePath;
50}
51
52size_t BaselineJITPlan::codeSize() const
53{
54 return m_jit.codeSize();
55}
56
57CompilationResult BaselineJITPlan::finalize()
58{
59 CompilationResult result = m_jit.finalizeOnMainThread(m_codeBlock);
60 switch (result) {
61 case CompilationFailed:
62 CODEBLOCK_LOG_EVENT(m_codeBlock, "delayJITCompile", ("compilation failed"));
63 dataLogLnIf(Options::verboseOSR(), " JIT compilation failed.");
64 m_codeBlock->dontJITAnytimeSoon();
65 m_codeBlock->m_didFailJITCompilation = true;
66 break;
67 case CompilationSuccessful:
68 WTF::crossModifyingCodeFence();
69 dataLogLnIf(Options::verboseOSR(), " JIT compilation successful.");
70 m_codeBlock->ownerExecutable()->installCode(m_codeBlock);
71 m_codeBlock->jitSoon();
72 break;
73 default:
74 RELEASE_ASSERT_NOT_REACHED();
75 break;
76 }
77
78 return result;
79}
80
81} // namespace JSC
82
83#endif // ENABLE(JIT)
Note: See TracBrowser for help on using the repository browser.