The list of most significant changes made over time in
Intel(R) Threading Building Blocks (Intel(R) TBB).
+Intel TBB 2019 Update 4
+TBB_INTERFACE_VERSION == 11004
+
+Changes (w.r.t. Intel TBB 2019 Update 3):
+
+- global_control class is now a fully supported feature.
+- Added deduction guides for tbb containers: concurrent_hash_map,
+ concurrent_unordered_map, concurrent_unordered_set.
+- Added tbb::scalable_memory_resource function returning
+ std::pmr::memory_resource interface to the TBB memory allocator.
+- Added tbb::cache_aligned_resource class that implements
+ std::pmr::memory_resource with cache alignment and no false sharing.
+- Added rml::pool_msize function returning the usable size of a memory
+ block allocated from a given memory pool.
+- Added default and copy constructors for tbb::counting_iterator
+ and tbb::zip_iterator.
+- Added TBB_malloc_replacement_log function to obtain the status of
+ dynamic memory allocation replacement (Windows* only).
+- CMake configuration file now supports release-only and debug-only
+ configurations (https://github.com/01org/tbb/issues/113).
+- TBBBuild CMake module takes the C++ version from CMAKE_CXX_STANDARD.
+
+Bugs fixed:
+
+- Fixed compilation for tbb::concurrent_vector when used with
+ std::pmr::polymorphic_allocator.
+
+Open-source contributions integrated:
+
+- TBB_INTERFACE_VERSION is included into TBB version in CMake
+ configuration (https://github.com/01org/tbb/pull/100)
+ by Hans Johnson.
+- Fixed detection of C++17 deduction guides for Visual C++*
+ (https://github.com/01org/tbb/pull/112) by Marian Klymov.
+
+------------------------------------------------------------------------
Intel TBB 2019 Update 3
TBB_INTERFACE_VERSION == 11003
- Added support for OpenBSD by Anthony J. Bentley.
------------------------------------------------------------------------
+Intel TBB 2018 Update 6
+TBB_INTERFACE_VERSION == 10006
+
+Changes (w.r.t. Intel TBB 2018 Update 5):
+
+Bugs fixed:
+
+- Fixed an issue with dynamic memory allocation replacement on Windows*
+ occurred for some versions of ucrtbase.dll.
+
+------------------------------------------------------------------------
Intel TBB 2018 Update 5
TBB_INTERFACE_VERSION == 10005
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Threading Building Blocks 2019 Update 3
-[![Stable release](https://img.shields.io/badge/version-2019_U3-green.svg)](https://github.com/01org/tbb/releases/tag/2019_U3)
+# Threading Building Blocks 2019 Update 4
+[![Stable release](https://img.shields.io/badge/version-2019_U4-green.svg)](https://github.com/01org/tbb/releases/tag/2019_U4)
[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE)
Threading Building Blocks (TBB) lets you easily write parallel C++ programs that take
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/usr/bin/env python
#
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@echo off
REM
-REM Copyright (c) 2005-2018 Intel Corporation
+REM Copyright (c) 2005-2019 Intel Corporation
REM
REM Licensed under the Apache License, Version 2.0 (the "License");
REM you may not use this file except in compliance with the License.
#!/bin/bash
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<HR>
<A HREF="../index.html">Up to parent directory</A>
<P></P>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel, the Intel logo and Itanium are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
<p></p>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#
include $(tbb_root)/build/macos.clang.inc
-
-CPLUS_FLAGS += -miphoneos-version-min=8.0
-LINK_FLAGS += -miphoneos-version-min=8.0
-LIB_LINK_FLAGS += -miphoneos-version-min=8.0
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
ios_version:=$(shell echo $(SDKROOT) | sed -e "s/.*[a-z,A-Z]\(.*\).sdk/\1/")
runtime:=cc$(clang_version)_ios$(ios_version)
+
+IPHONEOS_DEPLOYMENT_TARGET ?= 8.0
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
LIB_LINK_FLAGS += -L$(SDKROOT)/usr/lib/system -L$(SDKROOT)/usr/lib/
endif
+ifeq (ios,$(target))
+ CPLUS_FLAGS += -miphoneos-version-min=$(IPHONEOS_DEPLOYMENT_TARGET)
+ LINK_FLAGS += -miphoneos-version-min=$(IPHONEOS_DEPLOYMENT_TARGET)
+ LIB_LINK_FLAGS += -miphoneos-version-min=$(IPHONEOS_DEPLOYMENT_TARGET)
+else
+ CPLUS_FLAGS += -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
+ LINK_FLAGS += -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
+ LIB_LINK_FLAGS += -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
+endif
+
#------------------------------------------------------------------------------
# Setting assembler data.
#------------------------------------------------------------------------------
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
endif
# ICC 14.0 and higher support usage of libc++, clang standard library
-MACOSX_DEPLOYMENT_TARGET ?= 10.11
ifneq (,$(shell icc -dumpversion | egrep "^1[4-9]\."))
ifneq (,$(stdlib))
CPLUS_FLAGS += -stdlib=$(stdlib) -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
TEST_LAUNCHER=sh $(tbb_root)/build/test_launcher.sh $(largs)
OPENCL.LIB = -framework OpenCL
+
+MACOSX_DEPLOYMENT_TARGET ?= 10.11
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/bash
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@echo off
REM
-REM Copyright (c) 2005-2018 Intel Corporation
+REM Copyright (c) 2005-2019 Intel Corporation
REM
REM Licensed under the Apache License, Version 2.0 (the "License");
REM you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/bin/sh
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
<HR>
<A HREF="../index.html">Up to parent directory</A>
<P></P>
-Copyright © 2018 Intel Corporation. All Rights Reserved.
+Copyright © 2017-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel and the Intel logo are trademarks of Intel Corporation
or its subsidiaries in the U.S. and/or other countries.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Release Notes
-------------
* Minimum supported CMake version: ``3.0.0``.
-* Intel TBB versioning via `find_package <https://cmake.org/cmake/help/latest/command/find_package.html>`_ has restricted functionality: compatibility of update numbers (as well as interface versions) is not checked. Supported versioning: ``find_package(TBB <major>.<minor> ...)``. Intel TBB interface version can be obtained in the customer project via the ``TBB_INTERFACE_VERSION`` variable.
+* Intel TBB versioning via `find_package <https://cmake.org/cmake/help/latest/command/find_package.html>`_ has the following format: ``find_package(TBB <major>.<minor>.<interface> ...)``. Intel TBB interface version can also be obtained in the customer project via the ``TBB_INTERFACE_VERSION`` variable.
Use cases of Intel TBB integration into CMake-aware projects
------------------------------------------------------------
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#
# Usage:
# include(TBBBuild.cmake)
-# tbb_build(ROOT <tbb_root> MAKE_ARGS <arg1> [... <argN>])
+# tbb_build(TBB_ROOT <tbb_root> CONFIG_DIR <config_dir> MAKE_ARGS <arg1> [... <argN>])
# find_package(TBB <options>)
#
set(result "compiler=${compiler}" ${result})
endif()
+ if (NOT tbb_GMA_USER_DEFINED_ARGS MATCHES "stdver=" AND DEFINED CMAKE_CXX_STANDARD)
+ set(result "stdver=c++${CMAKE_CXX_STANDARD}" ${result})
+ endif()
+
if (NOT tbb_GMA_USER_DEFINED_ARGS MATCHES "tbb_build_dir=")
set(result "tbb_build_dir=${CMAKE_CURRENT_BINARY_DIR}/tbb_cmake_build" ${result})
endif()
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
execute_process(COMMAND gcc --version OUTPUT_VARIABLE _tbb_gcc_ver_output ERROR_QUIET)
string(REGEX REPLACE \".*gcc.*([0-9]+\\\\.[0-9]+)\\\\.[0-9]+.*\" \"\\\\1\" _tbb_compiler_ver \"\${_tbb_gcc_ver_output}\")
if (NOT _tbb_compiler_ver)
- message(FATAL_ERROR \"This Intel TBB package is intended to be used only environment with available 'gcc'\")
+ message(FATAL_ERROR \"This Intel TBB package is intended to be used only in environment with available 'gcc'\")
endif()
unset(_tbb_gcc_ver_output)
endif()
set(TBB_IMPLIB_RELEASE "\nIMPORTED_IMPLIB_RELEASE \"${tbb_MK_TBB_RELEASE_DIR}/\${_tbb_component}.lib\"")
set(TBB_IMPLIB_DEBUG "\nIMPORTED_IMPLIB_DEBUG \"${tbb_MK_TBB_DEBUG_DIR}/\${_tbb_component}_debug.lib\"")
else()
- # Note: multiline variable
- set(TBB_IMPLIB "
- IMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}.lib\"
- IMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}_debug.lib\"")
+ set(TBB_IMPLIB_RELEASE "\nIMPORTED_IMPLIB_RELEASE \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}.lib\"")
+ set(TBB_IMPLIB_DEBUG "\nIMPORTED_IMPLIB_DEBUG \"\${_tbb_root}/lib/\${_tbb_arch_subdir}/\${_tbb_compiler_subdir}/\${_tbb_component}_debug.lib\"")
endif()
# Note: multiline variable
string(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" _tbb_ver_major "${_tbb_stddef}")
string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _tbb_ver_minor "${_tbb_stddef}")
string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_tbb_stddef}")
- set(TBB_VERSION "${_tbb_ver_major}.${_tbb_ver_minor}")
+ set(TBB_VERSION "${_tbb_ver_major}.${_tbb_ver_minor}.${TBB_INTERFACE_VERSION}")
if (tbb_MK_CONFIG_FOR_SOURCE)
set(_tbb_config_template TBBConfigForSource.cmake.in)
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
set(_tbb_release_lib "${_tbb_lib_path}/@TBB_LIB_PREFIX@${_tbb_component}.@TBB_LIB_EXT@")
set(_tbb_debug_lib "${_tbb_lib_path}/@TBB_LIB_PREFIX@${_tbb_component}_debug.@TBB_LIB_EXT@")
- if (EXISTS "${_tbb_release_lib}" AND EXISTS "${_tbb_debug_lib}")
+ if (EXISTS "${_tbb_release_lib}" OR EXISTS "${_tbb_debug_lib}")
add_library(TBB::${_tbb_component} SHARED IMPORTED)
set_target_properties(TBB::${_tbb_component} PROPERTIES
- IMPORTED_CONFIGURATIONS "RELEASE;DEBUG"
- IMPORTED_LOCATION_RELEASE "${_tbb_release_lib}"
- IMPORTED_LOCATION_DEBUG "${_tbb_debug_lib}"
- INTERFACE_INCLUDE_DIRECTORIES "${_tbb_root}/include"@TBB_IMPLIB@@TBB_COMPILE_DEFINITIONS@)
+ INTERFACE_INCLUDE_DIRECTORIES "${_tbb_root}/include"@TBB_COMPILE_DEFINITIONS@)
+
+
+ if (EXISTS "${_tbb_release_lib}")
+ set_target_properties(TBB::${_tbb_component} PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${_tbb_release_lib}"@TBB_IMPLIB_RELEASE@)
+ set_property(TARGET TBB::${_tbb_component} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
+ endif()
+
+ if (EXISTS "${_tbb_debug_lib}")
+ set_target_properties(TBB::${_tbb_component} PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${_tbb_debug_lib}"@TBB_IMPLIB_DEBUG@)
+ set_property(TARGET TBB::${_tbb_component} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
+ endif()
# Add internal dependencies for imported targets: TBB::tbbmalloc_proxy -> TBB::tbbmalloc
if (_tbb_component STREQUAL tbbmalloc_proxy)
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
version provided with that operating system is supported
GNU Compilers (gcc) 4.1 - 7.1
GNU C Library (glibc) version 2.4 - 2.19
+ Clang* 3.8 - 7.0
Xcode* 7.0 - 9.1
Android* NDK r10e - r17b
with each other directly.
------------------------------------------------------------------------
-(C) 2018 Intel Corporation
+(C) 2019 Intel Corporation
Intel, the Intel logo, Intel Core, Intel Atom, Xeon, Intel Xeon Phi and
Pentium are trademarks of Intel Corporation in the U.S. and/or other
<hr>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<p></p>
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "sub_string_finder" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
A1F5940C0B8F1DB600073279 /* Build configuration list for PBXNativeTarget "sub_string_finder_pretty" */ = {
isa = XCConfigurationList;
A1F594100B8F1DB600073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
A1F5941F0B8F1F4E00073279 /* Build configuration list for PBXNativeTarget "sub_string_finder_extended" */ = {
isa = XCConfigurationList;
A1F594230B8F1F4E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@echo off
REM
-REM Copyright (c) 2005-2018 Intel Corporation
+REM Copyright (c) 2005-2019 Intel Corporation
REM
REM Licensed under the Apache License, Version 2.0 (the "License");
REM you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@echo off
REM
-REM Copyright (c) 2005-2018 Intel Corporation
+REM Copyright (c) 2005-2019 Intel Corporation
REM
REM Licensed under the Apache License, Version 2.0 (the "License");
REM you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>NSHumanReadableCopyright</key>
- <string>Copyright 2005-2018 Intel Corporation. All Rights Reserved.</string>
+ <string>Copyright 2005-2019 Intel Corporation. All Rights Reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "count_strings" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "shortpath" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "binpack" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "cholesky" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "1000"
+ version = "1.3">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8DD76F620486A84900D96B5E"
+ BuildableName = "Cholesky"
+ BlueprintName = "Cholesky"
+ ReferencedContainer = "container:cholesky.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug64"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8DD76F620486A84900D96B5E"
+ BuildableName = "Cholesky"
+ BlueprintName = "Cholesky"
+ ReferencedContainer = "container:cholesky.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Release64"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "YES"
+ debugServiceExtension = "internal"
+ allowLocationSimulation = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8DD76F620486A84900D96B5E"
+ BuildableName = "Cholesky"
+ BlueprintName = "Cholesky"
+ ReferencedContainer = "container:cholesky.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ <CommandLineArguments>
+ <CommandLineArgument
+ argument = "4"
+ isEnabled = "YES">
+ </CommandLineArgument>
+ <CommandLineArgument
+ argument = "2"
+ isEnabled = "YES">
+ </CommandLineArgument>
+ </CommandLineArguments>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release64"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <BuildableProductRunnable
+ runnableDebuggingMode = "0">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "8DD76F620486A84900D96B5E"
+ BuildableName = "Cholesky"
+ BlueprintName = "Cholesky"
+ ReferencedContainer = "container:cholesky.xcodeproj">
+ </BuildableReference>
+ </BuildableProductRunnable>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug64">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release64"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "dining_philosophers" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
<p>
1DEB923308733DC60010E9CD /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "fgbzip2" */ = {
isa = XCConfigurationList;
1DEB923708733DC60010E9CD /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2016-2018 Intel Corporation
+ Copyright (c) 2016-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
<p>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "som" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
<p>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "stereo" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "parallel_preorder" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "game_of_life" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel, Intel Core and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
84D01771152743200008A4E0 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tbbExample" */ = {
isa = XCConfigurationList;
84D01774152743200008A4E0 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
D3BD96841C0DD00500163D8B /* Build configuration list for PBXNativeTarget "tbbExample_ios" */ = {
isa = XCConfigurationList;
D3BD96861C0DD00500163D8B /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@echo on
REM
-REM Copyright (c) 2005-2018 Intel Corporation
+REM Copyright (c) 2005-2019 Intel Corporation
REM
REM Licensed under the Apache License, Version 2.0 (the "License");
REM you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
<p>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
84011760152D6F6C00B07E4D /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
84011797152D6F8400B07E4D /* Build configuration list for PBXNativeTarget "tachyon.tbb1d" */ = {
isa = XCConfigurationList;
84011799152D6F8400B07E4D /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
84D0174B1527431F0008A4E0 /* Build configuration list for PBXProject "tachyon" */ = {
isa = XCConfigurationList;
84D01771152743200008A4E0 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tachyon.tbb" */ = {
isa = XCConfigurationList;
84D01774152743200008A4E0 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
D3E786C31C0E3588006995F1 /* Build configuration list for PBXNativeTarget "tachyon.tbb.ios" */ = {
isa = XCConfigurationList;
D3E786C21C0E3588006995F1 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
.circ {
list-style-type:circle
}
-
+
.single {
padding: 0 0.5em;
}
-
+
/* ------------------------------------------------- */
/* Table styles */
table{
}
th{
border:1px #dddddd solid;
- padding-top:2px;
+ padding-top:2px;
padding-bottom:0px;
- padding-right:3px;
+ padding-right:3px;
padding-left:3px;
}
td{
padding-right:5px;
vertical-align:top;
}
-
+
.specs {
border-collapse:collapse;
}
padding: 0 0.2em 0.2em;
text-align: center;
}
- .specs td tr:last-child td,
+ .specs td tr:last-child td,
.specs td tr:last-child th {
padding: 0 0.2em;
}
<title>Intel® Threading Building Blocks. Convex_hull sample</title>
</head>
<body>
-
+
<div id="banner">
<img class="logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEMAAAAsCAYAAAA+aAX8AAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAALiIAAC4iAari3ZIAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVh
9Or1LzUmVVz+HJXDAAAAAElFTkSuQmCC">
<h1 class="title">Intel® Threading Building Blocks.<br>Convex_hull sample</h1>
</div>
-
+
<p>
Parallel version of convex hull algorithm (quick hull).
</p>
</p>
</div>
</div>
-
+
<div class="changes">
<div class="h3-alike">Files</div>
<input type="checkbox" checked="checked">
</dl>
</div>
</div>
-
+
<div class="changes">
<div class="h3-alike">Directories</div>
<input type="checkbox" checked="checked">
<dt>To run a short version of this example, e.g., for use with Intel® Threading Tools:
<dd>Build a <i>debug</i> version of the example
(see the <a href="../../index.html">build instructions</a>).
- <br>Run it with a small problem size and the desired number of threads, e.g., <tt>convex_hull_sample 500000 4</tt>.
+ <br>Run it with a small problem size and the desired number of threads, e.g., <tt>convex_hull_sample 4 500000</tt>.
</dl>
</div>
</div>
-
+
<br>
<a href="../index.html">Up to parent directory</a>
<hr>
<div class="show-hide">
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
- <br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>* Other names and brands may be claimed as the property of others.
+ <br>© 2019, Intel Corporation
</p>
</div>
- </div>
-
+ </div>
+
</body>
</html>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "convex_hull" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
A1F594EE0B8F4B8200073279 /* Build configuration list for PBXNativeTarget "convex_hull_bench" */ = {
isa = XCConfigurationList;
A1F594F20B8F4B8200073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "primes" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "square" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "tree_sum" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
84D01771152743200008A4E0 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
84D01772152743200008A4E0 /* Build configuration list for PBXNativeTarget "tbbExample" */ = {
isa = XCConfigurationList;
84D01774152743200008A4E0 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
D31F32331C11796D00A77D54 /* Build configuration list for PBXNativeTarget "tbbExample_ios" */ = {
isa = XCConfigurationList;
D31F32321C11796D00A77D54 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "sudoku" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
A1F593C70B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "fibonacci" */ = {
isa = XCConfigurationList;
A1F593C90B8F0E6E00073279 /* Release64 */,
);
defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Debug64;
+ defaultConfigurationName = Release64;
};
/* End XCConfigurationList section */
};
<p>
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
<br>* Other names and brands may be claimed as the property of others.
- <br>© 2018, Intel Corporation
+ <br>© 2019, Intel Corporation
</p>
</div>
</div>
<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include <new>
#include "tbb_stddef.h"
#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
- #include <utility> // std::forward
+#include <utility> // std::forward
+#endif
+
+#if __TBB_CPP17_MEMORY_RESOURCE_PRESENT
+#include <memory_resource>
#endif
namespace tbb {
template<typename U> struct rebind {
typedef cache_aligned_allocator<U> other;
};
-
cache_aligned_allocator() throw() {}
cache_aligned_allocator( const cache_aligned_allocator& ) throw() {}
template<typename U> cache_aligned_allocator(const cache_aligned_allocator<U>&) throw() {}
template<typename T, typename U>
inline bool operator!=( const cache_aligned_allocator<T>&, const cache_aligned_allocator<U>& ) {return false;}
+#if __TBB_CPP17_MEMORY_RESOURCE_PRESENT
+
+//! C++17 memory resource wrapper to ensure cache line size alignment
+class cache_aligned_resource : public std::pmr::memory_resource {
+public:
+ cache_aligned_resource() : cache_aligned_resource(std::pmr::get_default_resource()) {}
+ explicit cache_aligned_resource(std::pmr::memory_resource* upstream) : m_upstream(upstream) {}
+
+ std::pmr::memory_resource* upstream_resource() const {
+ return m_upstream;
+ }
+
+private:
+ //! We don't know what memory resource set. Use padding to gurantee alignment
+ void* do_allocate(size_t bytes, size_t alignment) override {
+ size_t cache_line_alignment = correct_alignment(alignment);
+ uintptr_t base = (uintptr_t)m_upstream->allocate(correct_size(bytes) + cache_line_alignment);
+ __TBB_ASSERT(base != 0, "Upstream resource returned NULL.");
+#if _MSC_VER && !defined(__INTEL_COMPILER)
+ // unary minus operator applied to unsigned type, result still unsigned
+ #pragma warning(push)
+ #pragma warning(disable: 4146 4706)
+#endif
+ // Round up to the next cache line (align the base address)
+ uintptr_t result = (base + cache_line_alignment) & -cache_line_alignment;
+#if _MSC_VER && !defined(__INTEL_COMPILER)
+ #pragma warning(pop)
+#endif
+ // Record where block actually starts.
+ ((uintptr_t*)result)[-1] = base;
+ return (void*)result;
+ }
+
+ void do_deallocate(void* ptr, size_t bytes, size_t alignment) override {
+ if (ptr) {
+ // Recover where block actually starts
+ uintptr_t base = ((uintptr_t*)ptr)[-1];
+ m_upstream->deallocate((void*)base, correct_size(bytes) + correct_alignment(alignment));
+ }
+ }
+
+ bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override {
+ if (this == &other) { return true; }
+#if __TBB_USE_OPTIONAL_RTTI
+ const cache_aligned_resource* other_res = dynamic_cast<const cache_aligned_resource*>(&other);
+ return other_res && (this->upstream_resource() == other_res->upstream_resource());
+#else
+ return false;
+#endif
+ }
+
+ size_t correct_alignment(size_t alignment) {
+ __TBB_ASSERT(tbb::internal::is_power_of_two(alignment), "Alignemnt is not a power of 2");
+#if __TBB_CPP17_HW_INTERFERENCE_SIZE_PRESENT
+ size_t cache_line_size = std::hardware_destructive_interference_size;
+#else
+ size_t cache_line_size = internal::NFS_GetLineSize();
+#endif
+ return alignment < cache_line_size ? cache_line_size : alignment;
+ }
+
+ size_t correct_size(size_t bytes) {
+ // To handle the case, when small size requested. There could be not
+ // enough space to store the original pointer.
+ return bytes < sizeof(uintptr_t) ? sizeof(uintptr_t) : bytes;
+ }
+
+ std::pmr::memory_resource* m_upstream;
+};
+
+#endif /* __TBB_CPP17_MEMORY_RESOURCE_PRESENT */
+
} // namespace tbb
#endif /* __TBB_cache_aligned_allocator_H */
+
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include "tbb_exception.h"
#include "tbb_profiling.h"
#include "internal/_tbb_hash_compare_impl.h"
+#include "internal/_template_helpers.h"
+#include "internal/_allocator_traits.h"
#if __TBB_INITIALIZER_LISTS_PRESENT
#include <initializer_list>
#endif
namespace interface5 {
- template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<Key, T> > >
+ template<typename Key, typename T, typename HashCompare = tbb_hash_compare<Key>, typename A = tbb_allocator<std::pair<const Key, T> > >
class concurrent_hash_map;
//! @cond INTERNAL
protected:
friend class const_accessor;
struct node;
- typedef typename Allocator::template rebind<node>::other node_allocator_type;
+ typedef typename tbb::internal::allocator_rebind<Allocator, node>::type node_allocator_type;
node_allocator_type my_allocator;
HashCompare my_hash_compare;
#if __TBB_CPP11_RVALUE_REF_PRESENT
//! Move Assignment
concurrent_hash_map& operator=( concurrent_hash_map &&table ) {
- if(this != &table){
+ if(this != &table) {
typedef typename tbb::internal::allocator_traits<allocator_type>::propagate_on_container_move_assignment pocma_t;
if(pocma_t::value || this->my_allocator == table.my_allocator) {
concurrent_hash_map trash (std::move(*this));
}
};
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+namespace internal {
+using namespace tbb::internal;
+
+template<template<typename...> typename Map, typename Key, typename T, typename... Args>
+using hash_map_t = Map<
+ Key, T,
+ std::conditional_t< (sizeof...(Args)>0) && !is_allocator_v< pack_element_t<0, Args...> >,
+ pack_element_t<0, Args...>, tbb_hash_compare<Key> >,
+ std::conditional_t< (sizeof...(Args)>0) && is_allocator_v< pack_element_t<sizeof...(Args)-1, Args...> >,
+ pack_element_t<sizeof...(Args)-1, Args...>, tbb_allocator<std::pair<const Key, T> > >
+>;
+}
+
+// Deduction guide for the constructor from two iterators and hash_compare/ allocator
+template<typename I, typename... Args>
+concurrent_hash_map(I, I, Args...)
+-> internal::hash_map_t<concurrent_hash_map, internal::iterator_key_t<I>,internal::iterator_mapped_t<I>, Args...>;
+
+// Deduction guide for the constructor from an initializer_list and hash_compare/ allocator
+// Deduction guide for an initializer_list, hash_compare and allocator is implicit
+template<typename Key, typename T, typename CompareOrAllocator>
+concurrent_hash_map(std::initializer_list<std::pair<const Key, T>>, CompareOrAllocator)
+-> internal::hash_map_t<concurrent_hash_map, Key, T, CompareOrAllocator>;
+
+#endif /* __TBB_CPP17_DEDUCTION_GUIDES_PRESENT */
+
template<typename Key, typename T, typename HashCompare, typename A>
bool concurrent_hash_map<Key,T,HashCompare,A>::lookup( bool op_insert, const Key &key, const T *t, const_accessor *result, bool write, node* (*allocate_node)(node_allocator_type& , const Key&, const T*), node *tmp_n ) {
__TBB_ASSERT( !result || !result->my_node, NULL );
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#define __TBB_concurrent_queue_H
#include "internal/_concurrent_queue_impl.h"
+#include "internal/_allocator_traits.h"
namespace tbb {
template<typename Container, typename Value> friend class internal::concurrent_queue_iterator;
//! Allocator type
- typedef typename A::template rebind<char>::other page_allocator_type;
+ typedef typename tbb::internal::allocator_rebind<A, char>::type page_allocator_type;
page_allocator_type my_allocator;
//! Allocates a block of size n (bytes)
template<typename T, class A = cache_aligned_allocator<T> >
class concurrent_bounded_queue: public internal::concurrent_queue_base_v8 {
template<typename Container, typename Value> friend class internal::concurrent_queue_iterator;
+ typedef typename tbb::internal::allocator_rebind<A, char>::type page_allocator_type;
//! Allocator type
- typedef typename A::template rebind<char>::other page_allocator_type;
page_allocator_type my_allocator;
typedef typename concurrent_queue_base_v3::padded_page<T> padded_page;
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#ifndef __TBB_concurrent_unordered_map_H
#define __TBB_concurrent_unordered_map_H
+#include "internal/_template_helpers.h"
#include "internal/_concurrent_unordered_impl.h"
namespace tbb
typedef std::pair<const Key, T> value_type;
typedef Key key_type;
typedef Hash_compare hash_compare;
- typedef typename Allocator::template rebind<value_type>::other allocator_type;
+ typedef typename tbb::internal::allocator_rebind<Allocator, value_type>::type allocator_type;
+
enum { allow_multimapping = Allow_multimapping };
concurrent_unordered_map_traits() : my_hash_compare() {}
}
};
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+
+namespace internal {
+using namespace tbb::internal;
+
+template<template<typename...> typename Map, typename Key, typename Element, typename... Args>
+using cu_map_t = Map<
+ Key, Element,
+ std::conditional_t< (sizeof...(Args)>0) && !is_allocator_v< pack_element_t<0, Args...> >,
+ pack_element_t<0, Args...>, tbb_hash<Key> >,
+ std::conditional_t< (sizeof...(Args)>1) && !is_allocator_v< pack_element_t<1, Args...> >,
+ pack_element_t<1, Args...>, std::equal_to<Key> >,
+ std::conditional_t< (sizeof...(Args)>0) && is_allocator_v< pack_element_t<sizeof...(Args)-1, Args...> >,
+ pack_element_t<sizeof...(Args)-1, Args...>, tbb_allocator<std::pair<const Key, Element> > >
+>;
+}
+
+// Deduction guide for the constructor from two iterators
+template<typename I>
+concurrent_unordered_map (I, I)
+-> internal::cu_map_t<concurrent_unordered_map, internal::iterator_key_t<I>, internal::iterator_mapped_t<I>>;
+
+// Deduction guide for the constructor from two iterators and hasher/equality/allocator
+template<typename I, typename... Args>
+concurrent_unordered_map(I, I, size_t, Args...)
+-> internal::cu_map_t<concurrent_unordered_map, internal::iterator_key_t<I>, internal::iterator_mapped_t<I>, Args...>;
+
+// Deduction guide for the constructor from an initializer_list
+template<typename Key, typename Element>
+concurrent_unordered_map(std::initializer_list<std::pair<const Key, Element>>)
+-> internal::cu_map_t<concurrent_unordered_map, Key, Element>;
+
+// Deduction guide for the constructor from an initializer_list and hasher/equality/allocator
+template<typename Key, typename Element, typename... Args>
+concurrent_unordered_map(std::initializer_list<std::pair<const Key, Element>>, size_t, Args...)
+-> internal::cu_map_t<concurrent_unordered_map, Key, Element, Args...>;
+
+#endif /* __TBB_CPP17_DEDUCTION_GUIDES_PRESENT */
+
template < typename Key, typename T, typename Hasher = tbb::tbb_hash<Key>, typename Key_equality = std::equal_to<Key>,
typename Allocator = tbb::tbb_allocator<std::pair<const Key, T> > >
class concurrent_unordered_multimap :
: base_type(table, a)
{}
};
+
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+
+// Deduction guide for the constructor from two iterators
+template<typename I>
+concurrent_unordered_multimap (I, I)
+-> internal::cu_map_t<concurrent_unordered_multimap, internal::iterator_key_t<I>, internal::iterator_mapped_t<I>>;
+
+// Deduction guide for the constructor from two iterators and hasher/equality/allocator
+template<typename I, typename... Args>
+concurrent_unordered_multimap(I, I, size_t, Args...)
+-> internal::cu_map_t<concurrent_unordered_multimap, internal::iterator_key_t<I>, internal::iterator_mapped_t<I>, Args...>;
+
+// Deduction guide for the constructor from an initializer_list
+template<typename Key, typename Element>
+concurrent_unordered_multimap(std::initializer_list<std::pair<const Key, Element>>)
+-> internal::cu_map_t<concurrent_unordered_multimap, Key, Element>;
+
+// Deduction guide for the constructor from an initializer_list and hasher/equality/allocator
+template<typename Key, typename Element, typename... Args>
+concurrent_unordered_multimap(std::initializer_list<std::pair<const Key, Element>>, size_t, Args...)
+-> internal::cu_map_t<concurrent_unordered_multimap, Key, Element, Args...>;
+
+#endif /* __TBB_CPP17_DEDUCTION_GUIDES_PRESENT */
} // namespace interface5
using interface5::concurrent_unordered_map;
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#ifndef __TBB_concurrent_unordered_set_H
#define __TBB_concurrent_unordered_set_H
+#include "internal/_template_helpers.h"
#include "internal/_concurrent_unordered_impl.h"
namespace tbb
typedef Key value_type;
typedef Key key_type;
typedef Hash_compare hash_compare;
- typedef typename Allocator::template rebind<value_type>::other allocator_type;
+ typedef typename tbb::internal::allocator_rebind<Allocator, value_type>::type allocator_type;
+
enum { allow_multimapping = Allow_multimapping };
concurrent_unordered_set_traits() : my_hash_compare() {}
};
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+
+namespace internal {
+using namespace tbb::internal;
+
+template <template<typename...> typename Set, typename T, typename... Args>
+using cu_set_t = Set <
+ T,
+ std::conditional_t< (sizeof...(Args)>0) && !is_allocator_v< pack_element_t<0, Args...> >,
+ pack_element_t<0, Args...>, tbb_hash<T> >,
+ std::conditional_t< (sizeof...(Args)>1) && !is_allocator_v< pack_element_t<1, Args...> >,
+ pack_element_t<1, Args...>, std::equal_to<T> >,
+ std::conditional_t< (sizeof...(Args)>0) && is_allocator_v< pack_element_t<sizeof...(Args)-1, Args...> >,
+ pack_element_t<sizeof...(Args)-1, Args...>, tbb_allocator<T> >
+>;
+}
+
+// Deduction guide for the constructor from two iterators
+template<typename I>
+concurrent_unordered_set(I, I)
+-> internal::cu_set_t<concurrent_unordered_set, internal::iterator_value_t<I>>;
+
+// Deduction guide for the constructor from two iterators and hasher/equality/allocator
+template<typename I, typename... Args>
+concurrent_unordered_set(I, I, size_t, Args...)
+-> internal::cu_set_t<concurrent_unordered_set, internal::iterator_value_t<I>, Args...>;
+
+// Deduction guide for the constructor from an initializer_list
+template<typename T>
+concurrent_unordered_set(std::initializer_list<T>)
+-> internal::cu_set_t<concurrent_unordered_set, T>;
+
+// Deduction guide for the constructor from an initializer_list and hasher/equality/allocator
+template<typename T, typename... Args>
+concurrent_unordered_set(std::initializer_list<T>, size_t, Args...)
+-> internal::cu_set_t<concurrent_unordered_set, T, Args...>;
+
+#endif /*__TBB_CPP17_DEDUCTION_GUIDES_PRESENT */
+
template <typename Key, typename Hasher = tbb::tbb_hash<Key>, typename Key_equality = std::equal_to<Key>,
typename Allocator = tbb::tbb_allocator<Key> >
class concurrent_unordered_multiset :
: base_type(table, a)
{}
};
+
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+
+// Deduction guide for the constructor from two iterators
+template<typename I>
+concurrent_unordered_multiset(I, I)
+-> internal::cu_set_t<concurrent_unordered_multiset, internal::iterator_value_t<I>>;
+
+// Deduction guide for the constructor from two iterators and hasher/equality/allocator
+template<typename I, typename... Args>
+concurrent_unordered_multiset(I, I, size_t, Args...)
+-> internal::cu_set_t<concurrent_unordered_multiset, internal::iterator_value_t<I>, Args...>;
+
+// Deduction guide for the constructor from an initializer_list
+template<typename T>
+concurrent_unordered_multiset(std::initializer_list<T>)
+-> internal::cu_set_t<concurrent_unordered_multiset, T>;
+
+// Deduction guide for the constructor from an initializer_list and hasher/equality/allocator
+template<typename T, typename... Args>
+concurrent_unordered_multiset(std::initializer_list<T>, size_t, Args...)
+-> internal::cu_set_t<concurrent_unordered_multiset, T, Args...>;
+
+#endif /* __TBB_CPP17_DEDUCTION_GUIDES_PRESENT */
} // namespace interface5
using interface5::concurrent_unordered_set;
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include <algorithm>
#include <iterator>
+#include "internal/_allocator_traits.h"
+
#if _MSC_VER==1500 && !__INTEL_COMPILER
// VS2008/VC9 seems to have an issue; limits pull in math.h
#pragma warning( push )
template<typename T, class A>
class allocator_base {
public:
- typedef typename A::template
- rebind<T>::other allocator_type;
+ typedef typename tbb::internal::allocator_rebind<A, T>::type allocator_type;
allocator_type my_allocator;
-
allocator_base(const allocator_type &a = allocator_type() ) : my_allocator(a) {}
-
};
} // namespace internal
if(pocma_t::value || this->my_allocator == other.my_allocator) {
concurrent_vector trash (std::move(*this));
internal_swap(other);
- if (pocma_t::value) {
- this->my_allocator = std::move(other.my_allocator);
- }
+ tbb::internal::allocator_move_assignment(this->my_allocator, other.my_allocator, pocma_t());
} else {
internal_assign(other, sizeof(T), &destroy_array, &move_assign_array, &move_array);
}
//! swap two instances
void swap(concurrent_vector &vector) {
- using std::swap;
- if( this != &vector ) {
+ typedef typename tbb::internal::allocator_traits<A>::propagate_on_container_swap pocs_t;
+ if( this != &vector && (this->my_allocator == vector.my_allocator || pocs_t::value) ) {
concurrent_vector_base_v3::internal_swap(static_cast<concurrent_vector_base_v3&>(vector));
- swap(this->my_allocator, vector.my_allocator);
+ tbb::internal::allocator_swap(this->my_allocator, vector.my_allocator, pocs_t());
}
}
internal_resize( n, sizeof(T), max_size(), static_cast<const void*>(p), &destroy_array, p? &initialize_array_by : &initialize_array );
}
- //! helper class
+ //! True/false function override helper
+ /* Functions declarations:
+ * void foo(is_integer_tag<true>*);
+ * void foo(is_integer_tag<false>*);
+ * Usage example:
+ * foo(static_cast<is_integer_tag<std::numeric_limits<T>::is_integer>*>(0));
+ */
template<bool B> class is_integer_tag;
//! assign integer items by copying when arguments are treated as iterators. See C++ Standard 2003 23.1.1p9
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#ifndef __TBB_global_control_H
#define __TBB_global_control_H
-#if !TBB_PREVIEW_GLOBAL_CONTROL && !__TBB_BUILD
-#error Set TBB_PREVIEW_GLOBAL_CONTROL before including global_control.h
-#endif
-
#include "tbb_stddef.h"
namespace tbb {
<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
--- /dev/null
+/*
+ Copyright (c) 2019 Intel Corporation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+*/
+
+#ifndef __TBB_allocator_traits_H
+#define __TBB_allocator_traits_H
+
+#include "../tbb_stddef.h" // true/false_type
+
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+#include <memory> // for allocator_traits
+#endif
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+#include <utility> // for std::move
+#endif
+
+// For allocator_swap helper
+#include __TBB_STD_SWAP_HEADER
+
+namespace tbb {
+namespace internal {
+
+//! Internal implementation of allocator traits, propagate_on_* use internal boolean_constant.
+//! In order to avoid code duplication, check what implementation of boolean constant will likely be passed.
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+typedef std::true_type traits_true_type;
+typedef std::false_type traits_false_type;
+#else
+typedef tbb::internal::true_type traits_true_type;
+typedef tbb::internal::false_type traits_false_type;
+#endif
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+//! Move assignment implementation for allocator if propagate_on_container_move_assignment == true_type.
+//! Noop if pocma == false_type.
+template <typename MyAlloc, typename OtherAlloc>
+inline void allocator_move_assignment(MyAlloc& my_allocator, OtherAlloc& other_allocator, traits_true_type) {
+ my_allocator = std::move(other_allocator);
+}
+template <typename MyAlloc, typename OtherAlloc>
+inline void allocator_move_assignment(MyAlloc&, OtherAlloc&, traits_false_type) { /* NO MOVE */ }
+#endif
+
+//! Swap implementation for allocators if propagate_on_container_swap == true_type.
+//! Noop if pocs == false_type.
+template <typename MyAlloc, typename OtherAlloc>
+inline void allocator_swap(MyAlloc& my_allocator, OtherAlloc& other_allocator, traits_true_type) {
+ using std::swap;
+ swap(my_allocator, other_allocator);
+}
+template <typename MyAlloc, typename OtherAlloc>
+inline void allocator_swap(MyAlloc&, OtherAlloc&, traits_false_type) { /* NO SWAP */ }
+
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+using std::allocator_traits;
+#else
+//! Internal allocator_traits implementation, which relies on C++03 standard
+//! [20.1.5] allocator requirements
+template<typename Alloc>
+struct allocator_traits {
+ // C++03 allocator doesn't have to be assignable or swappable, therefore
+ // define these traits as false_type to do not require additional operations
+ // that are not supposed to be in.
+ typedef tbb::internal::false_type propagate_on_container_move_assignment;
+ typedef tbb::internal::false_type propagate_on_container_copy_assignment;
+ typedef tbb::internal::false_type propagate_on_container_swap;
+
+ typedef Alloc allocator_type;
+ typedef typename allocator_type::value_type value_type;
+
+ typedef typename allocator_type::pointer pointer;
+ typedef typename allocator_type::const_pointer const_pointer;
+ typedef typename allocator_type::difference_type difference_type;
+ typedef typename allocator_type::size_type size_type;
+
+ template <typename U> struct rebind_alloc {
+ typedef typename Alloc::template rebind<U>::other other;
+ };
+};
+#endif // __TBB_ALLOCATOR_TRAITS_PRESENT
+
+//! C++03/C++11 compliant rebind helper, even if no std::allocator_traits available
+//! or rebind is not defined for allocator type
+template<typename Alloc, typename T>
+struct allocator_rebind {
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+ typedef typename allocator_traits<Alloc>::template rebind_alloc<T> type;
+#else
+ typedef typename allocator_traits<Alloc>::template rebind_alloc<T>::other type;
+#endif
+};
+
+}} // namespace tbb::internal
+
+#endif // __TBB_allocator_traits_H
+
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include <initializer_list>
#endif
+#include "_allocator_traits.h"
#include "_tbb_hash_compare_impl.h"
namespace tbb {
{
public:
typedef split_ordered_list<T, Allocator> self_type;
- typedef typename Allocator::template rebind<T>::other allocator_type;
+
+ typedef typename tbb::internal::allocator_rebind<Allocator, T>::type allocator_type;
+
struct node;
typedef node *nodeptr_t;
- typedef typename allocator_type::size_type size_type;
- typedef typename allocator_type::difference_type difference_type;
- typedef typename allocator_type::pointer pointer;
- typedef typename allocator_type::const_pointer const_pointer;
- typedef typename allocator_type::reference reference;
- typedef typename allocator_type::const_reference const_reference;
- typedef typename allocator_type::value_type value_type;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::value_type value_type;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::size_type size_type;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::difference_type difference_type;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::pointer pointer;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::const_pointer const_pointer;
+ // No support for reference/const_reference in allocator traits
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
typedef solist_iterator<self_type, const value_type> const_iterator;
typedef solist_iterator<self_type, value_type> iterator;
#endif
}
- typename allocator_type::template rebind<node>::other my_node_allocator; // allocator object for nodes
+ typename tbb::internal::allocator_rebind<allocator_type, node>::type my_node_allocator; // allocator object for nodes
size_type my_element_count; // Total item count, not counting dummy nodes
nodeptr_t my_head; // pointer to head node
};
typedef typename Traits::allocator_type allocator_type;
typedef typename hash_compare::hasher hasher;
typedef typename hash_compare::key_equal key_equal;
- typedef typename allocator_type::pointer pointer;
- typedef typename allocator_type::const_pointer const_pointer;
- typedef typename allocator_type::reference reference;
- typedef typename allocator_type::const_reference const_reference;
- typedef typename allocator_type::size_type size_type;
- typedef typename allocator_type::difference_type difference_type;
+
+ typedef typename tbb::internal::allocator_traits<allocator_type>::size_type size_type;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::difference_type difference_type;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::pointer pointer;
+ typedef typename tbb::internal::allocator_traits<allocator_type>::const_pointer const_pointer;
+ // No support for reference/const_reference in allocator
+ typedef typename allocator_type::value_type& reference;
+ typedef const typename allocator_type::value_type& const_reference;
+
typedef split_ordered_list<value_type, typename Traits::allocator_type> solist_t;
typedef typename solist_t::nodeptr_t nodeptr_t;
// Iterators that walk the entire split-order list, including dummy nodes
// Shared variables
atomic<size_type> my_number_of_buckets; // Current table size
solist_t my_solist; // List where all the elements are kept
- typename allocator_type::template rebind<raw_iterator>::other my_allocator; // Allocator object for segments
+ typename tbb::internal::allocator_rebind<allocator_type, raw_iterator>::type my_allocator; // Allocator object for segments
float my_maximum_bucket_size; // Maximum size of the bucket
atomic<raw_iterator*> my_buckets[pointers_per_table]; // The segment table
};
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
: continue_receiver(
__TBB_FLOW_GRAPH_PRIORITY_ARG1(number_of_predecessors, tbb::flow::internal::no_priority)
)
+ // Since decrementer does not make use of possibly unconstructed owner inside its
+ // constructor, my_node can be directly initialized with 'this' pointer passed from the
+ // owner, hence making method 'set_owner' needless.
, my_node(NULL)
{}
void set_owner( T *node ) { my_node = node; }
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include <utility>
#include <cstddef>
+#include "../tbb_config.h"
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_TEMPLATE_ALIASES_PRESENT
+#include <type_traits>
+#endif
+#if __TBB_CPP11_PRESENT
+#include <iterator>
+#include <memory> // allocator_traits
+#endif
namespace tbb { namespace internal {
template<typename...> struct void_t { typedef void type; };
#endif
+#if __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_TEMPLATE_ALIASES_PRESENT
+
+// Generic SFINAE helper for expression checks, based on the idea demonstrated in ISO C++ paper n4502
+template<typename T, typename, template<typename> class... Checks>
+struct supports_impl { typedef std::false_type type; };
+template<typename T, template<typename> class... Checks>
+struct supports_impl<T, typename void_t<Checks<T>...>::type, Checks...> { typedef std::true_type type; };
+
+template<typename T, template<typename> class... Checks>
+using supports = typename supports_impl<T, void, Checks...>::type;
+
+#endif /* __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT && __TBB_CPP11_TEMPLATE_ALIASES_PRESENT */
+
#if __TBB_CPP11_RVALUE_REF_PRESENT && __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT
//! Allows to store a function parameter pack as a variable and later pass it to another function
#endif /* __TBB_CPP14_INTEGER_SEQUENCE_PRESENT */
+#if __TBB_CPP11_PRESENT
+
+template< typename Iter >
+using iterator_value_t = typename std::iterator_traits<Iter>::value_type;
+
+template< typename Iter >
+using iterator_key_t = typename std::remove_const<typename iterator_value_t<Iter>::first_type>::type;
+
+template< typename Iter >
+using iterator_mapped_t = typename iterator_value_t<Iter>::second_type;
+
+template< typename A > using value_type = typename A::value_type;
+template< typename A > using alloc_ptr_t = typename std::allocator_traits<A>::pointer;
+template< typename A > using has_allocate = decltype(std::declval<alloc_ptr_t<A>&>() = std::declval<A>().allocate(0));
+template< typename A > using has_deallocate = decltype(std::declval<A>().deallocate(std::declval<alloc_ptr_t<A>>(), 0));
+
+// value_type should be checked first because it can be used in other checks (via allocator_traits)
+template< typename T >
+using is_allocator = supports<T, value_type, has_allocate, has_deallocate>;
+
+#if __TBB_CPP14_VARIABLE_TEMPLATES_PRESENT
+
+template< typename T >
+static constexpr bool is_allocator_v = is_allocator<T>::value;
+
+#endif /*__TBB_CPP14_VARIABLE_TEMPLATES */
+
+template< std::size_t N, typename... Args >
+struct pack_element {
+ using type = void;
+};
+
+template< std::size_t N, typename T, typename... Args >
+struct pack_element<N, T, Args...> {
+ using type = typename pack_element<N - 1, Args...>::type;
+};
+
+template< typename T, typename... Args >
+struct pack_element<0, T, Args...> {
+ using type = T;
+};
+
+template< std::size_t N, typename... Args >
+using pack_element_t = typename pack_element<N, Args...>::type;
+
+#endif /* __TBB_CPP11_PRESENT */
+
} } // namespace internal, namespace tbb
#endif /* __TBB_template_helpers_H */
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
template <typename IntType>
class counting_iterator {
+ __TBB_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer, "Cannot instantiate counting_iterator with a non-integer type");
public:
typedef typename std::make_signed<IntType>::type difference_type;
typedef IntType value_type;
typedef const IntType& reference;
typedef std::random_access_iterator_tag iterator_category;
- explicit counting_iterator(IntType init): my_counter(init) { __TBB_STATIC_ASSERT(std::numeric_limits<IntType>::is_integer, "Integer required."); }
+ counting_iterator(): my_counter() {}
+ explicit counting_iterator(IntType init): my_counter(init) {}
reference operator*() const { return my_counter; }
value_type operator[](difference_type i) const { return *(*this + i); }
template <typename... Types>
class zip_iterator {
+ __TBB_STATIC_ASSERT(sizeof...(Types), "Cannot instantiate zip_iterator with empty template parameter pack");
static const std::size_t num_types = sizeof...(Types);
typedef typename std::tuple<Types...> it_types;
public:
typedef std::tuple<typename std::iterator_traits<Types>::pointer...> pointer;
typedef std::random_access_iterator_tag iterator_category;
+ zip_iterator(): my_it() {}
explicit zip_iterator(Types... args): my_it(std::make_tuple(args...)) {}
+ zip_iterator(const zip_iterator& input) : my_it(input.my_it) {}
+ zip_iterator& operator=(const zip_iterator& input) {
+ my_it = input.my_it;
+ return *this;
+ }
reference operator*() const {
return tbb::internal::make_references<reference>()(my_it, tbb::internal::make_index_sequence<num_types>());
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
bool pool_reset(MemoryPool* memPool);
bool pool_free(MemoryPool *memPool, void *object);
MemoryPool *pool_identify(void *object);
+size_t pool_msize(MemoryPool *memPool, void *object);
} // namespace rml
#endif
#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
- #include <utility> // std::forward
+#include <utility> // std::forward
+#endif
+
+#if __TBB_CPP17_MEMORY_RESOURCE_PRESENT
+#include <memory_resource>
#endif
namespace tbb {
template<typename T, typename U>
inline bool operator!=( const scalable_allocator<T>&, const scalable_allocator<U>& ) {return false;}
+#if __TBB_CPP17_MEMORY_RESOURCE_PRESENT
+
+namespace internal {
+
+//! C++17 memory resource implementation for scalable allocator
+//! ISO C++ Section 23.12.2
+class scalable_resource_impl : public std::pmr::memory_resource {
+private:
+ void* do_allocate(size_t bytes, size_t alignment) override {
+ void* ptr = scalable_aligned_malloc( bytes, alignment );
+ if (!ptr) {
+ throw_exception(std::bad_alloc());
+ }
+ return ptr;
+ }
+
+ void do_deallocate(void* ptr, size_t /*bytes*/, size_t /*alignment*/) override {
+ scalable_free(ptr);
+ }
+
+ //! Memory allocated by one instance of scalable_resource_impl could be deallocated by any
+ //! other instance of this class
+ bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override {
+ return this == &other ||
+#if __TBB_USE_OPTIONAL_RTTI
+ dynamic_cast<const scalable_resource_impl*>(&other) != NULL;
+#else
+ false;
+#endif
+ }
+};
+
+} // namespace internal
+
+//! Global scalable allocator memory resource provider
+inline std::pmr::memory_resource* scalable_memory_resource() noexcept {
+ static tbb::internal::scalable_resource_impl scalable_res;
+ return &scalable_res;
+}
+
+#endif /* __TBB_CPP17_MEMORY_RESOURCE_PRESENT */
+
} // namespace tbb
#if _MSC_VER
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
task* self;
task& parent;
public:
- explicit allocate_additional_child_of_proxy( task& parent_ ) : self(NULL), parent(parent_) {}
+ explicit allocate_additional_child_of_proxy( task& parent_ ) : self(NULL), parent(parent_) {
+ suppress_unused_warning( self );
+ }
task& __TBB_EXPORTED_METHOD allocate( size_t size ) const;
void __TBB_EXPORTED_METHOD free( task& ) const;
};
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include "critical_section.h"
#include "enumerable_thread_specific.h"
#include "flow_graph.h"
-#if TBB_PREVIEW_GLOBAL_CONTROL
#include "global_control.h"
-#endif
#include "iterators.h"
#include "mutex.h"
#include "null_mutex.h"
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include <cstddef>
#endif
-// note that when ICC or Clang is in use, __TBB_GCC_VERSION might not fully match
+// Note that when ICC or Clang is in use, __TBB_GCC_VERSION might not fully match
// the actual GCC version on the system.
#define __TBB_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
-// Since GNU libstdc++ does not have a convenient macro for its version,
-// we rely on the version of GCC or the user-specified macro below.
-// The format of TBB_USE_GLIBCXX_VERSION should match the __TBB_GCC_VERSION above,
-// e.g. it should be set to 40902 for libstdc++ coming with GCC 4.9.2.
+// Prior to GCC 7, GNU libstdc++ did not have a convenient version macro.
+// Therefore we use different ways to detect its version.
#ifdef TBB_USE_GLIBCXX_VERSION
+// The version is explicitly specified in our public TBB_USE_GLIBCXX_VERSION macro.
+// Its format should match the __TBB_GCC_VERSION above, e.g. 70301 for libstdc++ coming with GCC 7.3.1.
#define __TBB_GLIBCXX_VERSION TBB_USE_GLIBCXX_VERSION
+#elif _GLIBCXX_RELEASE && _GLIBCXX_RELEASE != __GNUC__
+// Reported versions of GCC and libstdc++ do not match; trust the latter
+#define __TBB_GLIBCXX_VERSION (_GLIBCXX_RELEASE*10000)
#elif __GLIBCPP__ || __GLIBCXX__
+// The version macro is not defined or matches the GCC version; use __TBB_GCC_VERSION
#define __TBB_GLIBCXX_VERSION __TBB_GCC_VERSION
-//TODO: analyze __GLIBCXX__ instead of __TBB_GCC_VERSION ?
#endif
#if __clang__
#define __TBB_ALIGNAS_PRESENT (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1500)
#define __TBB_CPP11_TEMPLATE_ALIASES_PRESENT (__INTEL_CXX11_MODE__ && __INTEL_COMPILER >= 1210)
#define __TBB_CPP14_INTEGER_SEQUENCE_PRESENT (__cplusplus >= 201402L)
- #define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT __INTEL_COMPILER > 1900
+ #define __TBB_CPP14_VARIABLE_TEMPLATES_PRESENT (__cplusplus >= 201402L)
+ #define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT (__INTEL_COMPILER > 1900)
#define __TBB_CPP17_INVOKE_RESULT_PRESENT (__cplusplus >= 201703L)
#elif __clang__
/** TODO: these options need to be rechecked **/
#define __TBB_ALIGNAS_PRESENT __has_feature(cxx_alignas)
#define __TBB_CPP11_TEMPLATE_ALIASES_PRESENT __has_feature(cxx_alias_templates)
#define __TBB_CPP14_INTEGER_SEQUENCE_PRESENT (__cplusplus >= 201402L)
+ #define __TBB_CPP14_VARIABLE_TEMPLATES_PRESENT (__has_feature(cxx_variable_templates))
#define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT (__has_feature(__cpp_deduction_guides))
#define __TBB_CPP17_INVOKE_RESULT_PRESENT (__has_feature(__cpp_lib_is_invocable))
#elif __GNUC__
#define __TBB_ALIGNAS_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40800)
#define __TBB_CPP11_TEMPLATE_ALIASES_PRESENT (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40700)
#define __TBB_CPP14_INTEGER_SEQUENCE_PRESENT (__cplusplus >= 201402L && __TBB_GCC_VERSION >= 50000)
- #define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT (__cpp_deduction_guides >= 201606)
+ #define __TBB_CPP14_VARIABLE_TEMPLATES_PRESENT (__cplusplus >= 201402L && __TBB_GCC_VERSION >= 50000)
+ #define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT (__cpp_deduction_guides >= 201606L)
#define __TBB_CPP17_INVOKE_RESULT_PRESENT (__cplusplus >= 201703L && __TBB_GCC_VERSION >= 70000)
#elif _MSC_VER
// These definitions are also used with Intel C++ Compiler in "default" mode (__INTEL_CXX11_MODE__ == 0);
#define __TBB_ALIGNAS_PRESENT (_MSC_VER >= 1900)
#define __TBB_CPP11_TEMPLATE_ALIASES_PRESENT (_MSC_VER >= 1800)
#define __TBB_CPP14_INTEGER_SEQUENCE_PRESENT (_MSC_VER >= 1900)
- #define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT (_MSVC_LANG >= 201703L)
- #define __TBB_CPP17_INVOKE_RESULT_PRESENT (__TBB_MSVC_CPP_VER >= 201703L && _MSC_VER >= 1914)
+ /* Variable templates are supported in VS2015 Update 2 or later */
+ #define __TBB_CPP14_VARIABLE_TEMPLATES_PRESENT (_MSC_FULL_VER >= 190023918 && (!__INTEL_COMPILER || __INTEL_COMPILER >= 1700))
+ #define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT (_MSVC_LANG >= 201703L && _MSC_VER >= 1914)
+ #define __TBB_CPP17_INVOKE_RESULT_PRESENT (_MSVC_LANG >= 201703L && _MSC_VER >= 1911)
#else
#define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT 0
#define __TBB_CPP11_RVALUE_REF_PRESENT 0
#define __TBB_ALIGNAS_PRESENT 0
#define __TBB_CPP11_TEMPLATE_ALIASES_PRESENT 0
#define __TBB_CPP14_INTEGER_SEQUENCE_PRESENT (__cplusplus >= 201402L)
+ #define __TBB_CPP14_VARIABLE_TEMPLATES_PRESENT 0
#define __TBB_CPP17_DEDUCTION_GUIDES_PRESENT 0
#define __TBB_CPP17_INVOKE_RESULT_PRESENT 0
#endif
// In GCC, std::move_if_noexcept appeared later than noexcept
#define __TBB_MOVE_IF_NOEXCEPT_PRESENT (__TBB_NOEXCEPT_PRESENT && (__TBB_GLIBCXX_VERSION >= 40700 || _MSC_VER >= 1900 || _LIBCPP_VERSION))
-#define __TBB_ALLOCATOR_TRAITS_PRESENT (__cplusplus >= 201103L && _LIBCPP_VERSION || _MSC_VER >= 1700 || \
+#define __TBB_ALLOCATOR_TRAITS_PRESENT (__cplusplus >= 201103L && _LIBCPP_VERSION || _MSC_VER >= 1800 || \
__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GLIBCXX_VERSION >= 40700 && !(__TBB_GLIBCXX_VERSION == 40700 && __TBB_DEFINE_MIC))
#define __TBB_MAKE_EXCEPTION_PTR_PRESENT (__TBB_EXCEPTION_PTR_PRESENT && (_MSC_VER >= 1700 || __TBB_GLIBCXX_VERSION >= 40600 || _LIBCPP_VERSION))
#define __TBB_CPP17_UNCAUGHT_EXCEPTIONS_PRESENT (_MSC_VER >= 1900 || __GLIBCXX__ && __cpp_lib_uncaught_exceptions \
|| _LIBCPP_VERSION >= 3700 && (!__TBB_MACOS_TARGET_VERSION || __TBB_MACOS_TARGET_VERSION >= 101200))
-
+// TODO: wait when memory_resource will be fully supported in clang and define the right macro
+// Currently it is in experimental stage since 6 version.
+#define __TBB_CPP17_MEMORY_RESOURCE_PRESENT (_MSC_VER >= 1913 && (_MSVC_LANG > 201402L || __cplusplus > 201402L) || \
+ __GLIBCXX__ && __cpp_lib_memory_resource >= 201603)
+#define __TBB_CPP17_HW_INTERFERENCE_SIZE_PRESENT (_MSC_VER >= 1911)
// std::swap is in <utility> only since C++11, though MSVC had it at least since VS2005
#if _MSC_VER>=1400 || _LIBCPP_VERSION || __GXX_EXPERIMENTAL_CXX0X__
#define __TBB_STD_SWAP_HEADER <utility>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#define TBB_VERSION_MINOR 0
// Engineering-focused interface version
-#define TBB_INTERFACE_VERSION 11003
+#define TBB_INTERFACE_VERSION 11004
#define TBB_INTERFACE_VERSION_MAJOR TBB_INTERFACE_VERSION/1000
// The oldest major interface version still supported
// Following is a set of classes and functions typically used in compile-time "metaprogramming".
// TODO: move all that to a separate header
-#if __TBB_ALLOCATOR_TRAITS_PRESENT || __TBB_CPP11_SMART_POINTERS_PRESENT
-#include <memory> // for allocator_traits, unique_ptr
+#if __TBB_CPP11_SMART_POINTERS_PRESENT
+#include <memory> // for unique_ptr
#endif
#if __TBB_CPP11_RVALUE_REF_PRESENT || __TBB_CPP11_DECLTYPE_PRESENT || _LIBCPP_VERSION
typedef bool_constant<true> true_type;
typedef bool_constant<false> false_type;
-#if __TBB_ALLOCATOR_TRAITS_PRESENT
-using std::allocator_traits;
-#else
-template<typename allocator>
-struct allocator_traits{
- typedef tbb::internal::false_type propagate_on_container_move_assignment;
-};
-#endif
-
//! A template to select either 32-bit or 64-bit constant as compile time, depending on machine word size.
template <unsigned u, unsigned long long ull >
struct select_size_t_constant {
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#endif // _MSC_VER
+/* Public Windows API */
+extern "C" int TBB_malloc_replacement_log(char *** function_replacement_log_ptr);
+
#endif //__TBB_tbbmalloc_proxy_H
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
</DL>
<HR>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/usr/bin/env python
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<HR>
<A href="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2016-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2016-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
-# Copyright (c) 2017-2018 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#!/usr/bin/env python
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/usr/bin/env python
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/usr/bin/env python
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
%pythonbegin %{
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#endif
%{
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#define TBB_PREVIEW_WAITING_FOR_WORKERS 1
#include <tbb/tbb.h>
#include <tbb/compat/condition_variable>
#!/usr/bin/env python
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
#!/usr/bin/env python
#
-# Copyright (c) 2016-2018 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
<HR/>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#!/bin/bash
#
-# Copyright (c) 2005-2018 Intel Corporation
+# Copyright (c) 2005-2019 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<HR/>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<HR/>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
VALUE "CompanyName", "Intel Corporation\0"
VALUE "FileDescription", "Intel(R) Threading Building Blocks resource manager library\0"
VALUE "FileVersion", TBB_VERSION "\0"
- VALUE "LegalCopyright", "Copyright 2005-2018 Intel Corporation. All Rights Reserved.\0"
+ VALUE "LegalCopyright", "Copyright 2005-2019 Intel Corporation. All Rights Reserved.\0"
VALUE "LegalTrademarks", "\0"
#ifndef TBB_USE_DEBUG
VALUE "OriginalFilename", "irml.dll\0"
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
<HR>
<A HREF="../index.html">Up to parent directory</A>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
*/
+#ifndef _TBB_assert_impl_H
+#define _TBB_assert_impl_H
+
// IMPORTANT: To use assertion handling in TBB, exactly one of the TBB source files
// should #include tbb_assert_impl.h thus instantiating assertion handling routines.
// The intent of putting it to a separate file is to allow some tests to use it
#else
} // namespace tbb
#endif
+
+#endif /*_TBB_assert_impl_H*/
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
VALUE "CompanyName", "Intel Corporation\0"
VALUE "FileDescription", "Intel(R) Threading Building Blocks library\0"
VALUE "FileVersion", TBB_VERSION "\0"
- VALUE "LegalCopyright", "Copyright 2005-2018 Intel Corporation. All Rights Reserved.\0"
+ VALUE "LegalCopyright", "Copyright 2005-2019 Intel Corporation. All Rights Reserved.\0"
VALUE "LegalTrademarks", "\0"
#ifndef TBB_USE_DEBUG
VALUE "OriginalFilename", "tbb.dll\0"
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
// customizing MALLOC_ASSERT macro
#include "tbb/tbb_stddef.h"
#define MALLOC_ASSERT(assertion, message) __TBB_ASSERT(assertion, message)
+#define MALLOC_ASSERT_EX(assertion, message) __TBB_ASSERT_EX(assertion, message)
#ifndef MALLOC_DEBUG
#define MALLOC_DEBUG TBB_USE_DEBUG
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
if (!isAligned(object, largeObjectAlignment))
return false;
LargeObjectHdr *header = (LargeObjectHdr*)object - 1;
- BackRefIdx idx = memOrigin==unknownMem? safer_dereference(&header->backRefIdx) :
- header->backRefIdx;
+ BackRefIdx idx = (memOrigin == unknownMem) ?
+ safer_dereference(&header->backRefIdx) : header->backRefIdx;
return idx.isLargeObject()
// in valid LargeObjectHdr memoryBlock is not NULL
static size_t internalMsize(void* ptr)
{
- if (ptr) {
- MALLOC_ASSERT(isRecognized(ptr), "Invalid pointer in scalable_msize detected.");
- if (isLargeObject<ourMem>(ptr)) {
- // TODO: return the maximum memory size, that can be written to this object
- LargeMemoryBlock* lmb = ((LargeObjectHdr*)ptr - 1)->memoryBlock;
- return lmb->objectSize;
- } else
- return ((Block*)alignDown(ptr, slabSize))->findObjectSize(ptr);
+ MALLOC_ASSERT(ptr, "Invalid pointer passed to internalMsize");
+ if (isLargeObject<ourMem>(ptr)) {
+ // TODO: return the maximum memory size, that can be written to this object
+ LargeMemoryBlock* lmb = ((LargeObjectHdr*)ptr - 1)->memoryBlock;
+ return lmb->objectSize;
+ } else {
+ Block *block = (Block*)alignDown(ptr, slabSize);
+ return block->findObjectSize(ptr);
}
- errno = EINVAL;
- // Unlike _msize, return 0 in case of parameter error.
- // Returning size_t(-1) looks more like the way to troubles.
- return 0;
}
} // namespace internal
return (rml::MemoryPool*)pool;
}
+size_t pool_msize(rml::MemoryPool *mPool, void* object)
+{
+ if (object) {
+ // No assert for object recognition, cause objects allocated from non-default
+ // memory pool do not participate in range checking and do not have valid backreferences for
+ // small objects. Instead, check that an object belong to the certain memory pool.
+ MALLOC_ASSERT_EX(mPool == pool_identify(object), "Object does not belong to the specified pool");
+ return internalMsize(object);
+ }
+ errno = EINVAL;
+ // Unlike _msize, return 0 in case of parameter error.
+ // Returning size_t(-1) looks more like the way to troubles.
+ return 0;
+}
+
} // namespace rml
using namespace rml::internal;
return ptr;
}
-extern "C" void scalable_free (void *object) {
+extern "C" void scalable_free(void *object)
+{
internalFree(object);
}
#if MALLOC_ZONE_OVERLOAD_ENABLED
-extern "C" void __TBB_malloc_free_definite_size(void *object, size_t size) {
+extern "C" void __TBB_malloc_free_definite_size(void *object, size_t size)
+{
internalPoolFree(defaultMemPool, object, size);
}
#endif
*/
extern "C" size_t scalable_msize(void* ptr)
{
- return internalMsize(ptr);
+ if (ptr) {
+ MALLOC_ASSERT(isRecognized(ptr), "Invalid pointer in scalable_msize detected.");
+ return internalMsize(ptr);
+ }
+ errno = EINVAL;
+ // Unlike _msize, return 0 in case of parameter error.
+ // Returning size_t(-1) looks more like the way to troubles.
+ return 0;
}
/*
<HR>
<p></p>
-Copyright © 2005-2018 Intel Corporation. All Rights Reserved.
+Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
<P></P>
Intel is a registered trademark or trademark of Intel Corporation
or its subsidiaries in the United States and other countries.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
_ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvjj;
_ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEjj;
_ZN3rml13pool_identifyEPv;
+_ZN3rml10pool_msizeEPNS_10MemoryPoolEPv;
local:
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
_ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvmm;
_ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEmm;
_ZN3rml13pool_identifyEPv;
+_ZN3rml10pool_msizeEPNS_10MemoryPoolEPv;
local:
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
_ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvmm;
_ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEmm;
_ZN3rml13pool_identifyEPv;
+_ZN3rml10pool_msizeEPNS_10MemoryPoolEPv;
local:
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
__ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvmm
__ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEmm
__ZN3rml13pool_identifyEPv
+__ZN3rml10pool_msizeEPNS_10MemoryPoolEPv
+
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
__ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvmm
__ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEmm
__ZN3rml13pool_identifyEPv
+__ZN3rml10pool_msizeEPNS_10MemoryPoolEPv
+
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*** internal global operator new implementation (Linux, Windows) ***/
#include <new>
-// Synchronization primitives to protect original library pointers and new_handler
+// Synchronization primitives to protect original library pointers and new_handler
#include "Synchronize.h"
#if __TBB_MSVC_PART_WORD_INTERLOCKED_INTRINSICS_PRESENT
if (!module)
return false;
for (int i=0; funcName[i]; i++)
- if (! IsPrologueKnown(module, funcName[i], known_bytecodes)) {
+ if (! IsPrologueKnown(dllName, funcName[i], known_bytecodes, module)) {
fprintf(stderr, "TBBmalloc: skip allocation functions replacement in " WCHAR_SPEC
": unknown prologue for function " WCHAR_SPEC "\n", dllName, funcName[i]);
return false;
ReplaceFunctionWithStore( modules_to_replace[j].name, c_routines_to_replace[i]._func, c_routines_to_replace[i]._fptr, NULL, NULL, c_routines_to_replace[i]._on_error );
}
if ( strcmp(modules_to_replace[j].name, "ucrtbase.dll") == 0 ) {
+ HMODULE ucrtbase_handle = GetModuleHandle("ucrtbase.dll");
// If _o_free function is present and patchable, redirect it to tbbmalloc as well
// This prevents issues with other _o_* functions which might allocate memory with malloc
- if ( IsPrologueKnown(GetModuleHandle("ucrtbase.dll"), "_o_free", known_bytecodes) ) {
+ if ( IsPrologueKnown("ucrtbase.dll", "_o_free", known_bytecodes, ucrtbase_handle)) {
ReplaceFunctionWithStore( "ucrtbase.dll", "_o_free", (FUNCPTR)__TBB_malloc__o_free, known_bytecodes, (FUNCPTR*)&orig__o_free, FRR_FAIL );
}
// Similarly for _free_base
- if (IsPrologueKnown(GetModuleHandle("ucrtbase.dll"), "_free_base", known_bytecodes)) {
+ if (IsPrologueKnown("ucrtbase.dll", "_free_base", known_bytecodes, ucrtbase_handle)) {
ReplaceFunctionWithStore("ucrtbase.dll", "_free_base", (FUNCPTR)__TBB_malloc__free_base, known_bytecodes, (FUNCPTR*)&orig__free_base, FRR_FAIL);
}
// ucrtbase.dll does not export operator new/delete, so skip the rest of the loop.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#if !__TBB_WIN8UI_SUPPORT && defined(_WIN32)
+#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE 1
+#endif
#define __TBB_NO_IMPLICIT_LINKAGE 1
+// no standard-conforming implementation of snprintf prior to VS 2015
+#if !defined(_MSC_VER) || _MSC_VER>=1900
+#define LOG_PRINT(s, n, format, ...) snprintf(s, n, format, __VA_ARGS__)
+#else
+#define LOG_PRINT(s, n, format, ...) _snprintf_s(s, n, _TRUNCATE, format, __VA_ARGS__)
+#endif
+
#include <windows.h>
#include <new>
#include <stdio.h>
#include "tbb/tbb_stddef.h"
#include "../tbb/tbb_assert_impl.h"
+// The information about a standard memory allocation function for the replacement log
+struct FunctionInfo {
+ const char* funcName;
+ const char* dllName;
+};
+
+// Namespace that processes and manages the output of records to the Log journal
+// that will be provided to user by TBB_malloc_replacement_log()
+namespace Log {
+ // Value of RECORDS_COUNT is set due to the fact that we maximally
+ // scan 8 modules, and in every module we can swap 6 opcodes. (rounded to 8)
+ static const unsigned RECORDS_COUNT = 8 * 8;
+ static const unsigned RECORD_LENGTH = MAX_PATH;
+
+ // Need to add 1 to count of records, because last record must be always NULL
+ static char *records[RECORDS_COUNT + 1];
+ static bool replacement_status = true;
+
+ // Internal counter, thats contain number of next string for record
+ static unsigned record_number = 0;
+
+ // Function that writes info about (not)found opcodes to the Log journal
+ // functionInfo - information about a standard memory allocation function for the replacement log
+ // opcodeString - string, that contain byte code of this function
+ // status - information about function replacement status
+ static void record(FunctionInfo functionInfo, const char * opcodeString, bool status) {
+ __TBB_ASSERT(functionInfo.dllName, "Empty DLL name value");
+ __TBB_ASSERT(functionInfo.funcName, "Empty function name value");
+ __TBB_ASSERT(opcodeString, "Empty opcode");
+ __TBB_ASSERT(record_number <= RECORDS_COUNT, "Incorrect record number");
+
+ //If some replacement failed -> set status to false
+ replacement_status &= status;
+
+ // If we reach the end of the log, write this message to the last line
+ if (record_number == RECORDS_COUNT) {
+ // %s - workaround to fix empty variable argument parsing behavior in GCC
+ LOG_PRINT(records[RECORDS_COUNT - 1], RECORD_LENGTH, "%s", "Log was truncated.");
+ return;
+ }
+
+ char* entry = (char*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, RECORD_LENGTH);
+ __TBB_ASSERT(entry, "Invalid memory was returned");
+
+ LOG_PRINT(entry, RECORD_LENGTH, "%s: %s (%s), byte pattern: <%s>",
+ status ? "Success" : "Fail", functionInfo.funcName, functionInfo.dllName, opcodeString);
+
+ records[record_number++] = entry;
+ }
+};
+
inline UINT_PTR Ptr2Addrint(LPVOID ptr)
{
Int2Ptr i2p;
// Dictionary contains opcodes for several full asm instructions
// + one opcode byte for the next asm instruction for safe address processing
// RETURN: 1 + the index of the matched pattern, or 0 if no match found.
-static UINT CheckOpcodes( const char ** opcodes, void *inpAddr, bool abortOnError )
+static UINT CheckOpcodes( const char ** opcodes, void *inpAddr, bool abortOnError, const FunctionInfo* functionInfo = NULL)
{
static size_t opcodesStringsCount = 0;
static size_t maxOpcodesLength = 0;
static size_t opcodes_pointer = (size_t)opcodes;
char opcodeString[2*MAX_PATTERN_SIZE+1];
size_t i;
- size_t result;
+ size_t result = 0;
// Get the values for static variables
// max length and number of patterns
// Compare translated opcodes with patterns
for( UINT idx=0; idx<opcodesStringsCount; ++idx ){
result = compareStrings( opcodes[idx],opcodeString );
- if( result )
- return idx+1; // avoid 0 which indicates a failure
+ if( result ) {
+ if (functionInfo) {
+ Log::record(*functionInfo, opcodeString, /*status*/ true);
+ }
+ return idx + 1; // avoid 0 which indicates a failure
+ }
+ }
+ if (functionInfo) {
+ Log::record(*functionInfo, opcodeString, /*status*/ false);
}
if (abortOnError) {
// Impossibility to find opcodes in the dictionary is a serious issue,
return FRR_OK;
}
-bool IsPrologueKnown(HMODULE module, const char *funcName, const char **opcodes)
+bool IsPrologueKnown(const char* dllName, const char *funcName, const char **opcodes, HMODULE module)
{
FARPROC inpFunc = GetProcAddress(module, funcName);
if (!inpFunc)
return false;
- return CheckOpcodes( opcodes, (void*)inpFunc, /*abortOnError=*/false ) != 0;
+
+ FunctionInfo functionInfo = { funcName, dllName };
+ return CheckOpcodes( opcodes, (void*)inpFunc, /*abortOnError=*/false, &functionInfo) != 0;
+}
+
+// Public Windows API
+extern "C" __declspec(dllexport) int TBB_malloc_replacement_log(char *** function_replacement_log_ptr)
+{
+ if (function_replacement_log_ptr != NULL) {
+ *function_replacement_log_ptr = Log::records;
+ }
+
+ // If we have no logs -> return false status
+ return Log::replacement_status && Log::records[0] != NULL ? 0 : -1;
}
#endif /* !__TBB_WIN8UI_SUPPORT && defined(_WIN32) */
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
FRR_TYPE ReplaceFunctionA(const char *dllName, const char *funcName, FUNCPTR newFunc, const char ** opcodes, FUNCPTR* origFunc=NULL);
FRR_TYPE ReplaceFunctionW(const wchar_t *dllName, const char *funcName, FUNCPTR newFunc, const char ** opcodes, FUNCPTR* origFunc=NULL);
-bool IsPrologueKnown(HMODULE module, const char *funcName, const char **opcodes);
+bool IsPrologueKnown(const char* dllName, const char *funcName, const char **opcodes, HMODULE module);
// Utilities to convert between ADDRESS and LPVOID
union Int2Ptr {
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
-// Copyright (c) 2005-2018 Intel Corporation
+// Copyright (c) 2005-2019 Intel Corporation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
VALUE "CompanyName", "Intel Corporation\0"
VALUE "FileDescription", "Scalable Allocator library\0"
VALUE "FileVersion", TBBMALLOC_VERSION "\0"
- VALUE "LegalCopyright", "Copyright 2005-2018 Intel Corporation. All Rights Reserved.\0"
+ VALUE "LegalCopyright", "Copyright 2005-2019 Intel Corporation. All Rights Reserved.\0"
VALUE "LegalTrademarks", "\0"
#ifndef TBB_USE_DEBUG
VALUE "OriginalFilename", "tbbmalloc.dll\0"
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
_ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvjj;
_ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEjj;
_ZN3rml13pool_identifyEPv;
+_ZN3rml10pool_msizeEPNS_10MemoryPoolEPv;
local:*;
};
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
?pool_aligned_realloc@rml@@YAPAXPAVMemoryPool@1@PAXII@Z
?pool_aligned_malloc@rml@@YAPAXPAVMemoryPool@1@II@Z
?pool_identify@rml@@YAPAVMemoryPool@1@PAX@Z
+?pool_msize@rml@@YAIPAVMemoryPool@1@PAX@Z
+
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
_ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvyy;
_ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEyy;
_ZN3rml13pool_identifyEPv;
+_ZN3rml10pool_msizeEPNS_10MemoryPoolEPv;
local:*;
};
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
?pool_aligned_realloc@rml@@YAPEAXPEAVMemoryPool@1@PEAX_K2@Z
?pool_aligned_malloc@rml@@YAPEAXPEAVMemoryPool@1@_K1@Z
?pool_identify@rml@@YAPEAVMemoryPool@1@PEAX@Z
+?pool_msize@rml@@YA_KPEAVMemoryPool@1@PEAX@Z
+
-; Copyright (c) 2005-2018 Intel Corporation
+; Copyright (c) 2005-2019 Intel Corporation
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
};
+template <typename T>
+class pmr_stateful_allocator
+{
+private:
+ pmr_stateful_allocator& operator=(const pmr_stateful_allocator&); /* = deleted */
+public:
+ typedef T value_type;
+ typedef Harness::false_type propagate_on_container_move_assignment;
+ typedef Harness::false_type propagate_on_container_copy_assignment;
+ typedef Harness::false_type propagate_on_container_swap;
+
+// These types are required in C++03
+#if !__TBB_ALLOCATOR_TRAITS_PRESENT
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ template<class U> struct rebind {
+ typedef pmr_stateful_allocator<U> other;
+ };
+#endif
+
+ pmr_stateful_allocator() throw() : unique_pointer(this) {}
+
+ pmr_stateful_allocator(const pmr_stateful_allocator &a) : unique_pointer(a.unique_pointer) {}
+
+ template<typename U>
+ pmr_stateful_allocator(const pmr_stateful_allocator<U> &a) throw() : unique_pointer(a.unique_pointer) {}
+
+ value_type* allocate( size_t n, const void* /*hint*/ = 0 ) {
+ return static_cast<value_type*>( malloc( n * sizeof(value_type) ) );
+ }
+
+ void deallocate( value_type* p, size_t ) {
+ free( p );
+ }
+
+#if __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+ //! Copy-construct value at location pointed to by p.
+ template<typename U, typename... Args>
+ void construct(U *p, Args&&... args)
+ {
+ ::new((void *)p) U(std::forward<Args>(args)...);
+ }
+#else // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+ void construct(value_type* p, value_type&& value) { ::new((void*)(p)) value_type(std::move(value)); }
+#endif
+ void construct(value_type* p, const value_type& value) { ::new((void*)(p)) value_type(value); }
+#endif // __TBB_ALLOCATOR_CONSTRUCT_VARIADIC
+
+ //! Destroy value at location pointed to by p.
+ void destroy(value_type* p) {
+ p->~value_type();
+ // suppress "unreferenced parameter" warnings by MSVC up to and including 2015
+ tbb::internal::suppress_unused_warning(p);
+ }
+
+ friend bool operator==(pmr_stateful_allocator const& lhs, pmr_stateful_allocator const& rhs){
+ return lhs.unique_pointer == rhs.unique_pointer;
+ }
+
+ friend bool operator!=(pmr_stateful_allocator const& rhs, pmr_stateful_allocator const& lhs){
+ return !(lhs == rhs);
+ }
+
+ void* unique_pointer;
+};
+
#if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
// Workaround for overzealous compiler warnings
#pragma warning (pop)
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include "harness_assert.h"
#include "tbb/memory_pool.h"
#include "tbb/scalable_allocator.h"
+#include <iostream>
// The actual body of the test is there:
#include "test_allocator_STL.h"
static char buf[1024*1024*4];
tbb::fixed_pool fpool(buf, sizeof(buf));
TestAllocatorWithSTL(tbb::memory_pool_allocator<void>(fpool) );
+
+#if __TBB_CPP17_MEMORY_RESOURCE_PRESENT
+ ASSERT(!tbb::scalable_memory_resource()->is_equal(*std::pmr::get_default_resource()),
+ "Scalable resource shouldn't be equal to standard resource." );
+ ASSERT(tbb::scalable_memory_resource()->is_equal(*tbb::scalable_memory_resource()),
+ "Memory that was allocated by one scalable resource should be deallocated by any other instance.");
+
+ typedef std::pmr::polymorphic_allocator<void> pmr_alloc_t;
+ TestAllocatorWithSTL(pmr_alloc_t(tbb::scalable_memory_resource()));
+#endif
+
return Harness::Done;
}
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
template<typename Allocator>
void TestAllocatorWithSTL(const Allocator &a = Allocator() ) {
+
+// Allocator type convertion section
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+ typedef typename std::allocator_traits<Allocator>::template rebind_alloc<int> Ai;
+ typedef typename std::allocator_traits<Allocator>::template rebind_alloc<std::pair<const int, int> > Acii;
+#if _MSC_VER
+ typedef typename std::allocator_traits<Allocator>::template rebind_alloc<const int> Aci;
+ typedef typename std::allocator_traits<Allocator>::template rebind_alloc<std::pair<int, int> > Aii;
+#endif // _MSC_VER
+#else
typedef typename Allocator::template rebind<int>::other Ai;
typedef typename Allocator::template rebind<std::pair<const int, int> >::other Acii;
#if _MSC_VER
typedef typename Allocator::template rebind<const int>::other Aci;
typedef typename Allocator::template rebind<std::pair<int, int> >::other Aii;
-#endif
+#endif // _MSC_VER
+#endif // __TBB_ALLOCATOR_TRAITS_PRESENT
// Sequenced containers
TestSequence<std::deque <int,Ai> >(a);
TestSequence<std::vector<int,Ai> >(a);
#if __TBB_CPP11_RVALUE_REF_PRESENT
+#if __TBB_ALLOCATOR_TRAITS_PRESENT
+ typedef typename std::allocator_traits<Allocator>::template rebind_alloc<MoveOperationTracker> Amot;
+#else
typedef typename Allocator::template rebind<MoveOperationTracker>::other Amot;
+#endif // __TBB_ALLOCATOR_TRAITS_PRESENT
TestSequence<std::deque <MoveOperationTracker, Amot> >(a);
TestSequence<std::list <MoveOperationTracker, Amot> >(a);
TestSequence<std::vector<MoveOperationTracker, Amot> >(a);
-#endif
+#endif // __TBB_CPP11_RVALUE_REF_PRESENT
// Associative containers
TestSet<std::set <int, std::less<int>, Ai> >(a);
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
TestAllocatorWithSTL<tbb::cache_aligned_allocator<void> >();
TestAllocatorWithSTL<tbb::tbb_allocator<void> >();
TestAllocatorWithSTL<tbb::zero_allocator<void> >();
+
+#if __TBB_CPP17_MEMORY_RESOURCE_PRESENT
+ tbb::cache_aligned_resource aligned_resource;
+ tbb::cache_aligned_resource equal_aligned_resource(std::pmr::get_default_resource());
+ ASSERT(aligned_resource.is_equal(equal_aligned_resource),
+ "Underlying upstream resources should be equal.");
+ ASSERT(!aligned_resource.is_equal(*std::pmr::null_memory_resource()),
+ "Cache aligned resource upstream shouldn't be equal to the standard resource.");
+ TestAllocatorWithSTL(std::pmr::polymorphic_allocator<void>(&aligned_resource));
+#endif
+
return Harness::Done;
}
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
}
#endif //__TBB_CPP11_RVALUE_REF_PRESENT
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+
+template <template <typename...> typename TMap>
+void TestDeductionGuides() {
+ using Key = int;
+ using Value = std::string;
+
+ using ComplexType = std::pair<Key, Value>;
+ using ComplexTypeConst = std::pair<const Key, Value>;
+
+ using DefaultCompare = tbb::tbb_hash_compare<Key>;
+ using Compare = debug_hash_compare<Key>;
+ using DefaultAllocator = tbb::tbb_allocator<ComplexTypeConst>;
+ using Allocator = std::allocator<ComplexType>;
+
+ std::vector<ComplexType> v;
+ auto l = { ComplexTypeConst(1, "one"), ComplexTypeConst(2, "two") };
+ Compare compare;
+ Allocator allocator;
+
+ // check TMap(InputIterator, InputIterator)
+ TMap m1(v.begin(), v.end());
+ static_assert(std::is_same<decltype(m1), TMap<Key, Value, DefaultCompare, DefaultAllocator>>::value);
+
+ // check TMap(InputIterator, InputIterator, HashCompare)
+ TMap m2(v.begin(), v.end(), compare);
+ static_assert(std::is_same<decltype(m2), TMap<Key, Value, Compare>>::value);
+
+ // check TMap(InputIterator, InputIterator, HashCompare, Allocator)
+ TMap m3(v.begin(), v.end(), compare, allocator);
+ static_assert(std::is_same<decltype(m3), TMap<Key, Value, Compare, Allocator>>::value);
+
+ // check TMap(InputIterator, InputIterator, Allocator)
+ TMap m4(v.begin(), v.end(), allocator);
+ static_assert(std::is_same<decltype(m4), TMap<Key, Value, DefaultCompare, Allocator>>::value);
+
+ // check TMap(std::initializer_list)
+ TMap m5(l);
+ static_assert(std::is_same<decltype(m5), TMap<Key, Value, DefaultCompare, DefaultAllocator>>::value);
+
+ // check TMap(std::initializer_list, HashCompare)
+ TMap m6(l, compare);
+ static_assert(std::is_same<decltype(m6), TMap<Key, Value, Compare, DefaultAllocator>>::value);
+
+ // check TMap(std::initializer_list, HashCompare, Allocator)
+ TMap m7(l, compare, allocator);
+ static_assert(std::is_same<decltype(m7), TMap<Key, Value, Compare, Allocator>>::value);
+
+ // check TMap(std::initializer_list, Allocator)
+ TMap m8(l, allocator);
+ static_assert(std::is_same<decltype(m8), TMap<Key, Value, DefaultCompare, Allocator>>::value);
+
+ // check TMap(TMap &)
+ TMap m9(m1);
+ static_assert(std::is_same<decltype(m9), decltype(m1)>::value);
+
+ // check TMap(TMap &, Allocator)
+ TMap m10(m4, allocator);
+ static_assert(std::is_same<decltype(m10), decltype(m4)>::value);
+
+ // check TMap(TMap &&)
+ TMap m11(std::move(m1));
+ static_assert(std::is_same<decltype(m11), decltype(m1)>::value);
+
+ // check TMap(TMap &&, Allocator)
+ TMap m12(std::move(m4), allocator);
+ static_assert(std::is_same<decltype(m12), decltype(m4)>::value);
+}
+#endif // __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+
template<typename Key>
struct non_default_constructible_hash_compare : tbb::tbb_hash_compare<Key> {
non_default_constructible_hash_compare() {
TestCPP11Types();
TestHashCompareConstructors();
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+ TestDeductionGuides<tbb::concurrent_hash_map>();
+#endif
+
return Harness::Done;
}
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#endif /* __TBB_CPP11_SMART_POINTERS_PRESENT */
}
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+template <template <typename...> typename TMap>
+void TestDeductionGuides() {
+ using ComplexType = std::pair<int, std::string>;
+ using ComplexTypeConst = std::pair<const int, std::string>;
+ std::vector<ComplexType> v;
+ auto l = { ComplexTypeConst(1, "one"), ComplexTypeConst(2, "two")};
+
+ // check TMap(InputIterator, InputIterator)
+ TMap m0(v.begin(), v.end());
+ static_assert(std::is_same<decltype(m0), TMap<int, std::string>>::value);
+
+ // check TMap(InputIterator, InputIterator, size_t)
+ TMap m1(v.begin(), v.end(), 1);
+ static_assert(std::is_same<decltype(m1), TMap<int, std::string>>::value);
+
+
+ // check TMap(InputIterator, InputIterator, size_t, Hasher)
+ TMap m2(v.begin(), v.end(), 4, std::hash<int>());
+ static_assert(std::is_same<decltype(m2), TMap<int, std::string, std::hash<int>>>::value);
+
+ // check TMap(InputIterator, InputIterator, size_t, Hasher, Equality)
+ TMap m3(v.begin(), v.end(), 4, std::hash<int>(), std::less<int>());
+ static_assert(std::is_same<decltype(m3), TMap<int, std::string, std::hash<int>, std::less<int>>>::value);
+
+ // check TMap(InputIterator, InputIterator, size_t, Hasher, Equality, Allocator)
+ TMap m4(v.begin(), v.end(), 4, std::hash<int>(), std::less<int>(), std::allocator<int>());
+ static_assert(std::is_same<decltype(m4), TMap<int, std::string, std::hash<int>,
+ std::less<int>, std::allocator<int>>>::value);
+
+ // check TMap(InputIterator, InputIterator, size_t, Allocator)
+ TMap m5(v.begin(), v.end(), 5, std::allocator<int>());
+ static_assert(std::is_same<decltype(m5), TMap<int, std::string, tbb::tbb_hash<int>,
+ std::equal_to<int>, std::allocator<int>>>::value);
+
+ // check TMap(InputIterator, InputIterator, size_t, Hasher, Allocator)
+ TMap m6(v.begin(), v.end(), 4, std::hash<int>(), std::allocator<int>());
+ static_assert(std::is_same<decltype(m6), TMap<int, std::string, std::hash<int>,
+ std::equal_to<int>, std::allocator<int>>>::value);
+
+ // check TMap(std::initializer_list)
+ TMap m7(l);
+ static_assert(std::is_same<decltype(m7), TMap<int, std::string>>::value);
+
+ // check TMap(std::initializer_list, size_t)
+ TMap m8(l, 1);
+ static_assert(std::is_same<decltype(m8), TMap<int, std::string>>::value);
+
+ // check TMap(std::initializer_list, size_t, Hasher)
+ TMap m9(l, 4, std::hash<int>());
+ static_assert(std::is_same<decltype(m9), TMap<int, std::string, std::hash<int>>>::value);
+
+ // check TMap(std::initializer_list, size_t, Hasher, Equality)
+ TMap m10(l, 4, std::hash<int>(), std::less<int>());
+ static_assert(std::is_same<decltype(m10), TMap<int, std::string, std::hash<int>, std::less<int>>>::value);
+
+ // check TMap(std::initializer_list, size_t, Hasher, Equality, Allocator)
+ TMap m11(l, 4, std::hash<int>(), std::less<int>(), std::allocator<int>());
+ static_assert(std::is_same<decltype(m11), TMap<int, std::string, std::hash<int>,
+ std::less<int>, std::allocator<int>>>::value);
+
+ // check TMap(std::initializer_list, size_t, Allocator)
+ TMap m12(l, 4, std::allocator<int>());
+ static_assert(std::is_same<decltype(m12), TMap<int, std::string, tbb::tbb_hash<int>,
+ std::equal_to<int>, std::allocator<int>>>::value);
+
+ // check TMap(std::initializer_list, size_t, Hasher, Allocator)
+ TMap m13(l, 4, std::hash<int>(), std::allocator<int>());
+ static_assert(std::is_same<decltype(m13), TMap<int, std::string, std::hash<int>,
+ std::equal_to<int>, std::allocator<int>>>::value);
+
+ // check TMap(TMap &)
+ TMap m14(m1);
+ static_assert(std::is_same<decltype(m14), decltype(m1)>::value);
+
+ // check TMap(TMap &, Allocator)
+ TMap m15(m5, std::allocator<int>());
+ static_assert(std::is_same<decltype(m15), decltype(m5)>::value);
+
+ // check TMap(TMap &&)
+ TMap m16(std::move(m1));
+ static_assert(std::is_same<decltype(m16), decltype(m1)>::value);
+
+ // check TMap(TMap &&, Allocator)
+ TMap m17(std::move(m5), std::allocator<int>());
+ static_assert(std::is_same<decltype(m17), decltype(m5)>::value);
+}
+#endif
+
int TestMain() {
test_machine();
test_rvalue_ref_support<cu_multimap_type>( "concurrent unordered multimap" );
#endif /* __TBB_CPP11_RVALUE_REF_PRESENT */
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+ TestDeductionGuides<tbb::concurrent_unordered_map>();
+ TestDeductionGuides<tbb::concurrent_unordered_multimap>();
+#endif
+
TestTypes();
return Harness::Done;
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
}
#endif // __TBB_TEST_SECONDARY
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+template <template <typename ...> typename TSet>
+void TestDeductionGuides() {
+ using ComplexType = const std::string *;
+ std::vector<ComplexType> v;
+ std::string s = "s";
+ auto l = { ComplexType(&s), ComplexType(&s)};
+
+ // check TSet(InputIterator,InputIterator)
+ TSet s1(v.begin(), v.end());
+ static_assert(std::is_same<decltype(s1), TSet<ComplexType>>::value);
+
+ // check TSet(InputIterator,InputIterator, size_t, Hasher)
+ TSet s2(v.begin(), v.end(), 5, std::hash<ComplexType>());
+ static_assert(std::is_same<decltype(s2), TSet<ComplexType, std::hash<ComplexType>>>::value);
+
+ // check TSet(InputIterator,InputIterator, size_t, Hasher, Equality)
+ TSet s3(v.begin(), v.end(), 5, std::hash<ComplexType>(), std::less<ComplexType>());
+ static_assert(std::is_same<decltype(s3), TSet<ComplexType, std::hash<ComplexType>,
+ std::less<ComplexType>>>::value);
+
+ // check TSet(InputIterator,InputIterator, size_t, Hasher, Equality, Allocator)
+ TSet s4(v.begin(), v.end(), 5, std::hash<ComplexType>(), std::less<ComplexType>(),
+ std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s4), TSet<ComplexType, std::hash<ComplexType>,
+ std::less<ComplexType>, std::allocator<ComplexType>>>::value);
+
+ // check TSet(InputIterator,InputIterator, size_t, Allocator)
+ TSet s5(v.begin(), v.end(), 5, std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s5), TSet<ComplexType, tbb::tbb_hash<ComplexType>,
+ std::equal_to<ComplexType>, std::allocator<ComplexType>>>::value);
+
+ // check TSet(InputIterator,InputIterator, size_t, Hasher, Allocator)
+ TSet s6(v.begin(), v.end(), 5, std::hash<ComplexType>(), std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s6), TSet<ComplexType, std::hash<ComplexType>,
+ std::equal_to<ComplexType>, std::allocator<ComplexType>>>::value);
+
+ // check TSet(std::initializer_list)
+ TSet s7(l);
+ static_assert(std::is_same<decltype(s7), TSet<ComplexType>>::value);
+
+ // check TSet(std::initializer_list, size_t, Hasher)
+ TSet s8(l, 5, std::hash<ComplexType>());
+ static_assert(std::is_same<decltype(s8), TSet<ComplexType, std::hash<ComplexType>>>::value);
+
+ // check TSet(std::initializer_list, size_t, Hasher, Equality)
+ TSet s9(l, 5, std::hash<ComplexType>(), std::less<ComplexType>());
+ static_assert(std::is_same<decltype(s9), TSet<ComplexType, std::hash<ComplexType>,
+ std::less<ComplexType>>>::value);
+
+ // check TSet(std::initializer_list, size_t, Hasher, Equality, Allocator)
+ TSet s10(l, 5, std::hash<ComplexType>(), std::less<ComplexType>(), std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s10), TSet<ComplexType, std::hash<ComplexType>,
+ std::less<ComplexType>, std::allocator<ComplexType>>>::value);
+
+ // check TSet(std::initializer_list, size_t, Allocator)
+ TSet s11(l, 5, std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s11), TSet<ComplexType, tbb::tbb_hash<ComplexType>,
+ std::equal_to<ComplexType>, std::allocator<ComplexType>>>::value);
+
+ // check TSet(std::initializer_list, size_t, Hasher, Allocator)
+ TSet s12(l, 5, std::hash<ComplexType>(), std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s12), TSet<ComplexType, std::hash<ComplexType>,
+ std::equal_to<ComplexType>, std::allocator<ComplexType>>>::value);
+
+ // check TSet(TSet &)
+ TSet s13(s1);
+ static_assert(std::is_same<decltype(s13), decltype(s1)>::value);
+
+ // check TSet(TSet &, Allocator)
+ TSet s14(s5, std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s14), decltype(s5)>::value);
+
+ // check TSet(TSet &&)
+ TSet s15(std::move(s1));
+ static_assert(std::is_same<decltype(s15), decltype(s1)>::value);
+
+ // check TSet(TSet &&, Allocator)
+ TSet s16(std::move(s5), std::allocator<ComplexType>());
+ static_assert(std::is_same<decltype(s16), decltype(s5)>::value);
+}
+#endif
+
#if !__TBB_TEST_SECONDARY
#define INITIALIZATION_TIME_TEST_NAMESPACE initialization_time_test
#define TEST_INITIALIZATION_TIME_OPERATIONS_NAME test_initialization_time_operations
TestTypes();
+#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
+ TestDeductionGuides<tbb::concurrent_unordered_set>();
+ TestDeductionGuides<tbb::concurrent_unordered_multiset>();
+#endif
+
return Harness::Done;
}
#endif //#if !__TBB_TEST_SECONDARY
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
// cross-allocator tests
#if !defined(_WIN64) || defined(_CPPLIB_VER)
typedef local_counting_allocator<std::allocator<int>, size_t> allocator1_t;
- typedef tbb::cache_aligned_allocator<void> allocator2_t;
+ typedef tbb::cache_aligned_allocator<int> allocator2_t;
typedef tbb::concurrent_vector<FooWithAssign, allocator1_t> V1;
typedef tbb::concurrent_vector<FooWithAssign, allocator2_t> V2;
V1 v1( v ); // checking cross-allocator copying
}
#endif
+// Currently testing compilation issues with polymorphic allocator, but concurrent_vector does not
+// provide full support yet.
+// TODO: extend test with full checking polymorphic_allocator with concurrent_vector
+void TestPMRSupport() {
+ typedef pmr_stateful_allocator<int> AType;
+ typedef tbb::concurrent_vector<int, AType> VType;
+ const int VEC_SIZE = 1000;
+
+ AType original_alloc;
+ VType c(original_alloc);
+
+ // General compilation test
+ for( int i = 0; i < VEC_SIZE; ++i ) {
+ c.push_back(i*i);
+ }
+ VType::const_iterator p = c.begin();
+ for( int i = 0; i < VEC_SIZE; ++i ) {
+ ASSERT( *p == i*i, NULL ); ++p;
+ }
+
+ // Check that swap is allocator aware
+ AType swap_alloc;
+ VType swap_container(swap_alloc); swap_container.swap(c);
+ ASSERT(c.get_allocator() != swap_container.get_allocator(), "Allocator was swapped, it shouldn't");
+
+#if __TBB_CPP11_RVALUE_REF_PRESENT
+ // Move assignment operator deleted, container is allocator aware
+ AType move_alloc;
+ VType move_container(move_alloc);
+ move_container = std::move(c);
+ ASSERT(c.get_allocator() != move_container.get_allocator(), "Allocator was moved, it shouldn't");
+#endif
+}
+
int TestMain () {
if( MinThread<1 ) {
REPORT("ERROR: MinThread=%d, but must be at least 1\n",MinThread); MinThread = 1;
#if __TBB_CPP17_DEDUCTION_GUIDES_PRESENT
TestDeductionGuides<tbb::concurrent_vector>();
#endif
+ TestPMRSupport();
+
ASSERT( !FooCount, NULL );
REMARK("sizeof(concurrent_vector<int>) == %d\n", (int)sizeof(tbb::concurrent_vector<int>));
return Harness::Done;
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include "harness_assert.h"
#include "harness_allocator.h"
#include "harness_state_trackable.h"
+
#include "tbb/atomic.h"
#include "tbb/aligned_space.h"
+#include "tbb/internal/_allocator_traits.h"
+
#include <stdexcept>
#include <string>
#include <functional>
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2018 Intel Corporation
+ Copyright (c) 2018-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
int my_task_index;
};
std::vector<TaskInfo> g_task_info;
-bool g_work_submitted = false;
+tbb::atomic<bool> g_work_submitted;
const unsigned node_num = 100;
const unsigned start_index = node_num / 3;
if( !found_min || !found_max )
++internal_order_failures;
for( unsigned i = 0; i < g_priority_task_index; ++i ) {
+ // This check might fail because priorities do not guarantee ordering, i.e. assumption
+ // that all priority nodes should increment the task counter before any subsequent
+ // no-priority node is not correct. In the worst case, a thread that took a priority
+ // node might be preempted and become the last to increment the counter. That's why the
+ // test passing is based on statistics, which could be affected by machine overload
+ // unfortunately.
+ // TODO: make the test deterministic.
if( g_task_info[i].my_task_index > int(priority_nodes_num) + MaxThread )
++global_order_failures;
}
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
*/
#define TBB_PREVIEW_WAITING_FOR_WORKERS 1
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"
#include "harness.h"
#define TBB_PREVIEW_LOCAL_OBSERVER 1
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include "harness_inject_scheduler.h"
#include "harness.h"
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"
#include "tbb/task_scheduler_init.h"
#include "tbb/parallel_for.h"
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2017-2018 Intel Corporation
+ Copyright (c) 2017-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#include "tbb/tbb_config.h"
-#if __TBB_CPP11_PRESENT && __TBB_CPP11_DECLTYPE_PRESENT
+#if __TBB_CPP11_PRESENT
#include "tbb/iterators.h"
+#include "tbb/tbb_stddef.h"
#include <vector>
#include <iostream>
//common checks of a random access iterator functionality
template <typename RandomIt>
void test_random_iterator(const RandomIt& it) {
+ // check that RandomIt has all necessary publicly accessible member types
+ {
+ typename RandomIt::difference_type{};
+ typename RandomIt::value_type{};
+ typename RandomIt::reference ref = *it;
+ tbb::internal::suppress_unused_warning(ref);
+ typename RandomIt::pointer{};
+ typename RandomIt::iterator_category{};
+ }
+
ASSERT( it == it, "== returned false negative");
ASSERT(!(it == it + 1), "== returned false positive");
ASSERT( it != it + 1, "!= returned false negative");
ASSERT((0 <= begin) && (begin <= end) && (end <= IntType(in.size())),
"incorrect test_counting_iterator 'begin' and/or 'end' argument values");
- auto b = tbb::counting_iterator<IntType>(begin);
+ //test that counting_iterator is default constructible
+ tbb::counting_iterator<IntType> b;
+
+ b = tbb::counting_iterator<IntType>(begin);
auto e = tbb::counting_iterator<IntType>(end);
//checks in using
struct test_zip_iterator {
template <typename T1, typename T2>
void operator()(std::vector<T1>& in1, std::vector<T2>& in2) {
- auto b = tbb::make_zip_iterator(in1.begin(), in2.begin());
+ //test that zip_iterator is default constructible
+ tbb::zip_iterator<decltype(in1.begin()), decltype(in2.begin())> b;
+
+ b = tbb::make_zip_iterator(in1.begin(), in2.begin());
auto e = tbb::make_zip_iterator(in1.end(), in2.end());
//checks in using
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
using namespace std;
#endif
#include <string>
+#include <set>
+#include <sstream>
#endif
#include "../tbbmalloc/shared_utils.h" // alignDown, alignUp, estimatedCacheLineSize
delete []s4;
}
+#if MALLOC_WINDOWS_OVERLOAD_ENABLED
+void FuncReplacementInfoCheck() {
+ char **func_replacement_log;
+ int func_replacement_status = TBB_malloc_replacement_log(&func_replacement_log);
+
+ std::set<std::string> functions;
+ functions.insert("free");
+ functions.insert("_msize");
+ functions.insert("_aligned_free");
+ functions.insert("_aligned_msize");
+
+ int status_check = 0;
+ for (char** log_string = func_replacement_log; *log_string != 0; log_string++) {
+ std::stringstream s(*log_string);
+ std::string status, function_name;
+ s >> status >> function_name;
+
+ if (status.find("Fail:") != status.npos) {
+ status_check = -1;
+ }
+
+ functions.erase(function_name);
+ }
+
+ ASSERT(functions.empty(), "Changed opcodes log must contain all required functions with \"Success\" changed status");
+ ASSERT(func_replacement_status == status_check, "replacement_opcodes_log() function return wrong status");
+
+ func_replacement_status = TBB_malloc_replacement_log(NULL);
+ ASSERT(func_replacement_status == status_check, "replacement_opcodes_log() function return wrong status");
+
+ ASSERT_WARNING(func_replacement_status == 0, "Some standart allocation functions was not replaced to tbb_malloc functions.");
+}
+#endif // MALLOC_WINDOWS_OVERLOAD_ENABLED
+
int TestMain() {
void *ptr = NULL;
ASSERT(is_aligned(ptr, 16), NULL);
_aligned_free(ptr1);
+ FuncReplacementInfoCheck();
+
#endif
CheckFreeAligned();
/*
- Copyright (c) 2018 Intel Corporation
+ Copyright (c) 2018-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
PoolIdentityCheck check(pools, objs);
if( k&1 )
NativeParallelFor( POOLS, check);
- else
+ else
for (int i=0; i<POOLS; i++) check(i);
for (int i=0; i<POOLS; i++) {
"expect pool_destroy() failure");
}
+void TestPoolMSize() {
+ rml::MemoryPool *pool = CreateUsablePool(1024);
+
+ const int SZ = 10;
+ // Original allocation requests, random numbers from small to large
+ size_t requestedSz[SZ] = {8, 16, 500, 1000, 2000, 4000, 8000, 1024*1024, 4242+4242, 8484+8484};
+ // Unlike large objects, small objects do not store its original size along with the object itself
+ size_t allocatedSz[SZ] = {8, 16, 512, 1024, 2688, 4032, 8128, 1024*1024, 4242+4242, 8484+8484};
+
+ for (int i = 0; i < SZ; i++) {
+ void* obj = pool_malloc(pool, requestedSz[i]);
+ size_t objSize = pool_msize(pool, obj);
+ ASSERT(objSize == allocatedSz[i], "pool_msize returned the wrong value");
+ pool_free(pool, obj);
+ }
+ bool destroyed = pool_destroy(pool);
+ ASSERT(destroyed, NULL);
+}
+
int TestMain () {
TestTooSmallBuffer();
TestPoolReset();
TestLazyBootstrap();
TestNoLeakOnDestroy();
TestDestroyFailed();
+ TestPoolMSize();
return Harness::Done;
}
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
size_t reallocSize = (startSize / 2) - 1000; // exact realloc
while(reallocSize > maxBinnedSize) {
- // Prevent huge/large objects caching
+ // Prevent huge/large objects caching
defaultMemPool->extMemPool.loc.cleanAll();
// Prevent local large object caching
TLSData *tls = defaultMemPool->getTLS(/*create=*/false);
/* TODO: Decreasing reallocation of large objects that fit backend cache */
/* TODO: Small objects decreasing reallocation test */
}
+#if !__TBB_WIN8UI_SUPPORT && defined(_WIN32)
+
+#include "../src/tbbmalloc/tbb_function_replacement.cpp"
+
+namespace FunctionReplacement {
+ FunctionInfo funcInfo = { "funcname","dllname" };
+ char **func_replacement_log;
+ int status;
+
+ void TestEmptyLog() {
+ status = TBB_malloc_replacement_log(&func_replacement_log);
+
+ ASSERT(status == -1, "Status is true, but log is empty");
+ ASSERT(*func_replacement_log == NULL, "There was no replacement, but log is not empty ");
+ }
+
+ void TestLogOverload() {
+ for (int i = 0; i < 1000; i++)
+ Log::record(funcInfo, "opcode string", true);
+
+ status = TBB_malloc_replacement_log(&func_replacement_log);
+ // Find last record
+ for (; *(func_replacement_log + 1) != 0; func_replacement_log++) {}
+
+ std::string last_line(*func_replacement_log);
+ ASSERT(status == 0, "False status, but all replacements is correct");
+ ASSERT(last_line.compare("Log was truncated.") == 0, "Log overflow was not handled");
+ }
+
+ void TestFalseStatusAfterLogOverload() {
+ // Insert false status after log overload
+ Log::record(funcInfo, "opcode string", false);
+
+ status = TBB_malloc_replacement_log(NULL);
+
+ ASSERT(status == -1, "Status is true, but we have false replacement case");
+ }
+}
+
+void TesFunctionReplacementLog() {
+ using namespace FunctionReplacement;
+ // Do not reorder the test cases
+ TestEmptyLog();
+ TestLogOverload();
+ TestFalseStatusAfterLogOverload();
+}
+
+#endif /*!__TBB_WIN8UI_SUPPORT && defined(_WIN32)*/
int TestMain () {
scalable_allocation_mode(USE_HUGE_PAGES, 0);
REMARK("Transparent Huge Pages is not supported on the system - skipped the test\n");
}
#endif
+
+
+#if !__TBB_WIN8UI_SUPPORT && defined(_WIN32)
+ TesFunctionReplacementLog();
+#endif
+
return Harness::Done;
}
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#define TBB_PREVIEW_LOCAL_OBSERVER 1
#define __TBB_EXTRA_DEBUG 1
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include <stdexcept>
#include <cstdlib>
}
}
//--------------------------------------------------//
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"
void TestSmallStackSize() {
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
tbb::parallel_for(tbb::blocked_range<int>(0, NUM_TASKS), Functor(barrier)); // auto
}
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"
int TestMain () {
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
return Harness::Done;
}
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#include "tbb/global_control.h"
int TestMain () {
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
#define TBB_PREVIEW_CONCURRENT_LRU_CACHE 1
#define TBB_PREVIEW_VARIADIC_PARALLEL_INVOKE 1
#define TBB_PREVIEW_FLOW_GRAPH_NODES 1
-#define TBB_PREVIEW_GLOBAL_CONTROL 1
#define TBB_PREVIEW_BLOCKED_RANGE_ND 1
#define TBB_PREVIEW_WAITING_FOR_WORKERS 1
#endif
TestTypeDefinitionPresence2(blocked_rangeNd<int,4> );
#endif
TestTypeDefinitionPresence2(concurrent_lru_cache<int, int> );
- TestTypeDefinitionPresence( global_control );
#if !__TBB_TEST_SECONDARY
TestExceptionClassExports( std::runtime_error("test"), tbb::internal::eid_blocking_thread_join_impossible );
#endif
TestTypeDefinitionPresence( tbb_allocator<int> );
TestTypeDefinitionPresence( zero_allocator<int> );
TestTypeDefinitionPresence( tick_count );
+ TestTypeDefinitionPresence( global_control );
#if __TBB_CPP11_PRESENT
TestTypeDefinitionPresence( counting_iterator<int> );
TestTypeDefinitionPresence2(zip_iterator<int*,int*> );
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
void initialize_strings_vector(std::vector <string_pair>* vector)
{
vector->push_back(string_pair("TBB: VERSION\t\t2019.0", required)); // check TBB_VERSION
- vector->push_back(string_pair("TBB: INTERFACE VERSION\t11003", required)); // check TBB_INTERFACE_VERSION
+ vector->push_back(string_pair("TBB: INTERFACE VERSION\t11004", required)); // check TBB_INTERFACE_VERSION
vector->push_back(string_pair("TBB: BUILD_DATE", required));
vector->push_back(string_pair("TBB: BUILD_HOST", required));
vector->push_back(string_pair("TBB: BUILD_OS", required));
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
/*
- Copyright (c) 2005-2018 Intel Corporation
+ Copyright (c) 2005-2019 Intel Corporation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.