Date: Wed, 12 Mar 2014 19:52:04 +0000 (UTC) From: Ed Maste <emaste@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r263097 - in projects/uefi: contrib/libc++/include contrib/llvm/tools/clang/lib/CodeGen sys/net Message-ID: <201403121952.s2CJq4T2071572@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: emaste Date: Wed Mar 12 19:52:04 2014 New Revision: 263097 URL: http://svnweb.freebsd.org/changeset/base/263097 Log: Merge ^/head@262809 Sponsored by: The FreeBSD Foundation Modified: projects/uefi/contrib/libc++/include/__functional_03 projects/uefi/contrib/libc++/include/functional projects/uefi/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp projects/uefi/sys/net/route.c projects/uefi/sys/net/route.h Directory Properties: projects/uefi/ (props changed) projects/uefi/contrib/libc++/ (props changed) projects/uefi/contrib/llvm/ (props changed) projects/uefi/contrib/llvm/tools/clang/ (props changed) projects/uefi/sys/ (props changed) Modified: projects/uefi/contrib/libc++/include/__functional_03 ============================================================================== --- projects/uefi/contrib/libc++/include/__functional_03 Wed Mar 12 17:18:15 2014 (r263096) +++ projects/uefi/contrib/libc++/include/__functional_03 Wed Mar 12 19:52:04 2014 (r263097) @@ -33,28 +33,28 @@ public: // invoke typename __invoke_return<type>::type - operator() () + operator() () const { return __invoke(__f_); } template <class _A0> typename __invoke_return0<type, _A0>::type - operator() (_A0& __a0) + operator() (_A0& __a0) const { return __invoke(__f_, __a0); } template <class _A0, class _A1> typename __invoke_return1<type, _A0, _A1>::type - operator() (_A0& __a0, _A1& __a1) + operator() (_A0& __a0, _A1& __a1) const { return __invoke(__f_, __a0, __a1); } template <class _A0, class _A1, class _A2> typename __invoke_return2<type, _A0, _A1, _A2>::type - operator() (_A0& __a0, _A1& __a1, _A2& __a2) + operator() (_A0& __a0, _A1& __a1, _A2& __a2) const { return __invoke(__f_, __a0, __a1, __a2); } Modified: projects/uefi/contrib/libc++/include/functional ============================================================================== --- projects/uefi/contrib/libc++/include/functional Wed Mar 12 17:18:15 2014 (r263096) +++ projects/uefi/contrib/libc++/include/functional Wed Mar 12 19:52:04 2014 (r263097) @@ -1221,7 +1221,7 @@ public: template <class... _ArgTypes> _LIBCPP_INLINE_VISIBILITY typename __invoke_return<type, _ArgTypes...>::type - operator() (_ArgTypes&&... __args) + operator() (_ArgTypes&&... __args) const { return __invoke(__f_, _VSTD::forward<_ArgTypes>(__args)...); } Modified: projects/uefi/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp ============================================================================== --- projects/uefi/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp Wed Mar 12 17:18:15 2014 (r263096) +++ projects/uefi/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp Wed Mar 12 19:52:04 2014 (r263097) @@ -92,7 +92,13 @@ bool CodeGenModule::TryEmitBaseDestructo if (!ClassLayout.getBaseClassOffset(UniqueBase).isZero()) return true; + // Give up if the calling conventions don't match. We could update the call, + // but it is probably not worth it. const CXXDestructorDecl *BaseD = UniqueBase->getDestructor(); + if (BaseD->getType()->getAs<FunctionType>()->getCallConv() != + D->getType()->getAs<FunctionType>()->getCallConv()) + return true; + return TryEmitDefinitionAsAlias(GlobalDecl(D, Dtor_Base), GlobalDecl(BaseD, Dtor_Base), false); Modified: projects/uefi/sys/net/route.c ============================================================================== --- projects/uefi/sys/net/route.c Wed Mar 12 17:18:15 2014 (r263096) +++ projects/uefi/sys/net/route.c Wed Mar 12 19:52:04 2014 (r263097) @@ -237,6 +237,14 @@ rtentry_ctor(void *mem, int size, void * } static void +rtentry_dtor(void *mem, int size, void *arg) +{ + struct rtentry *rt = mem; + + RT_UNLOCK_COND(rt); +} + +static void vnet_route_init(const void *unused __unused) { struct domain *dom; @@ -248,7 +256,7 @@ vnet_route_init(const void *unused __unu sizeof(struct radix_node_head *), M_RTABLE, M_WAITOK|M_ZERO); V_rtzone = uma_zcreate("rtentry", sizeof(struct rtentry), - rtentry_ctor, NULL, + rtentry_ctor, rtentry_dtor, rtentry_zinit, rtentry_zfini, UMA_ALIGN_PTR, 0); for (dom = domains; dom; dom = dom->dom_next) { if (dom->dom_rtattach == NULL) Modified: projects/uefi/sys/net/route.h ============================================================================== --- projects/uefi/sys/net/route.h Wed Mar 12 17:18:15 2014 (r263096) +++ projects/uefi/sys/net/route.h Wed Mar 12 19:52:04 2014 (r263097) @@ -309,6 +309,10 @@ struct rt_addrinfo { #define RT_UNLOCK(_rt) mtx_unlock(&(_rt)->rt_mtx) #define RT_LOCK_DESTROY(_rt) mtx_destroy(&(_rt)->rt_mtx) #define RT_LOCK_ASSERT(_rt) mtx_assert(&(_rt)->rt_mtx, MA_OWNED) +#define RT_UNLOCK_COND(_rt) do { \ + if (mtx_owned(&(_rt)->rt_mtx)) \ + mtx_unlock(&(_rt)->rt_mtx); \ +} while (0) #define RT_ADDREF(_rt) do { \ RT_LOCK_ASSERT(_rt); \
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201403121952.s2CJq4T2071572>