Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/workflows/small-cilkapps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,18 @@ jobs:
CXX=$opencilkdir/bin/clang++ \
EXTRA_CFLAGS="--opencilk-resource-dir=$cheetahdir" \
EXTRA_LDFLAGS="--opencilk-resource-dir=$cheetahdir"
- name: make check pedigrees
shell: bash
run: |
cheetahdir="$(pwd)"/build
opencilkdir='${{ steps.build-opencilk.outputs.opencilk-builddir }}'
make_prefix=""
if [ "${{ runner.os }}" == "macOS" ]; then
# Use xcrun to build benchmarks on macOS.
make_prefix="xcrun"
fi
$make_prefix make -C smallapps check \
CC=$opencilkdir/bin/clang \
CXX=$opencilkdir/bin/clang++ \
EXTRA_CFLAGS="--opencilk-resource-dir=$cheetahdir -fopencilk-enable-pedigrees" \
EXTRA_LDFLAGS="--opencilk-resource-dir=$cheetahdir -fopencilk-enable-pedigrees"
15 changes: 11 additions & 4 deletions runtime/scheduler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,12 +201,19 @@ static void setup_for_sync(__cilkrts_worker *w, worker_id self, Closure *t) {

SP(t->frame) = (void *)t->orig_rsp;
if (USE_EXTENSION) {
void *ext_frame = t->frame->extension;
// Set the worker's extension (analogous to updating the worker's stack
// pointer).
w->extension = t->frame->extension;
// Set the worker's extension stack pointer to the current extension
// frame, at the bottom of that stack.
w->ext_stack = t->frame->extension;
w->extension = ext_frame;
// Set the worker's extension stack pointer to the bottom of its view of
// the extension cactus stack. If the current extension frame is on the
// worker's extension fiber, then it's at the bottom of that fiber, and
// the extension stack pointer should point to it. Otherwise, there are
// no frames on that extension fiber, and the extension stack pointer
// should point to the start of that fiber.
w->ext_stack = t->ext_fiber->in_fiber(ext_frame)
? ext_frame
: t->ext_fiber->get_stack_start();
}
t->orig_rsp = nullptr; // unset once we have sync-ed
}
Expand Down
Loading