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.
 - Disable jit on OSX by default (for now).

test:
 - Add `dynapogo` test variant.
 - Change `interpreted` test variant to create dynamic profiles and input
   to `dynapogo` test variant.
 - 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 16, 2016
1 parent 8937c67 commit 134a736
Show file tree
Hide file tree
Showing 17 changed files with 279 additions and 166 deletions.
8 changes: 7 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,6 @@ if(CLR_CMAKE_PLATFORM_UNIX)
-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 @@ -278,6 +277,13 @@ if(CLR_CMAKE_PLATFORM_UNIX)
add_definitions(-DFEATURE_PAL)
endif(CLR_CMAKE_PLATFORM_UNIX)

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 @@ -36,7 +36,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 @@ -61,6 +62,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 @@ -184,6 +186,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 @@ -292,7 +298,7 @@ fi
pushd $build_directory > /dev/null

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

_RET=$?
if [[ $? == 0 ]]; then
Expand Down
49 changes: 30 additions & 19 deletions lib/Backend/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
add_library (Chakra.Backend
add_library (Chakra.Backend OBJECT
AgenPeeps.cpp
Backend.cpp
BackendApi.cpp
BackendOpCodeAttrAsmJs.cpp
BackwardPass.cpp
BailOut.cpp
Expand All @@ -10,6 +11,7 @@ add_library (Chakra.Backend
CodeGenWorkItem.cpp
DbCheckPostLower.cpp
Debug.cpp
EhFrame.cpp
EmitBuffer.cpp
Encoder.cpp
FlowGraph.cpp
Expand Down Expand Up @@ -55,24 +57,33 @@ add_library (Chakra.Backend
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
../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
1 change: 1 addition & 0 deletions lib/Common/Memory/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ add_library (Chakra.Common.Memory OBJECT
SmallNormalHeapBucket.cpp
StressTest.cpp
VirtualAllocWrapper.cpp
amd64/XDataAllocator.cpp
amd64/amd64_SAVE_REGISTERS.S
)

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,11 +41,13 @@ add_library (Chakra.Jsrt STATIC
)

add_subdirectory(Core)

target_include_directories (
Chakra.Jsrt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
../Backend
../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,7 +4,9 @@ add_library (Chakra.Jsrt.Core OBJECT

target_include_directories (
Chakra.Jsrt.Core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
../../Backend
../../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 @@ -28,9 +28,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
55 changes: 30 additions & 25 deletions lib/Runtime/Language/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
if(BuildJIT)
add_definitions(-D_ENABLE_DYNAMIC_THUNKS=1)
endif()

if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
set( ARCH_CHAKRA_RUNTIME_LANGUAGE
amd64/AsmJsJitTemplate.cpp
amd64/StackFrame.SystemV.cpp
amd64/amd64_Thunks.S
amd64/JavascriptOperatorsA.S
)
endif()
Expand Down Expand Up @@ -35,36 +42,34 @@ add_library (Chakra.Runtime.Language OBJECT
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
TaggedInt.cpp
ValueType.cpp
amd64/AsmJsJitTemplate.cpp
amd64/StackFrame.SystemV.cpp
# arm64/StackFrame.cpp
# arm/StackFrame.cpp
# i386/AsmJsJitTemplate.cpp
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()

add_library (Chakra.Runtime.Library OBJECT
ArgumentsObject.cpp
ArgumentsObjectEnumerator.cpp
Expand Down Expand Up @@ -56,18 +60,19 @@ add_library (Chakra.Runtime.Library OBJECT
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 @@ add_library (Chakra.Runtime.Library OBJECT
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
3 changes: 2 additions & 1 deletion test/Date/rlexe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,8 @@
<!-- test is timezone-sensitive; remove exclude_jenkins after fix -->
<!-- on DST pass Win OldDateAPI jumps back to 01:00 after 01:59 -->
<!-- todo: Do not force OLDDateAPI ? -->
<tags>exclude_jenkins,exclude_mac</tags>
<!-- xplat: on Linux Test build (post JIT) mktime returns PST within series of PDT -->
<tags>exclude_jenkins,exclude_mac,exclude_xplat</tags>
</default>
<condition order="1" type="include">
<os>win8</os>
Expand Down
2 changes: 1 addition & 1 deletion test/Function/rlexe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@
<test>
<default>
<files>failnativecodeinstall.js</files>
<compile-flags>/maxinterpretcount:2 /lic:1 /bgjit /off:simplejit /on:failnativecodeinstall</compile-flags>
<compile-flags>-maxinterpretcount:2 -lic:1 -bgjit -off:simplejit -on:failnativecodeinstall</compile-flags>
<tags>exclude_dynapogo,require_backend</tags>
<baseline>failnativecodeinstall.baseline</baseline>
</default>
Expand Down
16 changes: 8 additions & 8 deletions test/Optimizer/Invariants.baseline
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
test0: 1
test1: 1
test2: undefined
6�!%$caller
6�!%$caller
6�!%$caller
6�!%$caller
6�!%$caller
6�!%$caller
6�!%$caller
6�!%$caller
6b!%$caller
6b!%$caller
6b!%$caller
6b!%$caller
6b!%$caller
6b!%$caller
6b!%$caller
6b!%$caller
subset_of_ary =
Loading

0 comments on commit 134a736

Please sign in to comment.