From f0cda9a3e4c29ed1e9b6177d7874b1489b13938f Mon Sep 17 00:00:00 2001 From: cristy Date: Thu, 19 Apr 2012 13:46:33 +0000 Subject: [PATCH] --- MagickCore/Makefile.am | 2 ++ MagickCore/memory-private.h | 32 ++++++++++++++++++++++++++++++++ MagickCore/memory.c | 14 +++----------- MagickCore/semaphore.c | 22 ++++++++++++++-------- MagickCore/version.h | 4 ++-- Makefile.in | 23 +++++++++++++---------- config/ImageMagick.rdf | 4 ++-- config/configure.xml | 4 ++-- configure | 2 +- 9 files changed, 71 insertions(+), 36 deletions(-) create mode 100644 MagickCore/memory-private.h diff --git a/MagickCore/Makefile.am b/MagickCore/Makefile.am index 87f3e23ea..ddaa0dbea 100644 --- a/MagickCore/Makefile.am +++ b/MagickCore/Makefile.am @@ -163,6 +163,7 @@ MAGICKCORE_BASE_SRCS = \ MagickCore/matrix-private.h \ MagickCore/memory.c \ MagickCore/memory_.h \ + MagickCore/memory-private.h \ MagickCore/method-attribute.h \ MagickCore/methods.h \ MagickCore/mime.c \ @@ -411,6 +412,7 @@ MAGICKCORE_NOINST_HDRS = \ MagickCore/magick-private.h \ MagickCore/magic-private.h \ MagickCore/matrix-private.h \ + MagickCore/memory-private.h \ MagickCore/methods-private.h \ MagickCore/mime-private.h \ MagickCore/mime-private.h \ diff --git a/MagickCore/memory-private.h b/MagickCore/memory-private.h new file mode 100644 index 000000000..d711a20dc --- /dev/null +++ b/MagickCore/memory-private.h @@ -0,0 +1,32 @@ +/* + Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization + dedicated to making software imaging solutions freely available. + + You may not use this file except in compliance with the License. + obtain a copy of the License at + + http://www.imagemagick.org/script/license.php + + 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. + + MagickCore private memory methods. +*/ +#ifndef _MAGICKCORE_MEMORY_PRIVATE_H +#define _MAGICKCORE_MEMORY_PRIVATE_H + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +#define CACHE_LINE_SIZE (16*sizeof(void *)) +#define CacheAlign(size) ((size) < CACHE_LINE_SIZE ? CACHE_LINE_SIZE : (size)) + +#if defined(__cplusplus) || defined(c_plusplus) +} +#endif + +#endif diff --git a/MagickCore/memory.c b/MagickCore/memory.c index 05e674fc1..b29ea0f35 100644 --- a/MagickCore/memory.c +++ b/MagickCore/memory.c @@ -59,6 +59,7 @@ #include "MagickCore/exception.h" #include "MagickCore/exception-private.h" #include "MagickCore/memory_.h" +#include "MagickCore/memory-private.h" #include "MagickCore/semaphore.h" #include "MagickCore/string_.h" @@ -70,7 +71,6 @@ #define BlockHeader(block) ((size_t *) (block)-1) #define BlockSize 4096 #define BlockThreshold 1024 -#define AlignedSize (16*sizeof(void *)) #define MaxBlockExponent 16 #define MaxBlocks ((BlockThreshold/(4*sizeof(size_t)))+MaxBlockExponent+1) #define MaxSegments 1024 @@ -186,14 +186,6 @@ static MagickBooleanType % o quantum: the number of bytes in each quantum. % */ - -static inline size_t MagickMax(const size_t x,const size_t y) -{ - if (x > y) - return(x); - return(y); -} - MagickExport void *AcquireAlignedMemory(const size_t count,const size_t quantum) { size_t @@ -210,11 +202,11 @@ MagickExport void *AcquireAlignedMemory(const size_t count,const size_t quantum) void *memory; - if (posix_memalign(&memory,AlignedSize,MagickMax(size,AlignedSize)) == 0) + if (posix_memalign(&memory,CACHE_LINE_SIZE,CacheAlign(size)) == 0) return(memory); } #endif - return(malloc(MagickMax(size,AlignedSize))); + return(malloc(CacheAlign(size))); } #if defined(MAGICKCORE_ZERO_CONFIGURATION_SUPPORT) diff --git a/MagickCore/semaphore.c b/MagickCore/semaphore.c index 2707fbdd1..3b3b4befa 100644 --- a/MagickCore/semaphore.c +++ b/MagickCore/semaphore.c @@ -45,6 +45,7 @@ #include "MagickCore/exception.h" #include "MagickCore/exception-private.h" #include "MagickCore/memory_.h" +#include "MagickCore/memory-private.h" #include "MagickCore/semaphore.h" #include "MagickCore/semaphore-private.h" #include "MagickCore/string_.h" @@ -122,25 +123,30 @@ MagickExport void AcquireSemaphoreInfo(SemaphoreInfo **semaphore_info) % */ -static inline size_t MagickMax(const size_t x,const size_t y) +static void *AcquireSemaphoreMemory(const size_t size) { - if (x > y) - return(x); - return(y); +#if defined(MAGICKCORE_HAVE_POSIX_MEMALIGN) + { + void + *memory; + + if (posix_memalign(&memory,CACHE_LINE_SIZE,CacheAlign(size)) == 0) + return(memory); + } +#endif + return(malloc(CacheAlign(size))); } MagickExport SemaphoreInfo *AllocateSemaphoreInfo(void) { -#define AlignedSize (16*sizeof(void *)) - SemaphoreInfo *semaphore_info; /* Allocate semaphore. */ - semaphore_info=(SemaphoreInfo *) malloc(MagickMax(sizeof(*semaphore_info), - AlignedSize)); + semaphore_info=(SemaphoreInfo *) AcquireSemaphoreMemory( + sizeof(*semaphore_info)); if (semaphore_info == (SemaphoreInfo *) NULL) ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); (void) ResetMagickMemory(semaphore_info,0,sizeof(SemaphoreInfo)); diff --git a/MagickCore/version.h b/MagickCore/version.h index a25b84a3a..f9935e7e6 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -27,14 +27,14 @@ extern "C" { */ #define MagickPackageName "ImageMagick" #define MagickCopyright "Copyright (C) 1999-2012 ImageMagick Studio LLC" -#define MagickSVNRevision "7544" +#define MagickSVNRevision "7561" #define MagickLibVersion 0x700 #define MagickLibVersionText "7.0.0" #define MagickLibVersionNumber 7,0,0 #define MagickLibAddendum "-0" #define MagickLibInterface 7 #define MagickLibMinInterface 7 -#define MagickReleaseDate "2012-04-18" +#define MagickReleaseDate "2012-04-19" #define MagickChangeDate "20110801" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/Makefile.in b/Makefile.in index 7a6bad30a..850dd43b9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -431,16 +431,17 @@ am__MagickCore_libMagickCore_la_SOURCES_DIST = \ MagickCore/magick-type.h MagickCore/magick.h \ MagickCore/matrix.c MagickCore/matrix.h \ MagickCore/matrix-private.h MagickCore/memory.c \ - MagickCore/memory_.h MagickCore/method-attribute.h \ - MagickCore/methods.h MagickCore/mime.c MagickCore/mime.h \ - MagickCore/module.c MagickCore/module.h MagickCore/monitor.c \ - MagickCore/monitor.h MagickCore/monitor-private.h \ - MagickCore/montage.c MagickCore/montage.h \ - MagickCore/morphology.c MagickCore/morphology.h \ - MagickCore/morphology-private.h MagickCore/nt-base.h \ - MagickCore/nt-base-private.h MagickCore/nt-feature.h \ - MagickCore/option.c MagickCore/option.h MagickCore/paint.c \ - MagickCore/paint.h MagickCore/pixel.c MagickCore/pixel.h \ + MagickCore/memory_.h MagickCore/memory-private.h \ + MagickCore/method-attribute.h MagickCore/methods.h \ + MagickCore/mime.c MagickCore/mime.h MagickCore/module.c \ + MagickCore/module.h MagickCore/monitor.c MagickCore/monitor.h \ + MagickCore/monitor-private.h MagickCore/montage.c \ + MagickCore/montage.h MagickCore/morphology.c \ + MagickCore/morphology.h MagickCore/morphology-private.h \ + MagickCore/nt-base.h MagickCore/nt-base-private.h \ + MagickCore/nt-feature.h MagickCore/option.c \ + MagickCore/option.h MagickCore/paint.c MagickCore/paint.h \ + MagickCore/pixel.c MagickCore/pixel.h \ MagickCore/pixel-accessor.h MagickCore/policy.c \ MagickCore/policy.h MagickCore/PreRvIcccm.c \ MagickCore/PreRvIcccm.h MagickCore/prepress.c \ @@ -4082,6 +4083,7 @@ MAGICKCORE_BASE_SRCS = \ MagickCore/matrix-private.h \ MagickCore/memory.c \ MagickCore/memory_.h \ + MagickCore/memory-private.h \ MagickCore/method-attribute.h \ MagickCore/methods.h \ MagickCore/mime.c \ @@ -4325,6 +4327,7 @@ MAGICKCORE_NOINST_HDRS = \ MagickCore/magick-private.h \ MagickCore/magic-private.h \ MagickCore/matrix-private.h \ + MagickCore/memory-private.h \ MagickCore/methods-private.h \ MagickCore/mime-private.h \ MagickCore/mime-private.h \ diff --git a/config/ImageMagick.rdf b/config/ImageMagick.rdf index d54a2b18e..040415b15 100644 --- a/config/ImageMagick.rdf +++ b/config/ImageMagick.rdf @@ -5,7 +5,7 @@ ImageMagick ImageMagick: convert, edit, and compose images. - 2012-04-18 + 2012-04-19 ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves. @@ -57,7 +57,7 @@ Examples of ImageMagick Usage shows how to use ImageMagick from the command-line stable - 2012-04-18 + 2012-04-19 7.0.0 -0 diff --git a/config/configure.xml b/config/configure.xml index 94778379b..d04e9a49d 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -10,8 +10,8 @@ - - + + diff --git a/configure b/configure index 43a67663a..d9af7edb6 100755 --- a/configure +++ b/configure @@ -3621,7 +3621,7 @@ MAGICK_LIBRARY_CURRENT_MIN=`expr $MAGICK_LIBRARY_CURRENT - $MAGICK_LIBRARY_AGE` MAGICK_LIBRARY_VERSION_INFO=$MAGICK_LIBRARY_CURRENT:$MAGICK_LIBRARY_REVISION:$MAGICK_LIBRARY_AGE -MAGICK_SVN_REVISION=7544 +MAGICK_SVN_REVISION=7561 -- 2.40.0