@zigc/lib 0.17.0-dev.27 → 0.17.0-dev.296
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/c/fcntl.zig +6 -1
- package/c/inttypes.zig +0 -10
- package/c/math.zig +52 -112
- package/c/pthread.zig +57 -0
- package/c/search.zig +1 -27
- package/c/stdlib/drand48.zig +0 -57
- package/c/stdlib.zig +31 -121
- package/c/string.zig +20 -7
- package/c/strings.zig +0 -38
- package/c/unistd.zig +27 -26
- package/c/wchar.zig +10 -0
- package/c.zig +2 -2
- package/compiler/aro/aro/CodeGen.zig +7 -8
- package/compiler/aro/aro/Compilation.zig +17 -17
- package/compiler/aro/aro/Driver.zig +14 -13
- package/compiler/aro/aro/Parser.zig +20 -15
- package/compiler/aro/aro/Pragma.zig +3 -2
- package/compiler/aro/aro/Preprocessor.zig +9 -6
- package/compiler/aro/aro/pragmas/message.zig +3 -2
- package/compiler/aro/aro/text_literal.zig +3 -2
- package/compiler/aro/assembly_backend/x86_64.zig +4 -4
- package/compiler/build_runner.zig +2 -4
- package/compiler/reduce/Walk.zig +8 -13
- package/compiler/resinator/compile.zig +1 -1
- package/compiler/resinator/cvtres.zig +4 -4
- package/compiler/resinator/errors.zig +7 -7
- package/compiler/resinator/ico.zig +4 -4
- package/compiler/resinator/parse.zig +2 -2
- package/compiler/resinator/res.zig +1 -1
- package/compiler/std-docs.zig +1 -1
- package/compiler/test_runner.zig +1 -1
- package/compiler/translate-c/MacroTranslator.zig +1 -1
- package/compiler/translate-c/Translator.zig +6 -2
- package/compiler/translate-c/ast.zig +16 -23
- package/compiler/translate-c/main.zig +1 -1
- package/compiler_rt/addf3.zig +1 -1
- package/compiler_rt/arm.zig +3 -3
- package/compiler_rt/atomics.zig +1 -1
- package/compiler_rt/comparef.zig +3 -3
- package/compiler_rt/cos.zig +1 -3
- package/compiler_rt/count0bits.zig +1 -1
- package/compiler_rt/divdf3.zig +2 -2
- package/compiler_rt/divsf3.zig +1 -1
- package/compiler_rt/divtf3.zig +1 -1
- package/compiler_rt/divxf3.zig +1 -1
- package/compiler_rt/exp.zig +0 -2
- package/compiler_rt/exp2.zig +0 -2
- package/compiler_rt/extendf.zig +5 -5
- package/compiler_rt/fabs.zig +1 -3
- package/compiler_rt/float_from_int.zig +3 -4
- package/compiler_rt/fma.zig +0 -2
- package/compiler_rt/fmax.zig +1 -3
- package/compiler_rt/fmin.zig +1 -3
- package/compiler_rt/fmod.zig +2 -4
- package/compiler_rt/limb64.zig +3 -2
- package/compiler_rt/log.zig +0 -2
- package/compiler_rt/log10.zig +0 -2
- package/compiler_rt/log2.zig +0 -2
- package/compiler_rt/mulf3.zig +2 -2
- package/compiler_rt/rem_pio2l.zig +1 -1
- package/compiler_rt/round.zig +0 -2
- package/compiler_rt/sin.zig +1 -3
- package/compiler_rt/sincos.zig +1 -3
- package/compiler_rt/sqrt.zig +0 -2
- package/compiler_rt/ssp.zig +2 -2
- package/compiler_rt/tan.zig +1 -3
- package/compiler_rt/trunc.zig +0 -2
- package/compiler_rt/truncf.zig +3 -3
- package/compiler_rt/trunctfhf2.zig +3 -0
- package/compiler_rt.zig +5 -26
- package/docs/wasm/Walk.zig +1 -3
- package/docs/wasm/html_render.zig +1 -2
- package/docs/wasm/markdown/Parser.zig +16 -20
- package/fuzzer.zig +2 -0
- package/include/__clang_spirv_builtins.h +12 -12
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +215 -1
- package/include/amxintrin.h +0 -2
- package/include/arm_acle.h +37 -27
- package/include/arm_neon.h +218 -82
- package/include/arm_sme.h +8 -8
- package/include/arm_sve.h +4162 -3782
- package/include/avx10_2_512bf16intrin.h +19 -12
- package/include/avx10_2_512convertintrin.h +1 -1
- package/include/avx10_2_512niintrin.h +31 -31
- package/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/include/avx10_2bf16intrin.h +54 -45
- package/include/avx10_2convertintrin.h +2 -2
- package/include/avx10_2copyintrin.h +1 -1
- package/include/avx10_2niintrin.h +14 -14
- package/include/avx10_2satcvtdsintrin.h +2 -2
- package/include/avx2intrin.h +275 -377
- package/include/avx512bf16intrin.h +25 -16
- package/include/avx512bitalgintrin.h +19 -30
- package/include/avx512bwintrin.h +386 -505
- package/include/avx512cdintrin.h +42 -55
- package/include/avx512dqintrin.h +132 -161
- package/include/avx512fintrin.h +1015 -1424
- package/include/avx512fp16intrin.h +112 -110
- package/include/avx512ifmaintrin.h +32 -34
- package/include/avx512ifmavlintrin.h +73 -46
- package/include/avx512vbmi2intrin.h +43 -32
- package/include/avx512vbmiintrin.h +19 -27
- package/include/avx512vbmivlintrin.h +35 -49
- package/include/avx512vlbf16intrin.h +32 -22
- package/include/avx512vlbitalgintrin.h +37 -53
- package/include/avx512vlbwintrin.h +470 -573
- package/include/avx512vlcdintrin.h +74 -102
- package/include/avx512vldqintrin.h +110 -127
- package/include/avx512vlfp16intrin.h +130 -111
- package/include/avx512vlintrin.h +945 -1299
- package/include/avx512vlvbmi2intrin.h +78 -63
- package/include/avx512vlvnniintrin.h +21 -18
- package/include/avx512vlvp2intersectintrin.h +2 -2
- package/include/avx512vnniintrin.h +10 -10
- package/include/avx512vp2intersectintrin.h +1 -2
- package/include/avx512vpopcntdqintrin.h +8 -10
- package/include/avx512vpopcntdqvlintrin.h +17 -15
- package/include/avxifmaintrin.h +16 -0
- package/include/avxintrin.h +165 -241
- package/include/avxvnniint16intrin.h +118 -99
- package/include/avxvnniint8intrin.h +56 -32
- package/include/avxvnniintrin.h +16 -8
- package/include/cpuid.h +101 -4
- package/include/emmintrin.h +168 -168
- package/include/f16cintrin.h +23 -9
- package/include/float.h +16 -155
- package/include/fma4intrin.h +98 -96
- package/include/fmaintrin.h +96 -66
- package/include/gfniintrin.h +21 -16
- package/include/hexagon_types.h +23 -20
- package/include/hvx_hexagon_protos.h +649 -860
- package/include/immintrin.h +0 -12
- package/include/intrin.h +4 -0
- package/include/lasxintrin.h +113 -0
- package/include/llvm_libc_wrappers/assert.h +3 -5
- package/include/llvm_libc_wrappers/ctype.h +3 -115
- package/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/include/llvm_libc_wrappers/stdio.h +10 -38
- package/include/llvm_libc_wrappers/stdlib.h +3 -24
- package/include/llvm_libc_wrappers/string.h +2 -70
- package/include/llvm_libc_wrappers/time.h +4 -10
- package/include/mmintrin.h +188 -257
- package/include/module.modulemap +23 -4
- package/include/movrs_avx10_2_512intrin.h +2 -2
- package/include/movrs_avx10_2intrin.h +4 -4
- package/include/pmmintrin.h +12 -24
- package/include/ptrauth.h +16 -2
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/sifive_vector.h +58 -2
- package/include/sm4evexintrin.h +2 -2
- package/include/smmintrin.h +77 -59
- package/include/spirvintrin.h +194 -0
- package/include/stddefer.h +19 -0
- package/include/tmmintrin.h +116 -147
- package/include/vaesintrin.h +1 -2
- package/include/xmmintrin.h +44 -70
- package/include/xopintrin.h +20 -10
- package/libc/include/aarch64-linux-any/asm/hwcap.h +1 -0
- package/libc/include/aarch64-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/any-linux-any/asm-generic/errno.h +2 -0
- package/libc/include/any-linux-any/asm-generic/unistd.h +4 -1
- package/libc/include/any-linux-any/drm/amdgpu_drm.h +20 -6
- package/libc/include/any-linux-any/drm/amdxdna_accel.h +8 -0
- package/libc/include/any-linux-any/drm/drm_fourcc.h +6 -6
- package/libc/include/any-linux-any/drm/panfrost_drm.h +75 -1
- package/libc/include/any-linux-any/drm/panthor_drm.h +154 -3
- package/libc/include/any-linux-any/drm/rocket_accel.h +74 -24
- package/libc/include/any-linux-any/drm/xe_drm.h +89 -6
- package/libc/include/any-linux-any/linux/android/binder.h +1 -1
- package/libc/include/any-linux-any/linux/bpf.h +28 -0
- package/libc/include/any-linux-any/linux/btrfs.h +1 -0
- package/libc/include/any-linux-any/linux/btrfs_tree.h +32 -2
- package/libc/include/any-linux-any/linux/dma-buf.h +1 -0
- package/libc/include/any-linux-any/linux/dpll.h +1 -0
- package/libc/include/any-linux-any/linux/elf.h +2 -0
- package/libc/include/any-linux-any/linux/ethtool.h +21 -5
- package/libc/include/any-linux-any/linux/fs.h +1 -0
- package/libc/include/any-linux-any/linux/hyperv.h +1 -1
- package/libc/include/any-linux-any/linux/idxd.h +134 -134
- package/libc/include/any-linux-any/linux/if_alg.h +1 -1
- package/libc/include/any-linux-any/linux/if_link.h +1 -0
- package/libc/include/any-linux-any/linux/input-event-codes.h +4 -0
- package/libc/include/any-linux-any/linux/io_uring/bpf_filter.h +68 -0
- package/libc/include/any-linux-any/linux/io_uring/query.h +5 -1
- package/libc/include/any-linux-any/linux/io_uring.h +33 -2
- package/libc/include/any-linux-any/linux/iommufd.h +39 -0
- package/libc/include/any-linux-any/linux/kfd_ioctl.h +13 -3
- package/libc/include/any-linux-any/linux/kfd_sysfs.h +2 -1
- package/libc/include/any-linux-any/linux/kvm.h +30 -6
- package/libc/include/any-linux-any/linux/landlock.h +22 -8
- package/libc/include/any-linux-any/linux/magic.h +1 -0
- package/libc/include/any-linux-any/linux/mempolicy.h +3 -0
- package/libc/include/any-linux-any/linux/mount.h +11 -2
- package/libc/include/any-linux-any/linux/mptcp_pm.h +1 -1
- package/libc/include/any-linux-any/linux/mshv.h +2 -0
- package/libc/include/any-linux-any/linux/netfilter_bridge.h +5 -4
- package/libc/include/any-linux-any/linux/netfilter_ipv4.h +4 -5
- package/libc/include/any-linux-any/linux/netfilter_ipv6.h +3 -4
- package/libc/include/any-linux-any/linux/nfs.h +1 -1
- package/libc/include/any-linux-any/linux/nfsd_netlink.h +1 -0
- package/libc/include/any-linux-any/linux/nilfs2_api.h +2 -2
- package/libc/include/any-linux-any/linux/nilfs2_ondisk.h +97 -66
- package/libc/include/any-linux-any/linux/nl80211.h +104 -3
- package/libc/include/any-linux-any/linux/pci.h +7 -0
- package/libc/include/any-linux-any/linux/pci_regs.h +65 -6
- package/libc/include/any-linux-any/linux/pcitest.h +1 -0
- package/libc/include/any-linux-any/linux/perf_event.h +24 -3
- package/libc/include/any-linux-any/linux/pkt_sched.h +1 -0
- package/libc/include/any-linux-any/linux/prctl.h +30 -0
- package/libc/include/any-linux-any/linux/rseq.h +62 -5
- package/libc/include/any-linux-any/linux/shm.h +0 -1
- package/libc/include/any-linux-any/linux/stddef.h +4 -0
- package/libc/include/any-linux-any/linux/sysctl.h +1 -2
- package/libc/include/any-linux-any/linux/taskstats.h +12 -1
- package/libc/include/any-linux-any/linux/tcp.h +23 -3
- package/libc/include/any-linux-any/linux/typelimits.h +8 -0
- package/libc/include/any-linux-any/linux/ublk_cmd.h +120 -1
- package/libc/include/any-linux-any/linux/v4l2-controls.h +63 -0
- package/libc/include/any-linux-any/linux/vbox_vmmdev_types.h +2 -2
- package/libc/include/any-linux-any/linux/vduse.h +80 -5
- package/libc/include/any-linux-any/linux/version.h +3 -3
- package/libc/include/any-linux-any/linux/vfio.h +4 -0
- package/libc/include/any-linux-any/linux/videodev2.h +3 -0
- package/libc/include/any-linux-any/linux/virtio_ring.h +1 -2
- package/libc/include/any-linux-any/linux/vmclock-abi.h +20 -0
- package/libc/include/any-linux-any/rdma/bnxt_re-abi.h +16 -0
- package/libc/include/any-linux-any/rdma/ib_user_ioctl_cmds.h +16 -0
- package/libc/include/any-linux-any/rdma/mana-abi.h +3 -0
- package/libc/include/any-linux-any/scsi/scsi_bsg_ufs.h +8 -9
- package/libc/include/any-linux-any/sound/sof/tokens.h +6 -0
- package/libc/include/arc-linux-any/asm/swab.h +0 -63
- package/libc/include/arc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/arm-linux-any/asm/ptrace.h +0 -9
- package/libc/include/arm-linux-any/asm/unistd-eabi.h +1 -0
- package/libc/include/arm-linux-any/asm/unistd-oabi.h +1 -0
- package/libc/include/csky-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/hexagon-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/loongarch-linux-any/asm/hwcap.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm.h +1 -0
- package/libc/include/loongarch-linux-any/asm/kvm_para.h +1 -0
- package/libc/include/loongarch-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/loongarch-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/m68k-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/mips-linux-any/asm/errno.h +2 -0
- package/libc/include/mips-linux-any/asm/unistd_n32.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_n64.h +1 -0
- package/libc/include/mips-linux-any/asm/unistd_o32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/powerpc-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/riscv-linux-any/asm/hwprobe.h +4 -0
- package/libc/include/riscv-linux-any/asm/kvm.h +3 -0
- package/libc/include/riscv-linux-any/asm/ptrace.h +37 -0
- package/libc/include/riscv-linux-any/asm/sigcontext.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/riscv-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/s390x-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/sparc-linux-any/asm/errno.h +2 -0
- package/libc/include/sparc-linux-any/asm/ioctls.h +4 -4
- package/libc/include/sparc-linux-any/asm/unistd_32.h +2 -0
- package/libc/include/sparc-linux-any/asm/unistd_64.h +2 -0
- package/libc/include/x86-linux-any/asm/auxvec.h +0 -4
- package/libc/include/x86-linux-any/asm/kvm.h +13 -8
- package/libc/include/x86-linux-any/asm/svm.h +16 -16
- package/libc/include/x86-linux-any/asm/unistd_32.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_64.h +1 -0
- package/libc/include/x86-linux-any/asm/unistd_x32.h +1 -0
- package/libc/include/xtensa-linux-any/asm/unistd_32.h +1 -0
- package/libc/musl/arch/mipsn32/syscall_arch.h +35 -32
- package/libcxx/include/__algorithm/all_of.h +11 -5
- package/libcxx/include/__algorithm/comp.h +4 -0
- package/libcxx/include/__algorithm/copy.h +28 -147
- package/libcxx/include/__algorithm/copy_backward.h +9 -24
- package/libcxx/include/__algorithm/copy_n.h +50 -16
- package/libcxx/include/__algorithm/count.h +2 -2
- package/libcxx/include/__algorithm/equal.h +43 -55
- package/libcxx/include/__algorithm/fill.h +26 -8
- package/libcxx/include/__algorithm/fill_n.h +32 -46
- package/libcxx/include/__algorithm/find.h +96 -39
- package/libcxx/include/__algorithm/find_end.h +105 -0
- package/libcxx/include/__algorithm/for_each.h +18 -24
- package/libcxx/include/__algorithm/for_each_n.h +20 -47
- package/libcxx/include/__algorithm/for_each_n_segment.h +1 -1
- package/libcxx/include/__algorithm/for_each_segment.h +26 -0
- package/libcxx/include/__algorithm/generate.h +4 -2
- package/libcxx/include/__algorithm/generate_n.h +19 -6
- package/libcxx/include/__algorithm/is_permutation.h +4 -4
- package/libcxx/include/__algorithm/iterator_operations.h +3 -0
- package/libcxx/include/__algorithm/lexicographical_compare.h +2 -2
- package/libcxx/include/__algorithm/lexicographical_compare_three_way.h +6 -6
- package/libcxx/include/__algorithm/make_heap.h +16 -4
- package/libcxx/include/__algorithm/mismatch.h +2 -2
- package/libcxx/include/__algorithm/move.h +8 -19
- package/libcxx/include/__algorithm/move_backward.h +9 -24
- package/libcxx/include/__algorithm/none_of.h +4 -4
- package/libcxx/include/__algorithm/partial_sort.h +1 -1
- package/libcxx/include/__algorithm/partial_sort_copy.h +1 -1
- package/libcxx/include/__algorithm/pstl.h +9 -9
- package/libcxx/include/__algorithm/radix_sort.h +27 -25
- package/libcxx/include/__algorithm/ranges_copy_n.h +3 -26
- package/libcxx/include/__algorithm/ranges_equal.h +17 -26
- package/libcxx/include/__algorithm/ranges_fill.h +7 -6
- package/libcxx/include/__algorithm/ranges_for_each.h +9 -1
- package/libcxx/include/__algorithm/ranges_generate_n.h +2 -6
- package/libcxx/include/__algorithm/ranges_search_n.h +2 -2
- package/libcxx/include/__algorithm/rotate.h +27 -44
- package/libcxx/include/__algorithm/search_n.h +49 -37
- package/libcxx/include/__algorithm/sift_down.h +19 -18
- package/libcxx/include/__algorithm/simd_utils.h +33 -4
- package/libcxx/include/__algorithm/specialized_algorithms.h +54 -0
- package/libcxx/include/__algorithm/stable_sort.h +1 -1
- package/libcxx/include/__assertion_handler +31 -4
- package/libcxx/include/__atomic/atomic.h +36 -60
- package/libcxx/include/__atomic/atomic_flag.h +19 -37
- package/libcxx/include/__atomic/atomic_ref.h +29 -12
- package/libcxx/include/__atomic/atomic_sync.h +127 -55
- package/libcxx/include/__atomic/atomic_sync_timed.h +144 -0
- package/libcxx/include/__atomic/atomic_waitable_traits.h +103 -0
- package/libcxx/include/__atomic/contention_t.h +27 -3
- package/libcxx/include/__atomic/floating_point_helper.h +55 -0
- package/libcxx/include/__bit/countl.h +1 -2
- package/libcxx/include/__bit/countr.h +1 -2
- package/libcxx/include/__bit/has_single_bit.h +1 -1
- package/libcxx/include/__bit/popcount.h +0 -1
- package/libcxx/include/__bit/rotate.h +15 -26
- package/libcxx/include/__bit_reference +207 -18
- package/libcxx/include/__charconv/from_chars_integral.h +1 -1
- package/libcxx/include/__charconv/from_chars_result.h +1 -1
- package/libcxx/include/__charconv/to_chars_integral.h +1 -0
- package/libcxx/include/__charconv/to_chars_result.h +1 -1
- package/libcxx/include/__charconv/traits.h +3 -24
- package/libcxx/include/__chrono/day.h +11 -0
- package/libcxx/include/__chrono/duration.h +58 -33
- package/libcxx/include/__chrono/file_clock.h +4 -2
- package/libcxx/include/__chrono/is_clock.h +72 -0
- package/libcxx/include/__chrono/leap_second.h +13 -0
- package/libcxx/include/__chrono/month.h +13 -0
- package/libcxx/include/__chrono/month_weekday.h +22 -0
- package/libcxx/include/__chrono/monthday.h +20 -0
- package/libcxx/include/__chrono/steady_clock.h +1 -1
- package/libcxx/include/__chrono/system_clock.h +3 -3
- package/libcxx/include/__chrono/time_point.h +37 -13
- package/libcxx/include/__chrono/weekday.h +25 -0
- package/libcxx/include/__chrono/year.h +11 -0
- package/libcxx/include/__chrono/year_month.h +13 -0
- package/libcxx/include/__chrono/year_month_day.h +23 -0
- package/libcxx/include/__chrono/year_month_weekday.h +26 -0
- package/libcxx/include/__chrono/zoned_time.h +16 -0
- package/libcxx/include/__compare/is_eq.h +6 -6
- package/libcxx/include/__compare/strong_order.h +12 -30
- package/libcxx/include/__compare/three_way_comparable.h +2 -2
- package/libcxx/include/__concepts/comparison_common_type.h +40 -0
- package/libcxx/include/__concepts/equality_comparable.h +2 -1
- package/libcxx/include/__condition_variable/condition_variable.h +1 -1
- package/libcxx/include/__config +63 -280
- package/libcxx/include/__configuration/abi.h +14 -24
- package/libcxx/include/__configuration/availability.h +65 -118
- package/libcxx/include/__configuration/compiler.h +6 -6
- package/libcxx/include/__configuration/experimental.h +38 -0
- package/libcxx/include/__configuration/hardening.h +215 -0
- package/libcxx/include/__configuration/language.h +3 -0
- package/libcxx/include/__configuration/platform.h +9 -16
- package/libcxx/include/__coroutine/coroutine_handle.h +9 -9
- package/libcxx/include/__coroutine/noop_coroutine_handle.h +11 -13
- package/libcxx/include/__debug_utils/strict_weak_ordering_check.h +1 -1
- package/libcxx/include/__exception/exception.h +6 -4
- package/libcxx/include/__exception/exception_ptr.h +27 -5
- package/libcxx/include/__exception/nested_exception.h +2 -2
- package/libcxx/include/__exception/operations.h +5 -5
- package/libcxx/include/__expected/bad_expected_access.h +8 -6
- package/libcxx/include/__expected/expected.h +62 -64
- package/libcxx/include/__expected/unexpected.h +4 -4
- package/libcxx/include/__filesystem/copy_options.h +4 -4
- package/libcxx/include/__filesystem/directory_entry.h +37 -33
- package/libcxx/include/__filesystem/directory_iterator.h +9 -11
- package/libcxx/include/__filesystem/directory_options.h +7 -4
- package/libcxx/include/__filesystem/file_status.h +3 -3
- package/libcxx/include/__filesystem/filesystem_error.h +9 -10
- package/libcxx/include/__filesystem/operations.h +97 -66
- package/libcxx/include/__filesystem/path.h +68 -64
- package/libcxx/include/__filesystem/path_iterator.h +1 -3
- package/libcxx/include/__filesystem/perm_options.h +4 -4
- package/libcxx/include/__filesystem/perms.h +4 -4
- package/libcxx/include/__filesystem/recursive_directory_iterator.h +9 -14
- package/libcxx/include/__filesystem/space_info.h +1 -1
- package/libcxx/include/__filesystem/u8path.h +12 -14
- package/libcxx/include/__flat_map/flat_map.h +88 -71
- package/libcxx/include/__flat_map/flat_multimap.h +251 -172
- package/libcxx/include/__flat_map/key_value_iterator.h +0 -1
- package/libcxx/include/__flat_map/utils.h +1 -0
- package/libcxx/include/__flat_set/flat_multiset.h +211 -143
- package/libcxx/include/__flat_set/flat_set.h +86 -68
- package/libcxx/include/__format/concepts.h +0 -14
- package/libcxx/include/__format/extended_grapheme_cluster_table.h +3 -2
- package/libcxx/include/__format/fmt_pair_like.h +42 -0
- package/libcxx/include/__format/format_arg.h +7 -10
- package/libcxx/include/__format/format_args.h +1 -1
- package/libcxx/include/__format/format_context.h +5 -5
- package/libcxx/include/__format/format_parse_context.h +2 -2
- package/libcxx/include/__format/formatter_output.h +30 -34
- package/libcxx/include/__format/indic_conjunct_break_table.h +3 -2
- package/libcxx/include/__format/range_default_formatter.h +2 -41
- package/libcxx/include/__format/range_format.h +71 -0
- package/libcxx/include/__format/range_formatter.h +1 -0
- package/libcxx/include/__format/width_estimation_table.h +4 -2
- package/libcxx/include/__functional/bind.h +10 -15
- package/libcxx/include/__functional/bind_back.h +1 -1
- package/libcxx/include/__functional/bind_front.h +1 -1
- package/libcxx/include/__functional/function.h +57 -75
- package/libcxx/include/__functional/hash.h +1 -10
- package/libcxx/include/__functional/identity.h +1 -1
- package/libcxx/include/__functional/is_transparent.h +8 -0
- package/libcxx/include/__functional/mem_fn.h +2 -1
- package/libcxx/include/__functional/operations.h +18 -0
- package/libcxx/include/__functional/ranges_operations.h +7 -0
- package/libcxx/include/__functional/reference_wrapper.h +7 -5
- package/libcxx/include/__functional/weak_result_type.h +14 -28
- package/libcxx/include/__fwd/ios.h +1 -1
- package/libcxx/include/__fwd/tuple.h +14 -0
- package/libcxx/include/__hash_table +371 -357
- package/libcxx/include/__ios/fpos.h +4 -4
- package/libcxx/include/__iterator/back_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/bounded_iter.h +7 -8
- package/libcxx/include/__iterator/concepts.h +6 -9
- package/libcxx/include/__iterator/cpp17_iterator_concepts.h +13 -12
- package/libcxx/include/__iterator/distance.h +40 -18
- package/libcxx/include/__iterator/front_insert_iterator.h +1 -7
- package/libcxx/include/__iterator/insert_iterator.h +1 -7
- package/libcxx/include/__iterator/istream_iterator.h +6 -7
- package/libcxx/include/__iterator/istreambuf_iterator.h +6 -7
- package/libcxx/include/__iterator/iter_move.h +1 -1
- package/libcxx/include/__iterator/iterator.h +13 -0
- package/libcxx/include/__iterator/iterator_traits.h +13 -14
- package/libcxx/include/__iterator/ostream_iterator.h +1 -7
- package/libcxx/include/__iterator/ostreambuf_iterator.h +1 -7
- package/libcxx/include/__iterator/reverse_iterator.h +8 -13
- package/libcxx/include/__iterator/segmented_iterator.h +3 -8
- package/libcxx/include/__iterator/static_bounded_iter.h +3 -3
- package/libcxx/include/__iterator/wrap_iter.h +8 -6
- package/libcxx/include/__locale +3 -10
- package/libcxx/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h +0 -10
- package/libcxx/include/__locale_dir/locale_base_api.h +5 -28
- package/libcxx/include/__locale_dir/messages.h +1 -1
- package/libcxx/include/__locale_dir/money.h +2 -2
- package/libcxx/include/__locale_dir/num.h +190 -243
- package/libcxx/include/__locale_dir/pad_and_output.h +5 -6
- package/libcxx/include/__locale_dir/support/bsd_like.h +0 -20
- package/libcxx/include/__locale_dir/support/fuchsia.h +0 -7
- package/libcxx/include/__locale_dir/support/linux.h +0 -37
- package/libcxx/include/__locale_dir/support/netbsd.h +0 -2
- package/libcxx/include/__locale_dir/support/newlib.h +243 -0
- package/libcxx/include/__locale_dir/support/no_locale/characters.h +0 -4
- package/libcxx/include/__locale_dir/support/no_locale/strtonum.h +0 -9
- package/libcxx/include/__locale_dir/support/windows.h +0 -29
- package/libcxx/include/__locale_dir/time.h +3 -7
- package/libcxx/include/__math/hypot.h +1 -1
- package/libcxx/include/__math/logarithms.h +1 -1
- package/libcxx/include/__math/traits.h +80 -11
- package/libcxx/include/__mdspan/extents.h +7 -4
- package/libcxx/include/__mdspan/layout_stride.h +4 -5
- package/libcxx/include/__mdspan/mdspan.h +29 -23
- package/libcxx/include/__memory/addressof.h +7 -5
- package/libcxx/include/__memory/align.h +18 -1
- package/libcxx/include/__memory/allocate_at_least.h +15 -10
- package/libcxx/include/__memory/allocator.h +14 -26
- package/libcxx/include/__memory/allocator_traits.h +6 -4
- package/libcxx/include/__memory/compressed_pair.h +15 -9
- package/libcxx/include/__memory/construct_at.h +12 -23
- package/libcxx/include/__memory/inout_ptr.h +1 -1
- package/libcxx/include/__memory/is_sufficiently_aligned.h +1 -1
- package/libcxx/include/__memory/out_ptr.h +1 -1
- package/libcxx/include/__memory/pointer_traits.h +1 -1
- package/libcxx/include/__memory/raw_storage_iterator.h +3 -9
- package/libcxx/include/__memory/shared_count.h +9 -30
- package/libcxx/include/__memory/shared_ptr.h +100 -145
- package/libcxx/include/__memory/temp_value.h +1 -2
- package/libcxx/include/__memory/uninitialized_algorithms.h +44 -115
- package/libcxx/include/__memory/unique_ptr.h +14 -16
- package/libcxx/include/__memory/uses_allocator_construction.h +1 -0
- package/libcxx/include/__memory_resource/memory_resource.h +4 -2
- package/libcxx/include/__memory_resource/monotonic_buffer_resource.h +1 -1
- package/libcxx/include/__memory_resource/polymorphic_allocator.h +13 -8
- package/libcxx/include/__memory_resource/pool_options.h +1 -1
- package/libcxx/include/__memory_resource/synchronized_pool_resource.h +4 -2
- package/libcxx/include/__memory_resource/unsynchronized_pool_resource.h +1 -1
- package/libcxx/include/__mutex/mutex.h +2 -2
- package/libcxx/include/__mutex/once_flag.h +14 -11
- package/libcxx/include/__mutex/tag_types.h +3 -3
- package/libcxx/include/__mutex/unique_lock.h +8 -7
- package/libcxx/include/__new/align_val_t.h +6 -0
- package/libcxx/include/__new/allocate.h +1 -2
- package/libcxx/include/__new/exceptions.h +8 -2
- package/libcxx/include/__new/global_new_delete.h +4 -11
- package/libcxx/include/__new/interference_size.h +0 -4
- package/libcxx/include/__new/launder.h +3 -5
- package/libcxx/include/__new/nothrow_t.h +1 -1
- package/libcxx/include/__numeric/gcd_lcm.h +24 -34
- package/libcxx/include/__numeric/midpoint.h +9 -14
- package/libcxx/include/__numeric/pstl.h +2 -2
- package/libcxx/include/__numeric/saturation_arithmetic.h +13 -5
- package/libcxx/include/__ostream/basic_ostream.h +8 -8
- package/libcxx/include/__pstl/backends/default.h +14 -14
- package/libcxx/include/__pstl/backends/libdispatch.h +2 -2
- package/libcxx/include/__pstl/cpu_algos/find_if.h +1 -1
- package/libcxx/include/__pstl/cpu_algos/transform.h +5 -6
- package/libcxx/include/__pstl/cpu_algos/transform_reduce.h +5 -4
- package/libcxx/include/__random/binomial_distribution.h +10 -4
- package/libcxx/include/__random/mersenne_twister_engine.h +50 -154
- package/libcxx/include/__random/piecewise_constant_distribution.h +3 -2
- package/libcxx/include/__random/piecewise_linear_distribution.h +3 -2
- package/libcxx/include/__ranges/adjacent_transform_view.h +406 -0
- package/libcxx/include/__ranges/adjacent_view.h +419 -0
- package/libcxx/include/__ranges/as_rvalue_view.h +9 -9
- package/libcxx/include/__ranges/chunk_by_view.h +6 -6
- package/libcxx/include/__ranges/common_view.h +7 -7
- package/libcxx/include/__ranges/drop_view.h +8 -8
- package/libcxx/include/__ranges/drop_while_view.h +5 -5
- package/libcxx/include/__ranges/elements_of.h +49 -0
- package/libcxx/include/__ranges/empty_view.h +5 -5
- package/libcxx/include/__ranges/filter_view.h +10 -10
- package/libcxx/include/__ranges/iota_view.h +41 -22
- package/libcxx/include/__ranges/owning_view.h +15 -15
- package/libcxx/include/__ranges/ref_view.h +6 -6
- package/libcxx/include/__ranges/repeat_view.h +17 -10
- package/libcxx/include/__ranges/single_view.h +8 -8
- package/libcxx/include/__ranges/take_view.h +9 -9
- package/libcxx/include/__ranges/transform_view.h +1 -2
- package/libcxx/include/__ranges/view_interface.h +10 -10
- package/libcxx/include/__ranges/zip_transform_view.h +357 -0
- package/libcxx/include/__ranges/zip_view.h +20 -20
- package/libcxx/include/__split_buffer +612 -240
- package/libcxx/include/__stop_token/atomic_unique_lock.h +1 -1
- package/libcxx/include/__stop_token/stop_callback.h +2 -2
- package/libcxx/include/__stop_token/stop_source.h +1 -1
- package/libcxx/include/__stop_token/stop_state.h +4 -4
- package/libcxx/include/__stop_token/stop_token.h +1 -1
- package/libcxx/include/__string/char_traits.h +51 -31
- package/libcxx/include/__string/constexpr_c_functions.h +5 -5
- package/libcxx/include/__support/xlocale/__strtonum_fallback.h +0 -8
- package/libcxx/include/__system_error/error_category.h +8 -8
- package/libcxx/include/__system_error/error_code.h +5 -5
- package/libcxx/include/__system_error/error_condition.h +4 -4
- package/libcxx/include/__system_error/system_error.h +1 -1
- package/libcxx/include/__thread/id.h +1 -1
- package/libcxx/include/__thread/jthread.h +1 -1
- package/libcxx/include/__thread/poll_with_backoff.h +27 -8
- package/libcxx/include/__thread/support/c11.h +8 -8
- package/libcxx/include/__thread/support/pthread.h +8 -8
- package/libcxx/include/__thread/support/windows.h +8 -8
- package/libcxx/include/__thread/thread.h +13 -8
- package/libcxx/include/__thread/timed_backoff_policy.h +3 -2
- package/libcxx/include/__tree +849 -701
- package/libcxx/include/__tuple/sfinae_helpers.h +1 -44
- package/libcxx/include/__tuple/tuple_element.h +0 -12
- package/libcxx/include/__tuple/tuple_size.h +0 -4
- package/libcxx/include/__tuple/tuple_transform.h +45 -0
- package/libcxx/include/__type_traits/aligned_storage.h +13 -40
- package/libcxx/include/__type_traits/desugars_to.h +4 -0
- package/libcxx/include/__type_traits/invoke.h +8 -0
- package/libcxx/include/__type_traits/is_allocator.h +6 -7
- package/libcxx/include/__type_traits/is_array.h +26 -0
- package/libcxx/include/__type_traits/is_equality_comparable.h +16 -21
- package/libcxx/include/__type_traits/is_final.h +1 -1
- package/libcxx/include/__type_traits/is_floating_point.h +7 -6
- package/libcxx/include/__type_traits/is_generic_transparent_comparator.h +30 -0
- package/libcxx/include/__type_traits/is_specialization.h +2 -6
- package/libcxx/include/__type_traits/is_within_lifetime.h +29 -0
- package/libcxx/include/__type_traits/make_transparent.h +52 -0
- package/libcxx/include/__type_traits/reference_constructs_from_temporary.h +1 -7
- package/libcxx/include/__type_traits/reference_converts_from_temporary.h +1 -1
- package/libcxx/include/__utility/cmp.h +19 -7
- package/libcxx/include/__utility/default_three_way_comparator.h +70 -0
- package/libcxx/include/__utility/in_place.h +1 -1
- package/libcxx/include/__utility/integer_sequence.h +56 -41
- package/libcxx/include/__utility/lazy_synth_three_way_comparator.h +120 -0
- package/libcxx/include/__utility/pair.h +22 -25
- package/libcxx/include/__utility/scope_guard.h +2 -0
- package/libcxx/include/__utility/try_key_extraction.h +114 -0
- package/libcxx/include/__vector/vector.h +187 -160
- package/libcxx/include/__vector/vector_bool.h +76 -83
- package/libcxx/include/any +118 -155
- package/libcxx/include/array +88 -56
- package/libcxx/include/atomic +2 -0
- package/libcxx/include/barrier +20 -24
- package/libcxx/include/bitset +49 -30
- package/libcxx/include/ccomplex +3 -11
- package/libcxx/include/chrono +47 -0
- package/libcxx/include/ciso646 +3 -6
- package/libcxx/include/complex +77 -65
- package/libcxx/include/complex.h +10 -10
- package/libcxx/include/condition_variable +3 -3
- package/libcxx/include/cstdalign +3 -10
- package/libcxx/include/cstdbool +3 -10
- package/libcxx/include/ctgmath +2 -11
- package/libcxx/include/ctype.h +24 -24
- package/libcxx/include/cwchar +2 -2
- package/libcxx/include/deque +109 -225
- package/libcxx/include/errno.h +269 -269
- package/libcxx/include/exception +4 -1
- package/libcxx/include/ext/hash_map +7 -48
- package/libcxx/include/ext/hash_set +2 -8
- package/libcxx/include/fenv.h +43 -43
- package/libcxx/include/flat_map +663 -11
- package/libcxx/include/flat_set +543 -8
- package/libcxx/include/float.h +16 -16
- package/libcxx/include/forward_list +33 -53
- package/libcxx/include/fstream +57 -42
- package/libcxx/include/future +41 -51
- package/libcxx/include/initializer_list +9 -3
- package/libcxx/include/inttypes.h +16 -16
- package/libcxx/include/ios +28 -28
- package/libcxx/include/istream +19 -13
- package/libcxx/include/iterator +10 -0
- package/libcxx/include/latch +7 -5
- package/libcxx/include/limits +4 -4
- package/libcxx/include/list +61 -79
- package/libcxx/include/map +386 -274
- package/libcxx/include/math.h +19 -0
- package/libcxx/include/mdspan +1 -5
- package/libcxx/include/mutex +29 -19
- package/libcxx/include/optional +644 -149
- package/libcxx/include/print +9 -5
- package/libcxx/include/queue +39 -37
- package/libcxx/include/ranges +48 -0
- package/libcxx/include/regex +33 -31
- package/libcxx/include/scoped_allocator +16 -11
- package/libcxx/include/semaphore +15 -18
- package/libcxx/include/set +220 -192
- package/libcxx/include/shared_mutex +3 -8
- package/libcxx/include/span +53 -37
- package/libcxx/include/sstream +34 -28
- package/libcxx/include/stack +13 -15
- package/libcxx/include/stddef.h +10 -10
- package/libcxx/include/stdexcept +2 -2
- package/libcxx/include/stdio.h +20 -21
- package/libcxx/include/streambuf +59 -19
- package/libcxx/include/string +574 -573
- package/libcxx/include/string_view +113 -89
- package/libcxx/include/strstream +10 -10
- package/libcxx/include/syncstream +4 -4
- package/libcxx/include/tgmath.h +12 -12
- package/libcxx/include/tuple +242 -212
- package/libcxx/include/type_traits +8 -2
- package/libcxx/include/typeindex +5 -3
- package/libcxx/include/typeinfo +92 -89
- package/libcxx/include/unordered_map +179 -304
- package/libcxx/include/unordered_set +168 -195
- package/libcxx/include/utility +12 -0
- package/libcxx/include/valarray +106 -161
- package/libcxx/include/variant +25 -33
- package/libcxx/include/version +41 -24
- package/libcxx/include/wctype.h +29 -29
- package/libcxx/libc/hdr/errno_macros.h +3 -1
- package/libcxx/libc/hdr/stdint_proxy.h +18 -0
- package/libcxx/libc/hdr/types/wchar_t.h +23 -0
- package/libcxx/libc/hdr/wchar_overlay.h +69 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
- package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
- package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
- package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
- package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
- package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
- package/libcxx/libc/shared/libc_common.h +5 -0
- package/libcxx/libc/src/__support/CPP/bit.h +50 -12
- package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
- package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
- package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
- package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
- package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
- package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
- package/libcxx/libc/src/__support/big_int.h +14 -14
- package/libcxx/libc/src/__support/common.h +3 -2
- package/libcxx/libc/src/__support/ctype_utils.h +19 -12
- package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
- package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
- package/libcxx/libc/src/__support/libc_assert.h +2 -0
- package/libcxx/libc/src/__support/macros/attributes.h +44 -1
- package/libcxx/libc/src/__support/macros/config.h +23 -0
- package/libcxx/libc/src/__support/macros/null_check.h +1 -2
- package/libcxx/libc/src/__support/macros/optimization.h +3 -0
- package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
- package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
- package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
- package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
- package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
- package/libcxx/libc/src/__support/math_extras.h +20 -4
- package/libcxx/libc/src/__support/str_to_float.h +98 -125
- package/libcxx/libc/src/__support/str_to_integer.h +39 -27
- package/libcxx/libc/src/__support/wctype_utils.h +588 -0
- package/libcxx/src/any.cpp +4 -0
- package/libcxx/src/atomic.cpp +365 -80
- package/libcxx/src/barrier.cpp +4 -3
- package/libcxx/src/charconv.cpp +6 -3
- package/libcxx/src/condition_variable_destructor.cpp +1 -1
- package/libcxx/src/error_category.cpp +3 -1
- package/libcxx/src/exception.cpp +2 -10
- package/libcxx/src/experimental/time_zone.cpp +1 -1
- package/libcxx/src/experimental/tzdb.cpp +4 -1
- package/libcxx/src/filesystem/error.h +4 -22
- package/libcxx/src/filesystem/format_string.h +9 -18
- package/libcxx/src/filesystem/int128_builtins.cpp +2 -0
- package/libcxx/src/filesystem/operations.cpp +2 -9
- package/libcxx/src/filesystem/path.cpp +3 -1
- package/libcxx/src/include/aligned_alloc.h +65 -0
- package/libcxx/src/include/config_elast.h +1 -1
- package/libcxx/src/include/from_chars_floating_point.h +11 -7
- package/libcxx/src/include/overridable_function.h +8 -10
- package/libcxx/src/iostream.cpp +56 -37
- package/libcxx/src/locale.cpp +213 -196
- package/libcxx/src/memory.cpp +12 -14
- package/libcxx/src/mutex_destructor.cpp +1 -1
- package/libcxx/src/new.cpp +5 -5
- package/libcxx/src/optional.cpp +4 -0
- package/libcxx/src/print.cpp +9 -1
- package/libcxx/src/random.cpp +0 -26
- package/libcxx/src/string.cpp +10 -25
- package/libcxx/src/support/runtime/exception_fallback.ipp +2 -0
- package/libcxx/src/support/runtime/exception_glibcxx.ipp +3 -0
- package/libcxx/src/support/runtime/exception_libcxxabi.ipp +6 -2
- package/libcxx/src/support/runtime/exception_libcxxrt.ipp +2 -0
- package/libcxx/src/support/runtime/exception_msvc.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_cxxabi.ipp +9 -10
- package/libcxx/src/support/runtime/exception_pointer_glibcxx.ipp +2 -0
- package/libcxx/src/support/runtime/exception_pointer_msvc.ipp +1 -0
- package/libcxx/src/support/runtime/exception_pointer_unimplemented.ipp +1 -0
- package/libcxx/src/support/win32/locale_win32.cpp +1 -1
- package/libcxx/src/system_error.cpp +2 -0
- package/libcxx/src/thread.cpp +1 -3
- package/libcxx/src/valarray.cpp +1 -2
- package/libcxx/src/vector.cpp +2 -2
- package/libcxxabi/include/__cxxabi_config.h +42 -23
- package/libcxxabi/src/cxa_exception.cpp +4 -2
- package/libcxxabi/src/cxa_exception.h +16 -14
- package/libcxxabi/src/cxa_personality.cpp +126 -9
- package/libcxxabi/src/cxa_thread_atexit.cpp +2 -1
- package/libcxxabi/src/demangle/DemangleConfig.h +4 -0
- package/libcxxabi/src/demangle/ItaniumDemangle.h +9 -6
- package/libcxxabi/src/demangle/Utility.h +21 -7
- package/libcxxabi/src/fallback_malloc.cpp +1 -1
- package/libcxxabi/src/private_typeinfo.cpp +6 -0
- package/libcxxabi/src/stdlib_new_delete.cpp +5 -5
- package/libtsan/LICENSE.TXT +311 -0
- package/libtsan/builtins/assembly.h +41 -8
- package/libtsan/interception/interception_win.cpp +4 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary32.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_allocator_primary64.h +18 -0
- package/libtsan/sanitizer_common/sanitizer_common.h +15 -2
- package/libtsan/sanitizer_common/sanitizer_common_interceptors.inc +30 -4
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_ioctl.inc +4 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S +2 -1
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S +2 -0
- package/libtsan/sanitizer_common/sanitizer_common_syscalls.inc +18 -0
- package/libtsan/sanitizer_common/sanitizer_file.cpp +40 -12
- package/libtsan/sanitizer_common/sanitizer_file.h +3 -0
- package/libtsan/sanitizer_common/sanitizer_flags.inc +7 -0
- package/libtsan/sanitizer_common/sanitizer_fuchsia.cpp +30 -3
- package/libtsan/sanitizer_common/sanitizer_haiku.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_internal_defs.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_libc.cpp +8 -0
- package/libtsan/sanitizer_common/sanitizer_libc.h +1 -0
- package/libtsan/sanitizer_common/sanitizer_linux.cpp +15 -7
- package/libtsan/sanitizer_common/sanitizer_linux.h +3 -3
- package/libtsan/sanitizer_common/sanitizer_linux_libcdep.cpp +1 -0
- package/libtsan/sanitizer_common/sanitizer_mac.cpp +255 -104
- package/libtsan/sanitizer_common/sanitizer_mac.h +5 -0
- package/libtsan/sanitizer_common/sanitizer_netbsd.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_platform.h +27 -1
- package/libtsan/sanitizer_common/sanitizer_platform_interceptors.h +5 -4
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.cpp +15 -17
- package/libtsan/sanitizer_common/sanitizer_platform_limits_posix.h +32 -6
- package/libtsan/sanitizer_common/sanitizer_posix.cpp +3 -12
- package/libtsan/sanitizer_common/sanitizer_posix.h +2 -1
- package/libtsan/sanitizer_common/sanitizer_posix_libcdep.cpp +19 -0
- package/libtsan/sanitizer_common/sanitizer_procmaps_mac.cpp +102 -37
- package/libtsan/sanitizer_common/sanitizer_redefine_builtins.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_signal_interceptors.inc +40 -2
- package/libtsan/sanitizer_common/sanitizer_stoptheworld.h +1 -1
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp +83 -12
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_mac.cpp +3 -3
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp +7 -7
- package/libtsan/sanitizer_common/sanitizer_stoptheworld_win.cpp +2 -2
- package/libtsan/sanitizer_common/sanitizer_symbolizer_internal.h +5 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_libcdep.cpp +11 -1
- package/libtsan/sanitizer_common/sanitizer_symbolizer_mac.cpp +86 -29
- package/libtsan/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp +27 -16
- package/libtsan/sanitizer_common/sanitizer_thread_registry.cpp +5 -4
- package/libtsan/sanitizer_common/sanitizer_thread_registry.h +4 -4
- package/libtsan/sanitizer_common/sanitizer_win.cpp +1 -3
- package/libtsan/tsan_debugging.cpp +2 -2
- package/libtsan/tsan_flags.cpp +37 -0
- package/libtsan/tsan_flags.h +8 -0
- package/libtsan/tsan_flags.inc +12 -0
- package/libtsan/tsan_interceptors.h +9 -1
- package/libtsan/tsan_interceptors_mac.cpp +19 -0
- package/libtsan/tsan_interceptors_posix.cpp +78 -32
- package/libtsan/tsan_interface.h +3 -3
- package/libtsan/tsan_interface_ann.cpp +23 -9
- package/libtsan/tsan_mman.cpp +18 -4
- package/libtsan/tsan_platform.h +44 -7
- package/libtsan/tsan_platform_linux.cpp +42 -14
- package/libtsan/tsan_platform_mac.cpp +16 -3
- package/libtsan/tsan_report.h +14 -1
- package/libtsan/tsan_rtl.cpp +14 -0
- package/libtsan/tsan_rtl.h +7 -2
- package/libtsan/tsan_rtl_aarch64.S +3 -5
- package/libtsan/tsan_rtl_access.cpp +8 -3
- package/libtsan/tsan_rtl_amd64.S +2 -0
- package/libtsan/tsan_rtl_mutex.cpp +94 -49
- package/libtsan/tsan_rtl_report.cpp +132 -65
- package/libtsan/tsan_rtl_thread.cpp +31 -9
- package/libtsan/tsan_symbolize.cpp +1 -1
- package/libtsan/tsan_symbolize.h +1 -1
- package/libtsan/tsan_trace.h +1 -1
- package/libunwind/include/__libunwind_config.h +11 -2
- package/libunwind/include/libunwind.h +117 -11
- package/libunwind/include/unwind_arm_ehabi.h +4 -1
- package/libunwind/src/AddressSpace.hpp +42 -20
- package/libunwind/src/CompactUnwinder.hpp +16 -5
- package/libunwind/src/DwarfInstructions.hpp +24 -13
- package/libunwind/src/DwarfParser.hpp +62 -23
- package/libunwind/src/EHHeaderParser.hpp +7 -4
- package/libunwind/src/Registers.hpp +226 -22
- package/libunwind/src/Unwind-seh.cpp +6 -7
- package/libunwind/src/Unwind-wasm.c +7 -7
- package/libunwind/src/UnwindCursor.hpp +167 -49
- package/libunwind/src/UnwindLevel1.c +46 -17
- package/libunwind/src/UnwindRegistersRestore.S +46 -5
- package/libunwind/src/UnwindRegistersSave.S +86 -2
- package/libunwind/src/assembly.h +5 -1
- package/libunwind/src/config.h +9 -0
- package/libunwind/src/gcc_personality_v0.c +79 -6
- package/libunwind/src/libunwind.cpp +104 -4
- package/libunwind/src/libunwind_ext.h +7 -1
- package/libunwind/src/shadow_stack_unwind.h +2 -2
- package/lldb/pretty_printers.py +948 -0
- package/package.json +1 -1
- package/std/Build/Cache/Path.zig +1 -1
- package/std/Build/Cache.zig +6 -6
- package/std/Build/Step/Compile.zig +18 -20
- package/std/Build/Step/ConfigHeader.zig +1 -1
- package/std/Build/Step/Run.zig +15 -8
- package/std/Build/Step.zig +3 -7
- package/std/Build/Watch/FsEvents.zig +1 -1
- package/std/Build/WebServer.zig +2 -2
- package/std/Build/abi.zig +1 -1
- package/std/Build.zig +0 -3
- package/std/Io/Dir.zig +9 -4
- package/std/Io/Dispatch.zig +8 -18
- package/std/Io/File/Writer.zig +8 -6
- package/std/Io/File.zig +0 -9
- package/std/Io/Kqueue.zig +3 -3
- package/std/Io/Reader.zig +8 -14
- package/std/Io/Semaphore.zig +112 -17
- package/std/Io/Terminal.zig +1 -1
- package/std/Io/Threaded.zig +183 -46
- package/std/Io/Uring.zig +18 -20
- package/std/Io/Writer.zig +10 -7
- package/std/Io/net/HostName.zig +11 -6
- package/std/Io/net.zig +11 -11
- package/std/Io.zig +104 -38
- package/std/Random/ChaCha.zig +2 -2
- package/std/Random/benchmark.zig +2 -2
- package/std/Random.zig +6 -6
- package/std/SemanticVersion.zig +1 -1
- package/std/Target/Query.zig +2 -2
- package/std/Target/aarch64.zig +620 -77
- package/std/Target/amdgcn.zig +421 -21
- package/std/Target/arm.zig +40 -6
- package/std/Target/bpf.zig +6 -0
- package/std/Target/hexagon.zig +41 -6
- package/std/Target/loongarch.zig +18 -0
- package/std/Target/mips.zig +6 -0
- package/std/Target/nvptx.zig +58 -35
- package/std/Target/powerpc.zig +27 -19
- package/std/Target/riscv.zig +415 -177
- package/std/Target/sparc.zig +17 -0
- package/std/Target/wasm.zig +7 -0
- package/std/Target/x86.zig +200 -31
- package/std/Target/xtensa.zig +65 -0
- package/std/Target.zig +67 -14
- package/std/Thread.zig +5 -2
- package/std/array_hash_map.zig +103 -57
- package/std/array_list.zig +10 -31
- package/std/base64.zig +5 -5
- package/std/bit_set.zig +86 -69
- package/std/c/haiku.zig +3 -0
- package/std/c/serenity.zig +1 -6
- package/std/c.zig +123 -32
- package/std/compress/flate/Decompress.zig +3 -4
- package/std/compress/zstd/Decompress.zig +7 -9
- package/std/crypto/25519/curve25519.zig +2 -2
- package/std/crypto/25519/edwards25519.zig +3 -3
- package/std/crypto/25519/ristretto255.zig +2 -2
- package/std/crypto/25519/scalar.zig +6 -6
- package/std/crypto/25519/x25519.zig +1 -1
- package/std/crypto/Certificate.zig +14 -2
- package/std/crypto/Sha1.zig +1 -1
- package/std/crypto/aegis.zig +45 -39
- package/std/crypto/aes_ccm.zig +22 -22
- package/std/crypto/aes_gcm.zig +10 -12
- package/std/crypto/aes_ocb.zig +9 -9
- package/std/crypto/argon2.zig +15 -15
- package/std/crypto/ascon.zig +75 -33
- package/std/crypto/bcrypt.zig +20 -10
- package/std/crypto/benchmark.zig +7 -7
- package/std/crypto/blake2.zig +100 -64
- package/std/crypto/cbc_mac.zig +1 -1
- package/std/crypto/chacha20.zig +10 -10
- package/std/crypto/cmac.zig +3 -3
- package/std/crypto/codecs/asn1/Oid.zig +12 -1
- package/std/crypto/codecs/asn1/der/Encoder.zig +1 -1
- package/std/crypto/codecs/asn1.zig +1 -1
- package/std/crypto/codecs/base64_hex_ct.zig +3 -5
- package/std/crypto/ecdsa.zig +9 -9
- package/std/crypto/ff.zig +4 -5
- package/std/crypto/ghash_polyval.zig +4 -4
- package/std/crypto/hkdf.zig +1 -1
- package/std/crypto/isap.zig +3 -3
- package/std/crypto/kangarootwelve.zig +1 -1
- package/std/crypto/keccak_p.zig +8 -8
- package/std/crypto/md5.zig +1 -1
- package/std/crypto/ml_dsa.zig +39 -39
- package/std/crypto/ml_kem.zig +12 -34
- package/std/crypto/modes.zig +2 -2
- package/std/crypto/pbkdf2.zig +1 -1
- package/std/crypto/pcurves/common.zig +4 -5
- package/std/crypto/pcurves/p256/scalar.zig +3 -3
- package/std/crypto/pcurves/p384/scalar.zig +2 -2
- package/std/crypto/pcurves/secp256k1/scalar.zig +3 -3
- package/std/crypto/pcurves/tests/p256.zig +5 -5
- package/std/crypto/pcurves/tests/p384.zig +5 -5
- package/std/crypto/pcurves/tests/secp256k1.zig +3 -3
- package/std/crypto/salsa20.zig +8 -8
- package/std/crypto/sha2.zig +2 -2
- package/std/crypto/sha3.zig +2 -2
- package/std/crypto/siphash.zig +1 -1
- package/std/crypto/timing_safe.zig +10 -9
- package/std/crypto/tls/Client.zig +89 -13
- package/std/crypto/tls.zig +1 -1
- package/std/crypto.zig +4 -3
- package/std/debug/Dwarf.zig +15 -12
- package/std/debug/Pdb.zig +25 -17
- package/std/debug.zig +14 -8
- package/std/deque.zig +1 -1
- package/std/elf.zig +1 -1
- package/std/enums.zig +8 -8
- package/std/fmt/parse_float/decimal.zig +1 -1
- package/std/fmt/parse_float.zig +1 -1
- package/std/fmt.zig +14 -10
- package/std/fs/path.zig +7 -5
- package/std/hash/Adler32.zig +3 -3
- package/std/hash/benchmark.zig +2 -2
- package/std/hash/wyhash.zig +2 -2
- package/std/hash/xxhash.zig +0 -6
- package/std/hash_map.zig +20 -1
- package/std/heap/BufferFirstAllocator.zig +165 -0
- package/std/heap/debug_allocator.zig +2 -2
- package/std/heap/memory_pool.zig +34 -197
- package/std/heap.zig +2 -133
- package/std/http/Client.zig +21 -24
- package/std/http.zig +4 -5
- package/std/json/Scanner.zig +2 -2
- package/std/json/static.zig +2 -2
- package/std/{builtin.zig → lang.zig} +5 -1
- package/std/leb128.zig +2 -2
- package/std/math/big/int.zig +5 -5
- package/std/math/big.zig +4 -4
- package/std/math/copysign.zig +1 -1
- package/std/math/float.zig +62 -0
- package/std/math/frexp.zig +4 -4
- package/std/math/ilogb.zig +1 -1
- package/std/math/isfinite.zig +1 -1
- package/std/math/isinf.zig +1 -1
- package/std/math/isnan.zig +1 -2
- package/std/math/isnormal.zig +2 -2
- package/std/math/iszero.zig +2 -2
- package/std/math/ldexp.zig +2 -2
- package/std/math/log10.zig +0 -2
- package/std/math/modf.zig +1 -2
- package/std/math/nextafter.zig +3 -4
- package/std/math/pow.zig +1 -1
- package/std/math/powi.zig +2 -3
- package/std/math/signbit.zig +0 -1
- package/std/math.zig +21 -26
- package/std/mem/Allocator.zig +0 -6
- package/std/mem.zig +31 -31
- package/std/meta/trailer_flags.zig +1 -1
- package/std/meta.zig +4 -36
- package/std/multi_array_list.zig +24 -0
- package/std/os/emscripten.zig +7 -6
- package/std/os/linux/IoUring.zig +2 -0
- package/std/os/linux/aarch64.zig +41 -12
- package/std/os/linux/arc.zig +41 -12
- package/std/os/linux/arm.zig +41 -12
- package/std/os/linux/bpf.zig +6 -0
- package/std/os/linux/hexagon.zig +33 -11
- package/std/os/linux/ioctl.zig +2 -2
- package/std/os/linux/loongarch32.zig +41 -13
- package/std/os/linux/loongarch64.zig +41 -12
- package/std/os/linux/m68k.zig +41 -13
- package/std/os/linux/mips.zig +67 -36
- package/std/os/linux/mips64.zig +60 -29
- package/std/os/linux/mipsn32.zig +60 -29
- package/std/os/linux/or1k.zig +41 -12
- package/std/os/linux/powerpc.zig +41 -12
- package/std/os/linux/powerpc64.zig +41 -12
- package/std/os/linux/riscv32.zig +41 -12
- package/std/os/linux/riscv64.zig +41 -12
- package/std/os/linux/s390x.zig +44 -7
- package/std/os/linux/sparc64.zig +83 -52
- package/std/os/linux/syscalls.zig +26 -1
- package/std/os/linux/thumb.zig +52 -36
- package/std/os/linux/x32.zig +41 -12
- package/std/os/linux/x86.zig +44 -15
- package/std/os/linux/x86_64.zig +41 -12
- package/std/os/linux.zig +416 -450
- package/std/os/plan9.zig +1 -1
- package/std/os/uefi/hii.zig +1 -1
- package/std/os/uefi/tables/boot_services.zig +9 -8
- package/std/os/uefi/tables/runtime_services.zig +1 -1
- package/std/os/windows.zig +130 -1
- package/std/os.zig +41 -0
- package/std/posix.zig +1 -1
- package/std/process/Environ.zig +1 -1
- package/std/process.zig +5 -4
- package/std/simd.zig +4 -21
- package/std/sort.zig +3 -3
- package/std/start.zig +17 -4
- package/std/std.zig +8 -1
- package/std/tar/Writer.zig +39 -33
- package/std/tar.zig +8 -4
- package/std/testing.zig +2 -2
- package/std/unicode.zig +13 -8
- package/std/zig/Ast/Render.zig +6 -30
- package/std/zig/Ast.zig +12 -37
- package/std/zig/AstGen.zig +175 -332
- package/std/zig/AstRlAnnotate.zig +1 -22
- package/std/zig/AstSmith.zig +5 -11
- package/std/zig/BuiltinFn.zig +0 -32
- package/std/zig/ErrorBundle.zig +6 -2
- package/std/zig/LibCDirs.zig +15 -6
- package/std/zig/LibCInstallation.zig +34 -12
- package/std/zig/Parse.zig +11 -76
- package/std/zig/TokenSmith.zig +0 -6
- package/std/zig/WindowsSdk.zig +18 -18
- package/std/zig/Zir.zig +65 -132
- package/std/zig/ZonGen.zig +19 -27
- package/std/zig/llvm/Builder.zig +39 -33
- package/std/zig/llvm/bitcode_writer.zig +3 -3
- package/std/zig/llvm/ir.zig +8 -8
- package/std/zig/system/arm.zig +56 -2
- package/std/zig/system/windows.zig +34 -1
- package/std/zig/system/x86.zig +60 -16
- package/std/zig/system.zig +0 -10
- package/std/zig/target.zig +1 -4
- package/std/zig/tokenizer.zig +4 -43
- package/std/zig.zig +3 -14
- package/std/zip.zig +5 -5
- package/std/zon/parse.zig +1 -1
- package/zig.h +340 -1
- package/compiler_rt/long_double.zig +0 -37
- package/include/amxbf16transposeintrin.h +0 -94
- package/include/amxcomplextransposeintrin.h +0 -303
- package/include/amxfp16transposeintrin.h +0 -94
- package/include/amxmovrstransposeintrin.h +0 -200
- package/include/amxtf32transposeintrin.h +0 -105
- package/include/amxtransposeintrin.h +0 -248
- package/libc/include/hexagon-linux-any/asm/signal.h +0 -29
- package/libc/include/s390x-linux-any/asm/tape390.h +0 -103
- package/libc/mingw/math/lrintl.c +0 -18
- package/libc/mingw/math/rintl.c +0 -16
- package/libc/mingw/winpthreads/spinlock.c +0 -82
- package/libc/musl/src/linux/tee.c +0 -8
- package/libc/musl/src/math/i386/lrintl.c +0 -8
- package/libc/musl/src/math/i386/rintl.c +0 -7
- package/libc/musl/src/math/lrintl.c +0 -36
- package/libc/musl/src/math/rintl.c +0 -29
- package/libc/musl/src/math/s390x/rintl.c +0 -15
- package/libc/musl/src/math/x32/lrintl.s +0 -7
- package/libc/musl/src/math/x32/rintl.s +0 -6
- package/libc/musl/src/math/x86_64/lrintl.c +0 -8
- package/libc/musl/src/math/x86_64/rintl.c +0 -7
- package/libc/musl/src/string/strdup.c +0 -10
- package/libc/musl/src/string/strndup.c +0 -12
- package/libc/musl/src/string/wcsdup.c +0 -10
- package/libc/musl/src/thread/pthread_spin_destroy.c +0 -6
- package/libc/musl/src/thread/pthread_spin_init.c +0 -6
- package/libc/musl/src/thread/pthread_spin_lock.c +0 -8
- package/libc/musl/src/thread/pthread_spin_trylock.c +0 -7
- package/libc/musl/src/thread/pthread_spin_unlock.c +0 -7
- package/libc/musl/src/unistd/dup2.c +0 -20
- package/libc/musl/src/unistd/dup3.c +0 -26
- package/libc/wasi/thread-stub/pthread_spin_lock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_trylock.c +0 -8
- package/libc/wasi/thread-stub/pthread_spin_unlock.c +0 -7
- package/libtsan/sanitizer_common/sanitizer_coverage_interface.inc +0 -43
- package/std/Build/Step/CheckObject.zig +0 -2764
- /package/std/{builtin → lang}/assembly.zig +0 -0
package/libcxx/src/atomic.cpp
CHANGED
|
@@ -9,8 +9,13 @@
|
|
|
9
9
|
#include <__thread/timed_backoff_policy.h>
|
|
10
10
|
#include <atomic>
|
|
11
11
|
#include <climits>
|
|
12
|
+
#include <cstddef>
|
|
13
|
+
#include <cstdint>
|
|
14
|
+
#include <cstring>
|
|
12
15
|
#include <functional>
|
|
16
|
+
#include <new>
|
|
13
17
|
#include <thread>
|
|
18
|
+
#include <type_traits>
|
|
14
19
|
|
|
15
20
|
#include "include/apple_availability.h"
|
|
16
21
|
|
|
@@ -41,6 +46,11 @@
|
|
|
41
46
|
// OpenBSD has no indirect syscalls
|
|
42
47
|
# define _LIBCPP_FUTEX(...) futex(__VA_ARGS__)
|
|
43
48
|
|
|
49
|
+
#elif defined(_WIN32)
|
|
50
|
+
|
|
51
|
+
# include <memory>
|
|
52
|
+
# include <windows.h>
|
|
53
|
+
|
|
44
54
|
#else // <- Add other operating systems here
|
|
45
55
|
|
|
46
56
|
// Baseline needs no new headers
|
|
@@ -49,17 +59,34 @@
|
|
|
49
59
|
|
|
50
60
|
#endif
|
|
51
61
|
|
|
62
|
+
_LIBCPP_PUSH_MACROS
|
|
63
|
+
#include <__undef_macros>
|
|
64
|
+
|
|
52
65
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
53
66
|
|
|
67
|
+
struct NoTimeout {};
|
|
68
|
+
|
|
54
69
|
#ifdef __linux__
|
|
55
70
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
71
|
+
template <std::size_t _Size, class MaybeTimeout>
|
|
72
|
+
static void __platform_wait_on_address(void const* __ptr, void const* __val, MaybeTimeout maybe_timeout_ns) {
|
|
73
|
+
static_assert(_Size == 4, "Can only wait on 4 bytes value");
|
|
74
|
+
alignas(__cxx_contention_t) char buffer[_Size];
|
|
75
|
+
std::memcpy(&buffer, const_cast<const void*>(__val), _Size);
|
|
76
|
+
static constexpr timespec __default_timeout = {2, 0};
|
|
77
|
+
timespec __timeout;
|
|
78
|
+
if constexpr (is_same_v<MaybeTimeout, NoTimeout>) {
|
|
79
|
+
__timeout = __default_timeout;
|
|
80
|
+
} else {
|
|
81
|
+
__timeout.tv_sec = maybe_timeout_ns / 1'000'000'000;
|
|
82
|
+
__timeout.tv_nsec = maybe_timeout_ns % 1'000'000'000;
|
|
83
|
+
}
|
|
84
|
+
_LIBCPP_FUTEX(__ptr, FUTEX_WAIT_PRIVATE, *reinterpret_cast<__cxx_contention_t const*>(&buffer), &__timeout, 0, 0);
|
|
60
85
|
}
|
|
61
86
|
|
|
62
|
-
|
|
87
|
+
template <std::size_t _Size>
|
|
88
|
+
static void __platform_wake_by_address(void const* __ptr, bool __notify_one) {
|
|
89
|
+
static_assert(_Size == 4, "Can only wake up on 4 bytes value");
|
|
63
90
|
_LIBCPP_FUTEX(__ptr, FUTEX_WAKE_PRIVATE, __notify_one ? 1 : INT_MAX, 0, 0, 0);
|
|
64
91
|
}
|
|
65
92
|
|
|
@@ -70,19 +97,41 @@ extern "C" int __ulock_wait(
|
|
|
70
97
|
extern "C" int __ulock_wake(uint32_t operation, void* addr, uint64_t wake_value);
|
|
71
98
|
|
|
72
99
|
// https://github.com/apple/darwin-xnu/blob/2ff845c2e033bd0ff64b5b6aa6063a1f8f65aa32/bsd/sys/ulock.h#L82
|
|
100
|
+
# define UL_COMPARE_AND_WAIT 1
|
|
73
101
|
# define UL_COMPARE_AND_WAIT64 5
|
|
74
102
|
# define ULF_WAKE_ALL 0x00000100
|
|
75
103
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
static_assert(
|
|
79
|
-
|
|
104
|
+
template <std::size_t _Size, class MaybeTimeout>
|
|
105
|
+
static void __platform_wait_on_address(void const* __ptr, void const* __val, MaybeTimeout maybe_timeout_ns) {
|
|
106
|
+
static_assert(_Size == 8 || _Size == 4, "Can only wait on 8 bytes or 4 bytes value");
|
|
107
|
+
auto __timeout_us = [&] {
|
|
108
|
+
if constexpr (is_same_v<MaybeTimeout, NoTimeout>) {
|
|
109
|
+
return uint32_t(0);
|
|
110
|
+
} else {
|
|
111
|
+
return std::max(static_cast<uint32_t>(maybe_timeout_ns / 1000), uint32_t(1));
|
|
112
|
+
}
|
|
113
|
+
}();
|
|
114
|
+
if constexpr (_Size == 4) {
|
|
115
|
+
alignas(uint32_t) char buffer[_Size];
|
|
116
|
+
std::memcpy(&buffer, const_cast<const void*>(__val), _Size);
|
|
117
|
+
__ulock_wait(
|
|
118
|
+
UL_COMPARE_AND_WAIT, const_cast<void*>(__ptr), *reinterpret_cast<uint32_t const*>(&buffer), __timeout_us);
|
|
119
|
+
} else {
|
|
120
|
+
alignas(uint64_t) char buffer[_Size];
|
|
121
|
+
std::memcpy(&buffer, const_cast<const void*>(__val), _Size);
|
|
122
|
+
__ulock_wait(
|
|
123
|
+
UL_COMPARE_AND_WAIT64, const_cast<void*>(__ptr), *reinterpret_cast<uint64_t const*>(&buffer), __timeout_us);
|
|
124
|
+
}
|
|
80
125
|
}
|
|
81
126
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
127
|
+
template <std::size_t _Size>
|
|
128
|
+
static void __platform_wake_by_address(void const* __ptr, bool __notify_one) {
|
|
129
|
+
static_assert(_Size == 8 || _Size == 4, "Can only wake up on 8 bytes or 4 bytes value");
|
|
130
|
+
|
|
131
|
+
if constexpr (_Size == 4)
|
|
132
|
+
__ulock_wake(UL_COMPARE_AND_WAIT | (__notify_one ? 0 : ULF_WAKE_ALL), const_cast<void*>(__ptr), 0);
|
|
133
|
+
else
|
|
134
|
+
__ulock_wake(UL_COMPARE_AND_WAIT64 | (__notify_one ? 0 : ULF_WAKE_ALL), const_cast<void*>(__ptr), 0);
|
|
86
135
|
}
|
|
87
136
|
|
|
88
137
|
#elif defined(__FreeBSD__) && __SIZEOF_LONG__ == 8
|
|
@@ -92,119 +141,355 @@ static void __libcpp_platform_wake_by_address(__cxx_atomic_contention_t const vo
|
|
|
92
141
|
* limit its use to architectures where long and int64_t are synonyms.
|
|
93
142
|
*/
|
|
94
143
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
144
|
+
template <std::size_t _Size, class MaybeTimeout>
|
|
145
|
+
static void __platform_wait_on_address(void const* __ptr, void const* __val, MaybeTimeout maybe_timeout_ns) {
|
|
146
|
+
static_assert(_Size == 8, "Can only wait on 8 bytes value");
|
|
147
|
+
// At the moment, FreeBSD is stuck on stable ABI, which only supports platform wait with __cxx_contention_t
|
|
148
|
+
// It is safe to reinterpret_cast the val as it is ever going to be passed a __cxx_contention_t under this ABI
|
|
149
|
+
// If in the future FreeBSD decides to experiment unstable ABI to support more types, this cast will no longer be
|
|
150
|
+
// safe.
|
|
151
|
+
__cxx_contention_t value = *reinterpret_cast<const __cxx_contention_t*>(__val);
|
|
152
|
+
if constexpr (is_same_v<MaybeTimeout, NoTimeout>) {
|
|
153
|
+
_umtx_op(const_cast<void*>(__ptr), UMTX_OP_WAIT, value, nullptr, nullptr);
|
|
154
|
+
} else {
|
|
155
|
+
timespec timeout{};
|
|
156
|
+
timeout.tv_sec = maybe_timeout_ns / 1'000'000'000;
|
|
157
|
+
timeout.tv_nsec = maybe_timeout_ns % 1'000'000'000;
|
|
158
|
+
|
|
159
|
+
_umtx_op(const_cast<void*>(__ptr),
|
|
160
|
+
UMTX_OP_WAIT,
|
|
161
|
+
value,
|
|
162
|
+
reinterpret_cast<void*>(static_cast<uintptr_t>(sizeof(timeout))),
|
|
163
|
+
&timeout);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
template <std::size_t _Size>
|
|
168
|
+
static void __platform_wake_by_address(void const* __ptr, bool __notify_one) {
|
|
169
|
+
static_assert(_Size == 8, "Can only wake up on 8 bytes value");
|
|
170
|
+
_umtx_op(const_cast<void*>(__ptr), UMTX_OP_WAKE, __notify_one ? 1 : INT_MAX, nullptr, nullptr);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
#elif defined(_WIN32)
|
|
174
|
+
|
|
175
|
+
static void* win32_get_synch_api_function(const char* function_name) {
|
|
176
|
+
// Attempt to load the API set. Note that as per the Microsoft STL implementation, we assume this API is already
|
|
177
|
+
// loaded and accessible. While this isn't explicitly guaranteed by publicly available Win32 API documentation, it is
|
|
178
|
+
// true in practice, and may be guaranteed by internal documentation not released publicly. In any case the fact that
|
|
179
|
+
// the Microsoft STL made this assumption is reasonable basis to say that we can too. The alternative to this would be
|
|
180
|
+
// to use LoadLibrary, but then leak the module handle. We can't call FreeLibrary, as this would have to be triggered
|
|
181
|
+
// by a global static destructor, which would hang off DllMain, and calling FreeLibrary from DllMain is explicitly
|
|
182
|
+
// mentioned as not being allowed:
|
|
183
|
+
// https://learn.microsoft.com/en-us/windows/win32/dlls/dllmain
|
|
184
|
+
// Given the range of bad options here, we have chosen to mirror what Microsoft did, as it seems fair to assume that
|
|
185
|
+
// Microsoft will guarantee compatibility for us, as we are exposed to the same conditions as all existing Windows
|
|
186
|
+
// apps using the Microsoft STL VS2015/2017/2019/2022 runtimes, where Windows 7 support has not been excluded at
|
|
187
|
+
// compile time.
|
|
188
|
+
static auto module_handle = GetModuleHandleW(L"api-ms-win-core-synch-l1-2-0.dll");
|
|
189
|
+
if (module_handle == nullptr) {
|
|
190
|
+
return nullptr;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Attempt to locate the function in the API and return the result to the caller. Note that the NULL return from this
|
|
194
|
+
// method is documented as being interchangeable with nullptr.
|
|
195
|
+
// https://devblogs.microsoft.com/oldnewthing/20180307-00/?p=98175
|
|
196
|
+
return reinterpret_cast<void*>(GetProcAddress(module_handle, function_name));
|
|
98
197
|
}
|
|
99
198
|
|
|
100
|
-
|
|
101
|
-
|
|
199
|
+
template <std::size_t _Size, class MaybeTimeout>
|
|
200
|
+
static void __platform_wait_on_address(void const* __ptr, void const* __val, MaybeTimeout maybe_timeout_ns) {
|
|
201
|
+
static_assert(_Size == 8, "Can only wait on 8 bytes value");
|
|
202
|
+
// WaitOnAddress was added in Windows 8 (build 9200)
|
|
203
|
+
static auto wait_on_address =
|
|
204
|
+
reinterpret_cast<BOOL(WINAPI*)(void*, PVOID, SIZE_T, DWORD)>(win32_get_synch_api_function("WaitOnAddress"));
|
|
205
|
+
if (wait_on_address != nullptr) {
|
|
206
|
+
auto timeout_ms = [&]() -> DWORD {
|
|
207
|
+
if constexpr (is_same_v<MaybeTimeout, NoTimeout>) {
|
|
208
|
+
return INFINITE;
|
|
209
|
+
} else {
|
|
210
|
+
uint64_t ms = maybe_timeout_ns / 1'000'000;
|
|
211
|
+
if (ms == 0 && maybe_timeout_ns > 100'000)
|
|
212
|
+
// Round up to 1ms if requested between 100us - 1ms
|
|
213
|
+
return 1;
|
|
214
|
+
|
|
215
|
+
return static_cast<DWORD>(std::min(static_cast<uint64_t>(INFINITE), ms));
|
|
216
|
+
}
|
|
217
|
+
}();
|
|
218
|
+
wait_on_address(const_cast<void*>(__ptr), const_cast<void*>(__val), _Size, timeout_ms);
|
|
219
|
+
} else {
|
|
220
|
+
std::chrono::nanoseconds timeout = std::chrono::nanoseconds(0);
|
|
221
|
+
if constexpr (!is_same_v<MaybeTimeout, NoTimeout>) {
|
|
222
|
+
timeout = std::chrono::nanoseconds(maybe_timeout_ns);
|
|
223
|
+
}
|
|
224
|
+
__libcpp_thread_poll_with_backoff(
|
|
225
|
+
[=]() -> bool { return std::memcmp(const_cast<const void*>(__ptr), __val, _Size) != 0; },
|
|
226
|
+
__libcpp_timed_backoff_policy(),
|
|
227
|
+
timeout);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
template <std::size_t _Size>
|
|
232
|
+
static void __platform_wake_by_address(void const* __ptr, bool __notify_one) {
|
|
233
|
+
static_assert(_Size == 8, "Can only wake up on 8 bytes value");
|
|
234
|
+
if (__notify_one) {
|
|
235
|
+
// WakeByAddressSingle was added in Windows 8 (build 9200)
|
|
236
|
+
static auto wake_by_address_single =
|
|
237
|
+
reinterpret_cast<void(WINAPI*)(PVOID)>(win32_get_synch_api_function("WakeByAddressSingle"));
|
|
238
|
+
if (wake_by_address_single != nullptr) {
|
|
239
|
+
wake_by_address_single(const_cast<void*>(__ptr));
|
|
240
|
+
} else {
|
|
241
|
+
// The fallback implementation of waking does nothing, as the fallback wait implementation just does polling, so
|
|
242
|
+
// there's nothing to do here.
|
|
243
|
+
}
|
|
244
|
+
} else {
|
|
245
|
+
// WakeByAddressAll was added in Windows 8 (build 9200)
|
|
246
|
+
static auto wake_by_address_all =
|
|
247
|
+
reinterpret_cast<void(WINAPI*)(PVOID)>(win32_get_synch_api_function("WakeByAddressAll"));
|
|
248
|
+
if (wake_by_address_all != nullptr) {
|
|
249
|
+
wake_by_address_all(const_cast<void*>(__ptr));
|
|
250
|
+
} else {
|
|
251
|
+
// The fallback implementation of waking does nothing, as the fallback wait implementation just does polling, so
|
|
252
|
+
// there's nothing to do here.
|
|
253
|
+
}
|
|
254
|
+
}
|
|
102
255
|
}
|
|
103
256
|
|
|
104
257
|
#else // <- Add other operating systems here
|
|
105
258
|
|
|
106
259
|
// Baseline is just a timed backoff
|
|
107
260
|
|
|
108
|
-
|
|
109
|
-
|
|
261
|
+
template <std::size_t _Size, class MaybeTimeout>
|
|
262
|
+
static void __platform_wait_on_address(void const* __ptr, void const* __val, MaybeTimeout maybe_timeout_ns) {
|
|
263
|
+
std::chrono::nanoseconds timeout = std::chrono::nanoseconds(0);
|
|
264
|
+
if constexpr (!is_same_v<MaybeTimeout, NoTimeout>) {
|
|
265
|
+
timeout = std::chrono::nanoseconds(maybe_timeout_ns);
|
|
266
|
+
}
|
|
110
267
|
__libcpp_thread_poll_with_backoff(
|
|
111
|
-
[=]() -> bool { return
|
|
112
|
-
__libcpp_timed_backoff_policy()
|
|
268
|
+
[=]() -> bool { return std::memcmp(const_cast<const void*>(__ptr), __val, _Size) != 0; },
|
|
269
|
+
__libcpp_timed_backoff_policy(),
|
|
270
|
+
timeout);
|
|
113
271
|
}
|
|
114
272
|
|
|
115
|
-
|
|
273
|
+
template <std::size_t _Size>
|
|
274
|
+
static void __platform_wake_by_address(void const*, bool) {}
|
|
116
275
|
|
|
117
276
|
#endif // __linux__
|
|
118
277
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
__cxx_atomic_contention_t __contention_state;
|
|
123
|
-
__cxx_atomic_contention_t __platform_state;
|
|
124
|
-
inline constexpr __libcpp_contention_table_entry() : __contention_state(0), __platform_state(0) {}
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
static __libcpp_contention_table_entry __libcpp_contention_table[__libcpp_contention_table_size];
|
|
128
|
-
|
|
129
|
-
static hash<void const volatile*> __libcpp_contention_hasher;
|
|
130
|
-
|
|
131
|
-
static __libcpp_contention_table_entry* __libcpp_contention_state(void const volatile* p) {
|
|
132
|
-
return &__libcpp_contention_table[__libcpp_contention_hasher(p) & (__libcpp_contention_table_size - 1)];
|
|
133
|
-
}
|
|
278
|
+
// =============================
|
|
279
|
+
// Local hidden helper functions
|
|
280
|
+
// =============================
|
|
134
281
|
|
|
135
282
|
/* Given an atomic to track contention and an atomic to actually wait on, which may be
|
|
136
283
|
the same atomic, we try to detect contention to avoid spuriously calling the platform. */
|
|
137
284
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (0 != __cxx_atomic_load(
|
|
285
|
+
template <std::size_t _Size>
|
|
286
|
+
static void
|
|
287
|
+
__contention_notify(__cxx_atomic_contention_t* __waiter_count, void const* __address_to_notify, bool __notify_one) {
|
|
288
|
+
if (0 != __cxx_atomic_load(__waiter_count, memory_order_seq_cst))
|
|
142
289
|
// We only call 'wake' if we consumed a contention bit here.
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
__cxx_contention_t __old_value) {
|
|
154
|
-
__cxx_atomic_fetch_add(__contention_state, __cxx_contention_t(1), memory_order_relaxed);
|
|
155
|
-
// https://github.com/llvm/llvm-project/issues/109290
|
|
290
|
+
__platform_wake_by_address<_Size>(__address_to_notify, __notify_one);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
template <std::size_t _Size, class MaybeTimeout>
|
|
294
|
+
static void __contention_wait(__cxx_atomic_contention_t* __waiter_count,
|
|
295
|
+
void const* __address_to_wait,
|
|
296
|
+
void const* __old_value,
|
|
297
|
+
MaybeTimeout maybe_timeout_ns) {
|
|
298
|
+
__cxx_atomic_fetch_add(__waiter_count, __cxx_contention_t(1), memory_order_relaxed);
|
|
299
|
+
// https://llvm.org/PR109290
|
|
156
300
|
// There are no platform guarantees of a memory barrier in the platform wait implementation
|
|
157
301
|
__cxx_atomic_thread_fence(memory_order_seq_cst);
|
|
158
302
|
// We sleep as long as the monitored value hasn't changed.
|
|
159
|
-
|
|
160
|
-
__cxx_atomic_fetch_sub(
|
|
303
|
+
__platform_wait_on_address<_Size>(__address_to_wait, __old_value, maybe_timeout_ns);
|
|
304
|
+
__cxx_atomic_fetch_sub(__waiter_count, __cxx_contention_t(1), memory_order_release);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
static constexpr size_t __contention_table_size = (1 << 8); /* < there's no magic in this number */
|
|
308
|
+
|
|
309
|
+
static constexpr hash<void const*> __contention_hasher;
|
|
310
|
+
|
|
311
|
+
// Waiter count table for all atomics with the correct size that use itself as the wait/notify address.
|
|
312
|
+
|
|
313
|
+
struct alignas(
|
|
314
|
+
std::hardware_constructive_interference_size) /* aim to avoid false sharing */ __contention_state_native {
|
|
315
|
+
__cxx_atomic_contention_t __waiter_count;
|
|
316
|
+
constexpr __contention_state_native() : __waiter_count(0) {}
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
static __contention_state_native __contention_table_native[__contention_table_size];
|
|
320
|
+
|
|
321
|
+
static __cxx_atomic_contention_t* __get_native_waiter_count(void const* p) {
|
|
322
|
+
return &__contention_table_native[__contention_hasher(p) & (__contention_table_size - 1)].__waiter_count;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Global contention table for all atomics with the wrong size that use the global table's atomic as wait/notify
|
|
326
|
+
// address.
|
|
327
|
+
|
|
328
|
+
struct alignas(
|
|
329
|
+
std::hardware_constructive_interference_size) /* aim to avoid false sharing */ __contention_state_global {
|
|
330
|
+
__cxx_atomic_contention_t __waiter_count;
|
|
331
|
+
__cxx_atomic_contention_t __platform_state;
|
|
332
|
+
constexpr __contention_state_global() : __waiter_count(0), __platform_state(0) {}
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
static __contention_state_global __contention_table_global[__contention_table_size];
|
|
336
|
+
|
|
337
|
+
static __contention_state_global* __get_global_contention_state(void const* p) {
|
|
338
|
+
return &__contention_table_global[__contention_hasher(p) & (__contention_table_size - 1)];
|
|
161
339
|
}
|
|
162
340
|
|
|
163
341
|
/* When the incoming atomic is the wrong size for the platform wait size, need to
|
|
164
342
|
launder the value sequence through an atomic from our table. */
|
|
165
343
|
|
|
166
|
-
static void
|
|
167
|
-
auto const __entry =
|
|
344
|
+
static void __atomic_notify_global_table(void const* __location) {
|
|
345
|
+
auto const __entry = __get_global_contention_state(__location);
|
|
168
346
|
// The value sequence laundering happens on the next line below.
|
|
169
347
|
__cxx_atomic_fetch_add(&__entry->__platform_state, __cxx_contention_t(1), memory_order_seq_cst);
|
|
170
|
-
|
|
171
|
-
&__entry->
|
|
172
|
-
|
|
173
|
-
|
|
348
|
+
__contention_notify<sizeof(__cxx_atomic_contention_t)>(
|
|
349
|
+
&__entry->__waiter_count, &__entry->__platform_state, false /* when laundering, we can't handle notify_one */);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// =============================
|
|
353
|
+
// New dylib exported symbols
|
|
354
|
+
// =============================
|
|
355
|
+
|
|
356
|
+
// global
|
|
357
|
+
_LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __atomic_monitor_global(void const* __location) noexcept {
|
|
358
|
+
auto const __entry = __get_global_contention_state(__location);
|
|
359
|
+
return __cxx_atomic_load(&__entry->__platform_state, memory_order_acquire);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
_LIBCPP_EXPORTED_FROM_ABI void
|
|
363
|
+
__atomic_wait_global_table(void const* __location, __cxx_contention_t __old_value) noexcept {
|
|
364
|
+
auto const __entry = __get_global_contention_state(__location);
|
|
365
|
+
__contention_wait<sizeof(__cxx_atomic_contention_t)>(
|
|
366
|
+
&__entry->__waiter_count, &__entry->__platform_state, &__old_value, NoTimeout{});
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
_LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_global_table_with_timeout(
|
|
370
|
+
void const* __location, __cxx_contention_t __old_value, uint64_t __timeout_ns) _NOEXCEPT {
|
|
371
|
+
auto const __entry = __get_global_contention_state(__location);
|
|
372
|
+
__contention_wait<sizeof(__cxx_atomic_contention_t)>(
|
|
373
|
+
&__entry->__waiter_count, &__entry->__platform_state, &__old_value, __timeout_ns);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
_LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_one_global_table(void const* __location) noexcept {
|
|
377
|
+
__atomic_notify_global_table(__location);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
_LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_all_global_table(void const* __location) noexcept {
|
|
381
|
+
__atomic_notify_global_table(__location);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
// native
|
|
385
|
+
|
|
386
|
+
template <std::size_t _Size>
|
|
387
|
+
_LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_native(void const* __address, void const* __old_value) noexcept {
|
|
388
|
+
__contention_wait<_Size>(__get_native_waiter_count(__address), __address, __old_value, NoTimeout{});
|
|
174
389
|
}
|
|
390
|
+
|
|
391
|
+
template <std::size_t _Size>
|
|
392
|
+
_LIBCPP_EXPORTED_FROM_ABI void
|
|
393
|
+
__atomic_wait_native_with_timeout(void const* __address, void const* __old_value, uint64_t __timeout_ns) noexcept {
|
|
394
|
+
__contention_wait<_Size>(__get_native_waiter_count(__address), __address, __old_value, __timeout_ns);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
template <std::size_t _Size>
|
|
398
|
+
_LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_one_native(void const* __location) noexcept {
|
|
399
|
+
__contention_notify<_Size>(__get_native_waiter_count(__location), __location, true);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
template <std::size_t _Size>
|
|
403
|
+
_LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_all_native(void const* __location) noexcept {
|
|
404
|
+
__contention_notify<_Size>(__get_native_waiter_count(__location), __location, false);
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
// ==================================================
|
|
408
|
+
// Instantiation of the templates with supported size
|
|
409
|
+
// ==================================================
|
|
410
|
+
|
|
411
|
+
#if defined(_LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE)
|
|
412
|
+
|
|
413
|
+
# define _INSTANTIATE(_SIZE) \
|
|
414
|
+
template _LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_native<_SIZE>(void const*, void const*) noexcept; \
|
|
415
|
+
template _LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_native_with_timeout<_SIZE>( \
|
|
416
|
+
void const*, void const*, uint64_t) noexcept; \
|
|
417
|
+
template _LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_one_native<_SIZE>(void const*) noexcept; \
|
|
418
|
+
template _LIBCPP_EXPORTED_FROM_ABI void __atomic_notify_all_native<_SIZE>(void const*) noexcept;
|
|
419
|
+
|
|
420
|
+
_LIBCPP_NATIVE_PLATFORM_WAIT_SIZES(_INSTANTIATE)
|
|
421
|
+
|
|
422
|
+
# undef _INSTANTIATE
|
|
423
|
+
|
|
424
|
+
#else // _LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE
|
|
425
|
+
|
|
426
|
+
template _LIBCPP_EXPORTED_FROM_ABI void
|
|
427
|
+
__atomic_wait_native<sizeof(__cxx_contention_t)>(void const* __address, void const* __old_value) noexcept;
|
|
428
|
+
|
|
429
|
+
template _LIBCPP_EXPORTED_FROM_ABI void __atomic_wait_native_with_timeout<sizeof(__cxx_contention_t)>(
|
|
430
|
+
void const* __address, void const* __old_value, uint64_t) noexcept;
|
|
431
|
+
|
|
432
|
+
template _LIBCPP_EXPORTED_FROM_ABI void
|
|
433
|
+
__atomic_notify_one_native<sizeof(__cxx_contention_t)>(void const* __location) noexcept;
|
|
434
|
+
|
|
435
|
+
template _LIBCPP_EXPORTED_FROM_ABI void
|
|
436
|
+
__atomic_notify_all_native<sizeof(__cxx_contention_t)>(void const* __location) noexcept;
|
|
437
|
+
|
|
438
|
+
#endif // _LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE
|
|
439
|
+
|
|
440
|
+
// =============================================================
|
|
441
|
+
// Old dylib exported symbols, for backwards compatibility
|
|
442
|
+
// =============================================================
|
|
443
|
+
_LIBCPP_DIAGNOSTIC_PUSH
|
|
444
|
+
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes")
|
|
445
|
+
|
|
175
446
|
_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile* __location) noexcept {
|
|
176
|
-
|
|
447
|
+
__atomic_notify_global_table(const_cast<void const*>(__location));
|
|
177
448
|
}
|
|
449
|
+
|
|
178
450
|
_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(void const volatile* __location) noexcept {
|
|
179
|
-
|
|
451
|
+
__atomic_notify_global_table(const_cast<void const*>(__location));
|
|
180
452
|
}
|
|
453
|
+
|
|
181
454
|
_LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t __libcpp_atomic_monitor(void const volatile* __location) noexcept {
|
|
182
|
-
auto const __entry =
|
|
183
|
-
return
|
|
455
|
+
auto const __entry = __get_global_contention_state(const_cast<void const*>(__location));
|
|
456
|
+
return __cxx_atomic_load(&__entry->__platform_state, memory_order_acquire);
|
|
184
457
|
}
|
|
458
|
+
|
|
185
459
|
_LIBCPP_EXPORTED_FROM_ABI void
|
|
186
460
|
__libcpp_atomic_wait(void const volatile* __location, __cxx_contention_t __old_value) noexcept {
|
|
187
|
-
auto const __entry =
|
|
188
|
-
|
|
461
|
+
auto const __entry = __get_global_contention_state(const_cast<void const*>(__location));
|
|
462
|
+
__contention_wait<sizeof(__cxx_atomic_contention_t)>(
|
|
463
|
+
&__entry->__waiter_count, &__entry->__platform_state, &__old_value, NoTimeout{});
|
|
189
464
|
}
|
|
190
465
|
|
|
191
|
-
/* When the incoming atomic happens to be the platform wait size, we still need to use the
|
|
192
|
-
table for the contention detection, but we can use the atomic directly for the wait. */
|
|
193
|
-
|
|
194
466
|
_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(__cxx_atomic_contention_t const volatile* __location) noexcept {
|
|
195
|
-
|
|
467
|
+
auto __location_cast = const_cast<const void*>(static_cast<const volatile void*>(__location));
|
|
468
|
+
__contention_notify<sizeof(__cxx_atomic_contention_t)>(
|
|
469
|
+
__get_native_waiter_count(__location_cast), __location_cast, true);
|
|
196
470
|
}
|
|
471
|
+
|
|
197
472
|
_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_all(__cxx_atomic_contention_t const volatile* __location) noexcept {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
_LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t
|
|
202
|
-
__libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile* __location) noexcept {
|
|
203
|
-
return __libcpp_contention_monitor_for_wait(&__libcpp_contention_state(__location)->__contention_state, __location);
|
|
473
|
+
auto __location_cast = const_cast<const void*>(static_cast<const volatile void*>(__location));
|
|
474
|
+
__contention_notify<sizeof(__cxx_atomic_contention_t)>(
|
|
475
|
+
__get_native_waiter_count(__location_cast), __location_cast, false);
|
|
204
476
|
}
|
|
477
|
+
|
|
205
478
|
_LIBCPP_EXPORTED_FROM_ABI void
|
|
206
479
|
__libcpp_atomic_wait(__cxx_atomic_contention_t const volatile* __location, __cxx_contention_t __old_value) noexcept {
|
|
207
|
-
|
|
480
|
+
auto __location_cast = const_cast<const void*>(static_cast<const volatile void*>(__location));
|
|
481
|
+
__contention_wait<sizeof(__cxx_atomic_contention_t)>(
|
|
482
|
+
__get_native_waiter_count(__location_cast), __location_cast, &__old_value, NoTimeout{});
|
|
208
483
|
}
|
|
209
484
|
|
|
485
|
+
// this function is even unused in the old ABI
|
|
486
|
+
_LIBCPP_EXPORTED_FROM_ABI __cxx_contention_t
|
|
487
|
+
__libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile* __location) noexcept {
|
|
488
|
+
return __cxx_atomic_load(__location, memory_order_acquire);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
_LIBCPP_DIAGNOSTIC_POP
|
|
492
|
+
|
|
210
493
|
_LIBCPP_END_NAMESPACE_STD
|
|
494
|
+
|
|
495
|
+
_LIBCPP_POP_MACROS
|
package/libcxx/src/barrier.cpp
CHANGED
|
@@ -60,11 +60,12 @@ public:
|
|
|
60
60
|
_LIBCPP_EXPORTED_FROM_ABI __barrier_algorithm_base* __construct_barrier_algorithm_base(ptrdiff_t& __expected) {
|
|
61
61
|
return new __barrier_algorithm_base(__expected);
|
|
62
62
|
}
|
|
63
|
-
_LIBCPP_EXPORTED_FROM_ABI bool
|
|
64
|
-
|
|
63
|
+
_LIBCPP_EXPORTED_FROM_ABI bool __arrive_barrier_algorithm_base(
|
|
64
|
+
_LIBCPP_NOESCAPE __barrier_algorithm_base* __barrier, __barrier_phase_t __old_phase) noexcept {
|
|
65
65
|
return __barrier->__arrive(__old_phase);
|
|
66
66
|
}
|
|
67
|
-
_LIBCPP_EXPORTED_FROM_ABI void
|
|
67
|
+
_LIBCPP_EXPORTED_FROM_ABI void
|
|
68
|
+
__destroy_barrier_algorithm_base(_LIBCPP_NOESCAPE __barrier_algorithm_base* __barrier) noexcept {
|
|
68
69
|
delete __barrier;
|
|
69
70
|
}
|
|
70
71
|
|
package/libcxx/src/charconv.cpp
CHANGED
|
@@ -14,17 +14,20 @@
|
|
|
14
14
|
|
|
15
15
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
#if _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 15
|
|
18
18
|
|
|
19
19
|
namespace __itoa {
|
|
20
20
|
|
|
21
|
+
_LIBCPP_DIAGNOSTIC_PUSH
|
|
22
|
+
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes")
|
|
23
|
+
// These functions exist for ABI compatibility, so we don't ever want a declaration prior to the definition.
|
|
21
24
|
_LIBCPP_EXPORTED_FROM_ABI char* __u32toa(uint32_t value, char* buffer) noexcept { return __base_10_u32(buffer, value); }
|
|
22
|
-
|
|
23
25
|
_LIBCPP_EXPORTED_FROM_ABI char* __u64toa(uint64_t value, char* buffer) noexcept { return __base_10_u64(buffer, value); }
|
|
26
|
+
_LIBCPP_DIAGNOSTIC_POP
|
|
24
27
|
|
|
25
28
|
} // namespace __itoa
|
|
26
29
|
|
|
27
|
-
#endif //
|
|
30
|
+
#endif // _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 15
|
|
28
31
|
|
|
29
32
|
// The original version of floating-point to_chars was written by Microsoft and
|
|
30
33
|
// contributed with the following license.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
#include <__config>
|
|
15
15
|
#include <__thread/support.h>
|
|
16
16
|
|
|
17
|
-
#if
|
|
17
|
+
#if _LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 9 || !_LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION
|
|
18
18
|
# define NEEDS_CONDVAR_DESTRUCTOR
|
|
19
19
|
#endif
|
|
20
20
|
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
#include <__config>
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// This has technically been removed in LLVM 3.4
|
|
12
|
+
#if !defined(_LIBCPP_OBJECT_FORMAT_COFF) && !defined(_LIBCPP_OBJECT_FORMAT_XCOFF) && \
|
|
13
|
+
_LIBCPP_AVAILABILITY_MINIMUM_HEADER_VERSION < 4
|
|
12
14
|
# define _LIBCPP_ERROR_CATEGORY_DEFINE_LEGACY_INLINE_FUNCTIONS
|
|
13
15
|
#endif
|
|
14
16
|
|
package/libcxx/src/exception.cpp
CHANGED
|
@@ -9,20 +9,12 @@
|
|
|
9
9
|
#define _LIBCPP_ENABLE_CXX20_REMOVED_UNCAUGHT_EXCEPTION
|
|
10
10
|
#define _LIBCPP_DISABLE_DEPRECATION_WARNINGS
|
|
11
11
|
|
|
12
|
-
#include <
|
|
13
|
-
#include <new>
|
|
14
|
-
#include <typeinfo>
|
|
15
|
-
|
|
16
|
-
#if defined(LIBCXXRT) || defined(LIBCXX_BUILDING_LIBCXXABI)
|
|
17
|
-
# include <cxxabi.h>
|
|
18
|
-
using namespace __cxxabiv1;
|
|
19
|
-
# define HAVE_DEPENDENT_EH_ABI 1
|
|
20
|
-
#endif
|
|
12
|
+
#include <__config>
|
|
21
13
|
|
|
22
14
|
#if defined(_LIBCPP_ABI_MICROSOFT)
|
|
23
15
|
# include "support/runtime/exception_msvc.ipp"
|
|
24
16
|
# include "support/runtime/exception_pointer_msvc.ipp"
|
|
25
|
-
#elif defined(
|
|
17
|
+
#elif defined(LIBCXX_BUILDING_LIBCXXABI)
|
|
26
18
|
# include "support/runtime/exception_libcxxabi.ipp"
|
|
27
19
|
# include "support/runtime/exception_pointer_cxxabi.ipp"
|
|
28
20
|
#elif defined(LIBCXXRT)
|
|
@@ -720,7 +720,7 @@ __get_sys_info(sys_seconds __time,
|
|
|
720
720
|
// Iff the "offsets" are the same '__current.__end' is replaced with
|
|
721
721
|
// '__next.__end', which effectively merges the two objects in one object. The
|
|
722
722
|
// function returns true if a merge occurred.
|
|
723
|
-
[[nodiscard]] bool __merge_continuation(sys_info& __current, const sys_info& __next) {
|
|
723
|
+
[[nodiscard]] static bool __merge_continuation(sys_info& __current, const sys_info& __next) {
|
|
724
724
|
if (__current.end != __next.begin)
|
|
725
725
|
return false;
|
|
726
726
|
|
|
@@ -49,6 +49,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
49
49
|
|
|
50
50
|
namespace chrono {
|
|
51
51
|
|
|
52
|
+
_LIBCPP_DIAGNOSTIC_PUSH
|
|
53
|
+
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes")
|
|
52
54
|
// This function is weak so it can be overriden in the tests. The
|
|
53
55
|
// declaration is in the test header test/support/test_tzdb.h
|
|
54
56
|
_LIBCPP_WEAK string_view __libcpp_tzdb_directory() {
|
|
@@ -59,6 +61,7 @@ _LIBCPP_WEAK string_view __libcpp_tzdb_directory() {
|
|
|
59
61
|
abort();
|
|
60
62
|
#endif
|
|
61
63
|
}
|
|
64
|
+
_LIBCPP_DIAGNOSTIC_POP
|
|
62
65
|
|
|
63
66
|
//===----------------------------------------------------------------------===//
|
|
64
67
|
// Details
|
|
@@ -767,7 +770,7 @@ void __init_tzdb(tzdb& __tzdb, __tz::__rules_storage_type& __rules) {
|
|
|
767
770
|
// On Linux systems it seems /etc/timezone is deprecated and being phased out.
|
|
768
771
|
// This file is used when /etc/localtime does not exist, or when it exists but
|
|
769
772
|
// is not a symlink. For more information and links see
|
|
770
|
-
// https://
|
|
773
|
+
// https://llvm.org/PR105634
|
|
771
774
|
|
|
772
775
|
string __name = chrono::__current_zone_environment();
|
|
773
776
|
|