Differences From Artifact [63d666586e]:
- File
configure.ac
— part of check-in
[974d386554]
at
2016-07-18 18:45:17
on branch trunk
— runtime/exception.m: Forward foreign exceptions
This allows handling C++ exceptions. (user: js, size: 31840) [annotate] [blame] [check-ins using]
To Artifact [2f85c2e426]:
- File
configure.ac
— part of check-in
[7115c55ef0]
at
2016-07-31 23:04:07
on branch trunk
— Split atomic.h into multiple files
Having one file per implementation reduces the #ifdef hell and makes it
much more readable. (user: js, size: 31840) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
730 731 732 733 734 735 736 | AC_MSG_RESULT(no) ]) ]) ]) atomic_ops="none" | < < < < < < < < < < < < < < < > > > > > > > > > > > > > | > > | 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 | AC_MSG_RESULT(no) ]) ]) ]) atomic_ops="none" AC_MSG_CHECKING(whether we have an atomic ops assembly implementation) AC_EGREP_CPP(yes, [ #if defined(__GNUC__) && (defined(__i386__) || \ defined(__x86_64__) || defined(__amd64__)) || \ defined(__ppc__) yes #endif ], [ AC_MSG_RESULT(yes) atomic_ops="assembly implementation" ], [ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING(whether __sync_* works) AC_TRY_LINK([#include <stdint.h>], [ int32_t i, j; if (__sync_add_and_fetch(&i, 1)) j = __sync_sub_and_fetch(&i, 1); while (!__sync_bool_compare_and_swap(&i, 0, 1)); ], [ AC_MSG_RESULT(yes) test x"$atomic_ops" = x"none" && \ atomic_ops="__sync_* builtins" AC_DEFINE(OF_HAVE_SYNC_BUILTINS, 1, [Whether __sync_* builtins are available]) ], [ AC_MSG_RESULT(no) ]) AC_CHECK_HEADER(libkern/OSAtomic.h, [ test x"$atomic_ops" = x"none" && atomic_ops="libkern/OSAtomic.h" AC_DEFINE(OF_HAVE_OSATOMIC, 1, |
︙ | ︙ |