Skip to content

Commit 1c7f8a2

Browse files
author
Jianchun Xu
committed
JIT: build and test changes
Build: - Add backend files. - Enable --no-jit option, and as default on OSX (temporarily). Test: - Add `dynapogo` test variant. Change `interpreted` test variant to create dynamic profiles and input to `dynapogo` test variant. To ensure the same profile file is used for these 2 variants, TestLoader (new) assigns each test case a unique test id, and uses the id to generate dynamic profile file name. - Add 'disable_jit` test variant and as default on OSX (temporarily). - Exclude 2 failing tests that need further work.
1 parent 86dc097 commit 1c7f8a2

File tree

17 files changed

+297
-168
lines changed

17 files changed

+297
-168
lines changed

CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ if(CLR_CMAKE_PLATFORM_XPLAT)
186186
-DUNICODE
187187
-D_SAFECRT_USE_CPP_OVERLOADS=1
188188
-D__STDC_WANT_LIB_EXT1__=1
189-
-DDISABLE_JIT=1 # xplat-todo: enable the JIT for Linux
190189
)
191190

192191
set(CMAKE_CXX_STANDARD 11)
@@ -291,6 +290,13 @@ if(CLR_CMAKE_PLATFORM_XPLAT)
291290
add_definitions(-DFEATURE_PAL)
292291
endif(CLR_CMAKE_PLATFORM_XPLAT)
293292

293+
if(NO_JIT
294+
OR CLR_CMAKE_PLATFORM_DARWIN) # TODO: JIT for OSX
295+
add_definitions(-DDISABLE_JIT=1)
296+
else()
297+
set(BuildJIT 1)
298+
endif()
299+
294300
if(WITHOUT_FEATURES)
295301
add_definitions(${WITHOUT_FEATURES})
296302
endif(WITHOUT_FEATURES)

build.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ PRINT_USAGE() {
3737
echo " --icu=PATH Path to ICU include folder (see example below)"
3838
echo " -j [N], --jobs[=N] Multicore build, allow N jobs at once"
3939
echo " -n, --ninja Build with ninja instead of make"
40-
echo " --no-icu Compile without unicode/icu support"
40+
echo " --no-icu Compile without unicode/icu support"
41+
echo " --no-jit Disable JIT"
4142
echo " --xcode Generate XCode project"
4243
echo " -t, --test-build Test build (by default Release build)"
4344
echo " --static Build as static library (by default shared library)"
@@ -62,6 +63,7 @@ BUILD_TYPE="Release"
6263
CMAKE_GEN=
6364
MAKE=make
6465
MULTICORE_BUILD=""
66+
NO_JIT=
6567
ICU_PATH="-DICU_SETTINGS_RESET=1"
6668
STATIC_LIBRARY="-DSHARED_LIBRARY_SH=1"
6769
WITHOUT_FEATURES=""
@@ -191,6 +193,10 @@ while [[ $# -gt 0 ]]; do
191193
ICU_PATH="-DNO_ICU_PATH_GIVEN_SH=1"
192194
;;
193195

196+
--no-jit)
197+
NO_JIT="-DNO_JIT=1"
198+
;;
199+
194200
--xcode)
195201
CMAKE_GEN="-G Xcode -DCC_XCODE_PROJECT=1"
196202
MAKE=0
@@ -306,7 +312,7 @@ else
306312
fi
307313

308314
echo Generating $BUILD_TYPE makefiles
309-
cmake $CMAKE_GEN $CC_PREFIX $ICU_PATH $STATIC_LIBRARY $ARCH -DCMAKE_BUILD_TYPE=$BUILD_TYPE $WITHOUT_FEATURES ../..
315+
cmake $CMAKE_GEN $CC_PREFIX $ICU_PATH $STATIC_LIBRARY $ARCH -DCMAKE_BUILD_TYPE=$BUILD_TYPE $NO_JIT $WITHOUT_FEATURES ../..
310316

311317
_RET=$?
312318
if [[ $? == 0 ]]; then

lib/Backend/CMakeLists.txt

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
add_library (Chakra.Backend
1+
add_library (Chakra.Backend OBJECT
22
AgenPeeps.cpp
3+
AsmJsJITInfo.cpp
34
Backend.cpp
5+
BackendApi.cpp
46
BackendOpCodeAttrAsmJs.cpp
57
BackwardPass.cpp
68
BailOut.cpp
@@ -10,10 +12,13 @@ add_library (Chakra.Backend
1012
CodeGenWorkItem.cpp
1113
DbCheckPostLower.cpp
1214
Debug.cpp
15+
EhFrame.cpp
1316
EmitBuffer.cpp
1417
Encoder.cpp
1518
FlowGraph.cpp
1619
Func.cpp
20+
FunctionJITRuntimeInfo.cpp
21+
FunctionJITTimeInfo.cpp
1722
GlobOpt.cpp
1823
GlobOptBailOut.cpp
1924
GlobOptExpr.cpp
@@ -32,6 +37,18 @@ add_library (Chakra.Backend
3237
InliningHeuristics.cpp
3338
IntBounds.cpp
3439
InterpreterThunkEmitter.cpp
40+
JITObjTypeSpecFldInfo.cpp
41+
JITOutput.cpp
42+
JITTimeConstructorCache.cpp
43+
JITTimeFixedField.cpp
44+
JITTimeFunctionBody.cpp
45+
JITTimePolymorphicInlineCache.cpp
46+
JITTimePolymorphicInlineCacheInfo.cpp
47+
JITTimeProfileInfo.cpp
48+
JITTimeScriptContext.cpp
49+
JITTimeWorkItem.cpp
50+
JITType.cpp
51+
JITTypeHandler.cpp
3552
JnHelperMethod.cpp
3653
LinearScan.cpp
3754
Lower.cpp
@@ -48,31 +65,43 @@ add_library (Chakra.Backend
4865
Region.cpp
4966
SccLiveness.cpp
5067
Security.cpp
68+
ServerScriptContext.cpp
69+
ServerThreadContext.cpp
5170
SimpleJitProfilingHelpers.cpp
5271
SimpleLayout.cpp
5372
SwitchIRBuilder.cpp
5473
Sym.cpp
5574
SymTable.cpp
5675
TempTracker.cpp
5776
ValueRelativeOffset.cpp
58-
amd64\EncoderMD.cpp
59-
amd64\LinearScanMD.cpp
60-
amd64\LowererMDArch.cpp
61-
amd64\PeepsMD.cpp
62-
amd64\PrologEncoderMD.cpp
63-
arm64\EncoderMD.cpp
64-
arm64\LowerMD.cpp
65-
arm\EncoderMD.cpp
66-
arm\LegalizeMD.cpp
67-
arm\LinearScanMD.cpp
68-
arm\LowerMD.cpp
69-
arm\PeepsMD.cpp
70-
arm\UnwindInfoManager.cpp
71-
i386\EncoderMD.cpp
72-
i386\LinearScanMD.cpp
73-
i386\LowererMDArch.cpp
74-
i386\PeepsMD.cpp
77+
amd64/EncoderMD.cpp
78+
amd64/LinearScanMD.cpp
79+
amd64/LowererMDArch.cpp
80+
amd64/PeepsMD.cpp
81+
amd64/PrologEncoderMD.cpp
82+
amd64/LinearScanMdA.S
83+
amd64/Thunks.S
84+
# arm64/EncoderMD.cpp
85+
# arm64/LowerMD.cpp
86+
# arm/EncoderMD.cpp
87+
# arm/LegalizeMD.cpp
88+
# arm/LinearScanMD.cpp
89+
# arm/LowerMD.cpp
90+
# arm/PeepsMD.cpp
91+
# arm/UnwindInfoManager.cpp
92+
# i386/EncoderMD.cpp
93+
# i386/LinearScanMD.cpp
94+
# i386/LowererMDArch.cpp
95+
# i386/PeepsMD.cpp
7596
)
7697

7798
target_include_directories (
78-
Chakra.Backend PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
99+
Chakra.Backend PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
100+
amd64
101+
../Common
102+
../JITIDL
103+
../Runtime
104+
../Runtime/ByteCode
105+
../Runtime/Math
106+
../Parser
107+
)

lib/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
add_compile_options(-fPIC)
22

3+
if(BuildJIT)
4+
add_subdirectory (Backend)
5+
endif()
6+
37
add_subdirectory (Common)
48
add_subdirectory (Parser)
59
add_subdirectory (Runtime)

lib/Common/Memory/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@ set (CCM_SOURCE_FILES ${CCM_SOURCE_FILES}
3939
)
4040

4141
if(CC_TARGETS_AMD64)
42-
# xplat-todo: Include platform\XDataAllocator.cpp
43-
# Needed on windows, need a replacement for linux to do
44-
# amd64 stack walking
4542
set (CCM_SOURCE_FILES ${CCM_SOURCE_FILES}
43+
amd64/XDataAllocator.cpp
4644
amd64/amd64_SAVE_REGISTERS.S
47-
)
45+
)
4846
endif()
4947

5048
add_library (Chakra.Common.Memory OBJECT

lib/Jsrt/CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
if(BuildJIT)
2+
set(chakra_backend_objects $<TARGET_OBJECTS:Chakra.Backend>)
3+
endif()
4+
15
add_library (Chakra.Jsrt STATIC
26
Jsrt.cpp
37
JsrtDebugUtils.cpp
@@ -14,7 +18,8 @@ add_library (Chakra.Jsrt STATIC
1418
JsrtSourceHolder.cpp
1519
JsrtThreadService.cpp
1620
$<TARGET_OBJECTS:Chakra.Jsrt.Core>
17-
# Do not take this in. We need to control the
21+
${chakra_backend_objects}
22+
# Do not take this in. We need to control the
1823
# linker order because of global constructors
1924
# and cross dependencies among them
2025
# $<TARGET_OBJECTS:Chakra.Common.Core>
@@ -36,12 +41,14 @@ add_library (Chakra.Jsrt STATIC
3641
)
3742

3843
add_subdirectory(Core)
39-
44+
4045
target_include_directories (
4146
Chakra.Jsrt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
47+
../Backend
4248
../JITIDL
4349
../Runtime
4450
../Runtime/Base
51+
../Runtime/ByteCode
4552
../Runtime/Debug
4653
../Parser
4754
)

lib/Jsrt/Core/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ add_library (Chakra.Jsrt.Core OBJECT
44

55
target_include_directories (
66
Chakra.Jsrt.Core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
7+
../../Backend
78
../../JITIDL
89
../../Runtime
10+
../../Runtime/ByteCode
911
../../Parser
1012
../
1113
)

lib/Runtime/Base/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ add_library (Chakra.Runtime.Base OBJECT
2929
ThreadContextTlsEntry.cpp
3030
ThreadServiceWrapperBase.cpp
3131
Utf8SourceInfo.cpp
32-
VTuneChakraProfile.cpp
32+
VTuneChakraProfile.cpp
3333
# WindowsFoundationAdapter.cpp
3434
# WindowsGlobalizationAdapter.cpp
35+
jitprofiling.cpp
3536
)
3637

3738
target_include_directories (

lib/Runtime/Language/CMakeLists.txt

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
if(BuildJIT)
2+
add_definitions(-D_ENABLE_DYNAMIC_THUNKS=1)
3+
endif()
4+
15
set(CRL_SOURCE_FILES ${CRL_SOURCE_FILES}
26
AsmJs.cpp
37
AsmJsByteCodeGenerator.cpp
@@ -26,32 +30,33 @@ set(CRL_SOURCE_FILES ${CRL_SOURCE_FILES}
2630
JavascriptStackWalker.cpp
2731
ModuleNamespace.cpp
2832
ModuleNamespaceEnumerator.cpp
33+
ObjTypeSpecFldInfo.cpp
2934
ProfilingHelpers.cpp
3035
#ReadOnlyDynamicProfileInfo.cpp
3136
RuntimeLanguagePch.cpp
32-
# SimdBool16x8Operation.cpp
33-
# SimdBool16x8OperationX86X64.cpp
34-
# SimdBool32x4Operation.cpp
35-
# SimdBool32x4OperationX86X64.cpp
36-
# SimdBool8x16Operation.cpp
37-
# SimdBool8x16OperationX86X64.cpp
38-
# SimdFloat32x4Operation.cpp
39-
# SimdFloat32x4OperationX86X64.cpp
40-
# SimdFloat64x2Operation.cpp
41-
# SimdFloat64x2OperationX86X64.cpp
42-
# SimdInt16x8Operation.cpp
43-
# SimdInt16x8OperationX86X64.cpp
44-
# SimdInt32x4Operation.cpp
45-
# SimdInt32x4OperationX86X64.cpp
46-
# SimdInt8x16Operation.cpp
47-
# SimdInt8x16OperationX86X64.cpp
48-
# SimdUint16x8Operation.cpp
49-
# SimdUint16x8OperationX86X64.cpp
50-
# SimdUint32x4Operation.cpp
51-
# SimdUint32x4OperationX86X64.cpp
52-
# SimdUint8x16Operation.cpp
53-
# SimdUint8x16OperationX86X64.cpp
54-
# SimdUtils.cpp
37+
SimdBool16x8Operation.cpp
38+
SimdBool16x8OperationX86X64.cpp
39+
SimdBool32x4Operation.cpp
40+
SimdBool32x4OperationX86X64.cpp
41+
SimdBool8x16Operation.cpp
42+
SimdBool8x16OperationX86X64.cpp
43+
SimdFloat32x4Operation.cpp
44+
SimdFloat32x4OperationX86X64.cpp
45+
SimdFloat64x2Operation.cpp
46+
SimdFloat64x2OperationX86X64.cpp
47+
SimdInt16x8Operation.cpp
48+
SimdInt16x8OperationX86X64.cpp
49+
SimdInt32x4Operation.cpp
50+
SimdInt32x4OperationX86X64.cpp
51+
SimdInt8x16Operation.cpp
52+
SimdInt8x16OperationX86X64.cpp
53+
SimdUint16x8Operation.cpp
54+
SimdUint16x8OperationX86X64.cpp
55+
SimdUint32x4Operation.cpp
56+
SimdUint32x4OperationX86X64.cpp
57+
SimdUint8x16Operation.cpp
58+
SimdUint8x16OperationX86X64.cpp
59+
SimdUtils.cpp
5560
SourceDynamicProfileManager.cpp
5661
SourceTextModuleRecord.cpp
5762
StackTraceArguments.cpp
@@ -64,6 +69,7 @@ if(CC_TARGETS_AMD64)
6469
amd64/AsmJsJitTemplate.cpp
6570
amd64/StackFrame.SystemV.cpp
6671
amd64/JavascriptOperatorsA.S
72+
amd64/amd64_Thunks.S
6773
)
6874
elseif(CC_TARGETS_X86)
6975
set (CRL_SOURCE_FILES ${CRL_SOURCE_FILES}

lib/Runtime/Library/CMakeLists.txt

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
if(BuildJIT)
2+
add_definitions(-D_ENABLE_ASM_JS=1)
3+
endif()
4+
15
set(CRLIB_SOURCE_CODES
26
ArgumentsObject.cpp
37
ArgumentsObjectEnumerator.cpp
@@ -56,18 +60,19 @@ set(CRLIB_SOURCE_CODES
5660
JavascriptRegularExpressionResult.cpp
5761
JavascriptSet.cpp
5862
JavascriptSetIterator.cpp
59-
# JavascriptSimdBool16x8.cpp
60-
# JavascriptSimdBool32x4.cpp
61-
# JavascriptSimdBool8x16.cpp
62-
# JavascriptSimdFloat32x4.cpp
63-
# JavascriptSimdFloat64x2.cpp
64-
# JavascriptSimdInt16x8.cpp
65-
# JavascriptSimdInt32x4.cpp
66-
# JavascriptSimdInt8x16.cpp
67-
# JavascriptSimdObject.cpp
68-
# JavascriptSimdUint16x8.cpp
69-
# JavascriptSimdUint32x4.cpp
70-
# JavascriptSimdUint8x16.cpp
63+
JavascriptSimdBool16x8.cpp
64+
JavascriptSimdBool32x4.cpp
65+
JavascriptSimdBool8x16.cpp
66+
JavascriptSimdFloat32x4.cpp
67+
JavascriptSimdFloat64x2.cpp
68+
JavascriptSimdInt16x8.cpp
69+
JavascriptSimdInt32x4.cpp
70+
JavascriptSimdInt8x16.cpp
71+
JavascriptSimdObject.cpp
72+
JavascriptSimdType.cpp
73+
JavascriptSimdUint16x8.cpp
74+
JavascriptSimdUint32x4.cpp
75+
JavascriptSimdUint8x16.cpp
7176
JavascriptString.cpp
7277
JavascriptStringEnumerator.cpp
7378
JavascriptStringIterator.cpp
@@ -89,19 +94,18 @@ set(CRLIB_SOURCE_CODES
8994
RuntimeFunction.cpp
9095
RuntimeLibraryPch.cpp
9196
ScriptFunction.cpp
92-
# xplat-todo: enable SIMDjs on Linux
93-
# SimdBool16x8Lib.cpp
94-
# SimdBool32x4Lib.cpp
95-
# SimdBool8x16Lib.cpp
96-
# SimdFloat32x4Lib.cpp
97-
# SimdFloat64x2Lib.cpp
98-
# SimdInt16x8Lib.cpp
99-
# SimdInt32x4Lib.cpp
100-
# SimdInt8x16Lib.cpp
101-
# SimdUint16x8Lib.cpp
102-
# SimdUint32x4Lib.cpp
103-
# SimdUint8x16Lib.cpp
10497
SharedArrayBuffer.cpp
98+
SimdBool16x8Lib.cpp
99+
SimdBool32x4Lib.cpp
100+
SimdBool8x16Lib.cpp
101+
SimdFloat32x4Lib.cpp
102+
SimdFloat64x2Lib.cpp
103+
SimdInt16x8Lib.cpp
104+
SimdInt32x4Lib.cpp
105+
SimdInt8x16Lib.cpp
106+
SimdUint16x8Lib.cpp
107+
SimdUint32x4Lib.cpp
108+
SimdUint8x16Lib.cpp
105109
SingleCharString.cpp
106110
SparseArraySegment.cpp
107111
StackScriptFunction.cpp

test/AsmJs/rlexe.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,7 @@
798798
<files>constloads.js</files>
799799
<baseline>constloads.baseline</baseline>
800800
<compile-flags>-testtrace:asmjs -maic:1</compile-flags>
801+
<tags>exclude_xplat</tags>
801802
</default>
802803
</test>
803804
<test>

0 commit comments

Comments
 (0)