Skip to content

Micro optimizations of interpreter loop (#47) #75

Micro optimizations of interpreter loop (#47)

Micro optimizations of interpreter loop (#47) #75

Workflow file for this run

name: Tests
on: [push, pull_request]
jobs:
test_soms:
runs-on: ubuntu-22.04
# continue-on-error: true
strategy:
fail-fast: false # we want all jobs to run, because they may fail independently
matrix:
compiler: [clang, gcc]
gc: [GENERATIONAL, MARK_SWEEP, COPYING]
integers:
- "-DUSE_TAGGING=true"
- "-DUSE_TAGGING=false -DCACHE_INTEGER=true"
- "-DUSE_TAGGING=false -DCACHE_INTEGER=false"
steps:
- name: Checkout SOM Repository
uses: actions/checkout@v4
with:
submodules: true
- name: Install Apt Packages
run: |
sudo apt-get install libcppunit-dev
- name: Install Clang 18
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main"
sudo apt-get update
sudo apt-get install -y clang-18 clang-tidy-18
if: matrix.compiler == 'clang'
- name: Install Clang Format
run: sudo apt-get install -y clang-format-18
if: matrix.compiler == 'clang' && matrix.gc == 'GENERATIONAL'
- name: Build SOM VM
run: |
if [ "${{ matrix.compiler }}" = "clang" ]
then
export CC=clang-18
export CXX=clang++-18
else
export CC=gcc
export CXX=g++
fi
echo $CC $CXX
echo cmake . -DGC_TYPE=${{ matrix.gc}} ${{ matrix.integers }}
mkdir cmake-build
cd cmake-build
cmake .. -DGC_TYPE=${{ matrix.gc}} ${{ matrix.integers }} -DCMAKE_BUILD_TYPE=Debug
make -j5
- name: Run Unit Tests
run: |
cd cmake-build
./unittests -cp ../Smalltalk:../TestSuite/BasicInterpreterTests ../Examples/Hello.som
- name: Run Tests on SOM VM
run: |
cd cmake-build
./SOM++ -cp ../Smalltalk ../TestSuite/TestHarness.som
- name: Clang Tidy
if: matrix.compiler == 'clang'
run: |
clang-tidy-18 --config-file=.clang-tidy src/**/*.cpp -- -fdiagnostics-absolute-paths -DGC_TYPE=${{ matrix.gc}} ${{ matrix.integers }} -DUNITTESTS
- name: Clang Format
if: matrix.compiler == 'clang' && matrix.gc == 'GENERATIONAL'
run: |
clang-format-18 --dry-run --style=file --Werror src/*.cpp src/**/*.cpp src/**/*.h
# Disabled because it's too slow with the sanitizers
# - name: Test SomSom
# run: |
# export ASAN_OPTIONS=detect_leaks=0
# cmake-build/SOM++ -cp Smalltalk:TestSuite:core-lib/SomSom/src/compiler:core-lib/SomSom/src/interpreter:core-lib/SomSom/src/primitives:core-lib/SomSom/src/vm:core-lib/SomSom/src/vmobjects core-lib/SomSom/tests/SomSomTests.som