Skip to content

Commit

Permalink
JIT: build and test changes
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Jianchun Xu committed Sep 20, 2016
1 parent 86dc097 commit 1c7f8a2
Show file tree
Hide file tree
Showing 17 changed files with 297 additions and 168 deletions.
8 changes: 7 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,6 @@ if(CLR_CMAKE_PLATFORM_XPLAT)
-DUNICODE
-D_SAFECRT_USE_CPP_OVERLOADS=1
-D__STDC_WANT_LIB_EXT1__=1
-DDISABLE_JIT=1 # xplat-todo: enable the JIT for Linux
)

set(CMAKE_CXX_STANDARD 11)
Expand Down Expand Up @@ -291,6 +290,13 @@ if(CLR_CMAKE_PLATFORM_XPLAT)
add_definitions(-DFEATURE_PAL)
endif(CLR_CMAKE_PLATFORM_XPLAT)

if(NO_JIT
OR CLR_CMAKE_PLATFORM_DARWIN) # TODO: JIT for OSX
add_definitions(-DDISABLE_JIT=1)
else()
set(BuildJIT 1)
endif()

if(WITHOUT_FEATURES)
add_definitions(${WITHOUT_FEATURES})
endif(WITHOUT_FEATURES)
Expand Down
10 changes: 8 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ PRINT_USAGE() {
echo " --icu=PATH Path to ICU include folder (see example below)"
echo " -j [N], --jobs[=N] Multicore build, allow N jobs at once"
echo " -n, --ninja Build with ninja instead of make"
echo " --no-icu Compile without unicode/icu support"
echo " --no-icu Compile without unicode/icu support"
echo " --no-jit Disable JIT"
echo " --xcode Generate XCode project"
echo " -t, --test-build Test build (by default Release build)"
echo " --static Build as static library (by default shared library)"
Expand All @@ -62,6 +63,7 @@ BUILD_TYPE="Release"
CMAKE_GEN=
MAKE=make
MULTICORE_BUILD=""
NO_JIT=
ICU_PATH="-DICU_SETTINGS_RESET=1"
STATIC_LIBRARY="-DSHARED_LIBRARY_SH=1"
WITHOUT_FEATURES=""
Expand Down Expand Up @@ -191,6 +193,10 @@ while [[ $# -gt 0 ]]; do
ICU_PATH="-DNO_ICU_PATH_GIVEN_SH=1"
;;

--no-jit)
NO_JIT="-DNO_JIT=1"
;;

--xcode)
CMAKE_GEN="-G Xcode -DCC_XCODE_PROJECT=1"
MAKE=0
Expand Down Expand Up @@ -306,7 +312,7 @@ else
fi

echo Generating $BUILD_TYPE makefiles
cmake $CMAKE_GEN $CC_PREFIX $ICU_PATH $STATIC_LIBRARY $ARCH -DCMAKE_BUILD_TYPE=$BUILD_TYPE $WITHOUT_FEATURES ../..
cmake $CMAKE_GEN $CC_PREFIX $ICU_PATH $STATIC_LIBRARY $ARCH -DCMAKE_BUILD_TYPE=$BUILD_TYPE $NO_JIT $WITHOUT_FEATURES ../..

_RET=$?
if [[ $? == 0 ]]; then
Expand Down
67 changes: 48 additions & 19 deletions lib/Backend/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
add_library (Chakra.Backend
add_library (Chakra.Backend OBJECT
AgenPeeps.cpp
AsmJsJITInfo.cpp
Backend.cpp
BackendApi.cpp
BackendOpCodeAttrAsmJs.cpp
BackwardPass.cpp
BailOut.cpp
Expand All @@ -10,10 +12,13 @@ add_library (Chakra.Backend
CodeGenWorkItem.cpp
DbCheckPostLower.cpp
Debug.cpp
EhFrame.cpp
EmitBuffer.cpp
Encoder.cpp
FlowGraph.cpp
Func.cpp
FunctionJITRuntimeInfo.cpp
FunctionJITTimeInfo.cpp
GlobOpt.cpp
GlobOptBailOut.cpp
GlobOptExpr.cpp
Expand All @@ -32,6 +37,18 @@ add_library (Chakra.Backend
InliningHeuristics.cpp
IntBounds.cpp
InterpreterThunkEmitter.cpp
JITObjTypeSpecFldInfo.cpp
JITOutput.cpp
JITTimeConstructorCache.cpp
JITTimeFixedField.cpp
JITTimeFunctionBody.cpp
JITTimePolymorphicInlineCache.cpp
JITTimePolymorphicInlineCacheInfo.cpp
JITTimeProfileInfo.cpp
JITTimeScriptContext.cpp
JITTimeWorkItem.cpp
JITType.cpp
JITTypeHandler.cpp
JnHelperMethod.cpp
LinearScan.cpp
Lower.cpp
Expand All @@ -48,31 +65,43 @@ add_library (Chakra.Backend
Region.cpp
SccLiveness.cpp
Security.cpp
ServerScriptContext.cpp
ServerThreadContext.cpp
SimpleJitProfilingHelpers.cpp
SimpleLayout.cpp
SwitchIRBuilder.cpp
Sym.cpp
SymTable.cpp
TempTracker.cpp
ValueRelativeOffset.cpp
amd64\EncoderMD.cpp
amd64\LinearScanMD.cpp
amd64\LowererMDArch.cpp
amd64\PeepsMD.cpp
amd64\PrologEncoderMD.cpp
arm64\EncoderMD.cpp
arm64\LowerMD.cpp
arm\EncoderMD.cpp
arm\LegalizeMD.cpp
arm\LinearScanMD.cpp
arm\LowerMD.cpp
arm\PeepsMD.cpp
arm\UnwindInfoManager.cpp
i386\EncoderMD.cpp
i386\LinearScanMD.cpp
i386\LowererMDArch.cpp
i386\PeepsMD.cpp
amd64/EncoderMD.cpp
amd64/LinearScanMD.cpp
amd64/LowererMDArch.cpp
amd64/PeepsMD.cpp
amd64/PrologEncoderMD.cpp
amd64/LinearScanMdA.S
amd64/Thunks.S
# arm64/EncoderMD.cpp
# arm64/LowerMD.cpp
# arm/EncoderMD.cpp
# arm/LegalizeMD.cpp
# arm/LinearScanMD.cpp
# arm/LowerMD.cpp
# arm/PeepsMD.cpp
# arm/UnwindInfoManager.cpp
# i386/EncoderMD.cpp
# i386/LinearScanMD.cpp
# i386/LowererMDArch.cpp
# i386/PeepsMD.cpp
)

target_include_directories (
Chakra.Backend PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
Chakra.Backend PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
amd64
../Common
../JITIDL
../Runtime
../Runtime/ByteCode
../Runtime/Math
../Parser
)
4 changes: 4 additions & 0 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
add_compile_options(-fPIC)

if(BuildJIT)
add_subdirectory (Backend)
endif()

add_subdirectory (Common)
add_subdirectory (Parser)
add_subdirectory (Runtime)
Expand Down
6 changes: 2 additions & 4 deletions lib/Common/Memory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,10 @@ set (CCM_SOURCE_FILES ${CCM_SOURCE_FILES}
)

if(CC_TARGETS_AMD64)
# xplat-todo: Include platform\XDataAllocator.cpp
# Needed on windows, need a replacement for linux to do
# amd64 stack walking
set (CCM_SOURCE_FILES ${CCM_SOURCE_FILES}
amd64/XDataAllocator.cpp
amd64/amd64_SAVE_REGISTERS.S
)
)
endif()

add_library (Chakra.Common.Memory OBJECT
Expand Down
11 changes: 9 additions & 2 deletions lib/Jsrt/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
if(BuildJIT)
set(chakra_backend_objects $<TARGET_OBJECTS:Chakra.Backend>)
endif()

add_library (Chakra.Jsrt STATIC
Jsrt.cpp
JsrtDebugUtils.cpp
Expand All @@ -14,7 +18,8 @@ add_library (Chakra.Jsrt STATIC
JsrtSourceHolder.cpp
JsrtThreadService.cpp
$<TARGET_OBJECTS:Chakra.Jsrt.Core>
# Do not take this in. We need to control the
${chakra_backend_objects}
# Do not take this in. We need to control the
# linker order because of global constructors
# and cross dependencies among them
# $<TARGET_OBJECTS:Chakra.Common.Core>
Expand All @@ -36,12 +41,14 @@ add_library (Chakra.Jsrt STATIC
)

add_subdirectory(Core)

target_include_directories (
Chakra.Jsrt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
../Backend
../JITIDL
../Runtime
../Runtime/Base
../Runtime/ByteCode
../Runtime/Debug
../Parser
)
2 changes: 2 additions & 0 deletions lib/Jsrt/Core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ add_library (Chakra.Jsrt.Core OBJECT

target_include_directories (
Chakra.Jsrt.Core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
../../Backend
../../JITIDL
../../Runtime
../../Runtime/ByteCode
../../Parser
../
)
3 changes: 2 additions & 1 deletion lib/Runtime/Base/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ add_library (Chakra.Runtime.Base OBJECT
ThreadContextTlsEntry.cpp
ThreadServiceWrapperBase.cpp
Utf8SourceInfo.cpp
VTuneChakraProfile.cpp
VTuneChakraProfile.cpp
# WindowsFoundationAdapter.cpp
# WindowsGlobalizationAdapter.cpp
jitprofiling.cpp
)

target_include_directories (
Expand Down
52 changes: 29 additions & 23 deletions lib/Runtime/Language/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
if(BuildJIT)
add_definitions(-D_ENABLE_DYNAMIC_THUNKS=1)
endif()

set(CRL_SOURCE_FILES ${CRL_SOURCE_FILES}
AsmJs.cpp
AsmJsByteCodeGenerator.cpp
Expand Down Expand Up @@ -26,32 +30,33 @@ set(CRL_SOURCE_FILES ${CRL_SOURCE_FILES}
JavascriptStackWalker.cpp
ModuleNamespace.cpp
ModuleNamespaceEnumerator.cpp
ObjTypeSpecFldInfo.cpp
ProfilingHelpers.cpp
#ReadOnlyDynamicProfileInfo.cpp
RuntimeLanguagePch.cpp
# SimdBool16x8Operation.cpp
# SimdBool16x8OperationX86X64.cpp
# SimdBool32x4Operation.cpp
# SimdBool32x4OperationX86X64.cpp
# SimdBool8x16Operation.cpp
# SimdBool8x16OperationX86X64.cpp
# SimdFloat32x4Operation.cpp
# SimdFloat32x4OperationX86X64.cpp
# SimdFloat64x2Operation.cpp
# SimdFloat64x2OperationX86X64.cpp
# SimdInt16x8Operation.cpp
# SimdInt16x8OperationX86X64.cpp
# SimdInt32x4Operation.cpp
# SimdInt32x4OperationX86X64.cpp
# SimdInt8x16Operation.cpp
# SimdInt8x16OperationX86X64.cpp
# SimdUint16x8Operation.cpp
# SimdUint16x8OperationX86X64.cpp
# SimdUint32x4Operation.cpp
# SimdUint32x4OperationX86X64.cpp
# SimdUint8x16Operation.cpp
# SimdUint8x16OperationX86X64.cpp
# SimdUtils.cpp
SimdBool16x8Operation.cpp
SimdBool16x8OperationX86X64.cpp
SimdBool32x4Operation.cpp
SimdBool32x4OperationX86X64.cpp
SimdBool8x16Operation.cpp
SimdBool8x16OperationX86X64.cpp
SimdFloat32x4Operation.cpp
SimdFloat32x4OperationX86X64.cpp
SimdFloat64x2Operation.cpp
SimdFloat64x2OperationX86X64.cpp
SimdInt16x8Operation.cpp
SimdInt16x8OperationX86X64.cpp
SimdInt32x4Operation.cpp
SimdInt32x4OperationX86X64.cpp
SimdInt8x16Operation.cpp
SimdInt8x16OperationX86X64.cpp
SimdUint16x8Operation.cpp
SimdUint16x8OperationX86X64.cpp
SimdUint32x4Operation.cpp
SimdUint32x4OperationX86X64.cpp
SimdUint8x16Operation.cpp
SimdUint8x16OperationX86X64.cpp
SimdUtils.cpp
SourceDynamicProfileManager.cpp
SourceTextModuleRecord.cpp
StackTraceArguments.cpp
Expand All @@ -64,6 +69,7 @@ if(CC_TARGETS_AMD64)
amd64/AsmJsJitTemplate.cpp
amd64/StackFrame.SystemV.cpp
amd64/JavascriptOperatorsA.S
amd64/amd64_Thunks.S
)
elseif(CC_TARGETS_X86)
set (CRL_SOURCE_FILES ${CRL_SOURCE_FILES}
Expand Down
52 changes: 28 additions & 24 deletions lib/Runtime/Library/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
if(BuildJIT)
add_definitions(-D_ENABLE_ASM_JS=1)
endif()

set(CRLIB_SOURCE_CODES
ArgumentsObject.cpp
ArgumentsObjectEnumerator.cpp
Expand Down Expand Up @@ -56,18 +60,19 @@ set(CRLIB_SOURCE_CODES
JavascriptRegularExpressionResult.cpp
JavascriptSet.cpp
JavascriptSetIterator.cpp
# JavascriptSimdBool16x8.cpp
# JavascriptSimdBool32x4.cpp
# JavascriptSimdBool8x16.cpp
# JavascriptSimdFloat32x4.cpp
# JavascriptSimdFloat64x2.cpp
# JavascriptSimdInt16x8.cpp
# JavascriptSimdInt32x4.cpp
# JavascriptSimdInt8x16.cpp
# JavascriptSimdObject.cpp
# JavascriptSimdUint16x8.cpp
# JavascriptSimdUint32x4.cpp
# JavascriptSimdUint8x16.cpp
JavascriptSimdBool16x8.cpp
JavascriptSimdBool32x4.cpp
JavascriptSimdBool8x16.cpp
JavascriptSimdFloat32x4.cpp
JavascriptSimdFloat64x2.cpp
JavascriptSimdInt16x8.cpp
JavascriptSimdInt32x4.cpp
JavascriptSimdInt8x16.cpp
JavascriptSimdObject.cpp
JavascriptSimdType.cpp
JavascriptSimdUint16x8.cpp
JavascriptSimdUint32x4.cpp
JavascriptSimdUint8x16.cpp
JavascriptString.cpp
JavascriptStringEnumerator.cpp
JavascriptStringIterator.cpp
Expand All @@ -89,19 +94,18 @@ set(CRLIB_SOURCE_CODES
RuntimeFunction.cpp
RuntimeLibraryPch.cpp
ScriptFunction.cpp
# xplat-todo: enable SIMDjs on Linux
# SimdBool16x8Lib.cpp
# SimdBool32x4Lib.cpp
# SimdBool8x16Lib.cpp
# SimdFloat32x4Lib.cpp
# SimdFloat64x2Lib.cpp
# SimdInt16x8Lib.cpp
# SimdInt32x4Lib.cpp
# SimdInt8x16Lib.cpp
# SimdUint16x8Lib.cpp
# SimdUint32x4Lib.cpp
# SimdUint8x16Lib.cpp
SharedArrayBuffer.cpp
SimdBool16x8Lib.cpp
SimdBool32x4Lib.cpp
SimdBool8x16Lib.cpp
SimdFloat32x4Lib.cpp
SimdFloat64x2Lib.cpp
SimdInt16x8Lib.cpp
SimdInt32x4Lib.cpp
SimdInt8x16Lib.cpp
SimdUint16x8Lib.cpp
SimdUint32x4Lib.cpp
SimdUint8x16Lib.cpp
SingleCharString.cpp
SparseArraySegment.cpp
StackScriptFunction.cpp
Expand Down
1 change: 1 addition & 0 deletions test/AsmJs/rlexe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,7 @@
<files>constloads.js</files>
<baseline>constloads.baseline</baseline>
<compile-flags>-testtrace:asmjs -maic:1</compile-flags>
<tags>exclude_xplat</tags>
</default>
</test>
<test>
Expand Down
Loading

0 comments on commit 1c7f8a2

Please sign in to comment.