#include "MagickCore/cache-private.h"
#include "MagickCore/cache-view.h"
#include "MagickCore/memory_.h"
+#include "MagickCore/memory-private.h"
#include "MagickCore/exception.h"
#include "MagickCore/exception-private.h"
#include "MagickCore/pixel-accessor.h"
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
(void) exception;
- cache_view=(CacheView *) AcquireAlignedMemory(1,sizeof(*cache_view));
+ cache_view=(CacheView *) MagickAssumeAligned(AcquireAlignedMemory(1,
+ sizeof(*cache_view)));
if (cache_view == (CacheView *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(cache_view,0,sizeof(*cache_view));
if (cache_view->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
cache_view->image->filename);
- clone_view=(CacheView *) AcquireAlignedMemory(1,sizeof(*clone_view));
+ clone_view=(CacheView *) MagickAssumeAligned(AcquireAlignedMemory(1,
+ sizeof(*clone_view)));
if (clone_view == (CacheView *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(clone_view,0,sizeof(*clone_view));
register ssize_t
i;
- nexus_info=(NexusInfo **) AcquireAlignedMemory(number_threads,
- sizeof(*nexus_info));
+ nexus_info=(NexusInfo **) MagickAssumeAligned(AcquireAlignedMemory(
+ number_threads,sizeof(*nexus_info)));
if (nexus_info == (NexusInfo **) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
nexus_info[0]=(NexusInfo *) AcquireQuantumMemory(number_threads,
static inline void AllocatePixelCachePixels(CacheInfo *cache_info)
{
cache_info->mapped=MagickFalse;
- cache_info->pixels=(Quantum *) AcquireAlignedMemory(1,(size_t)
- cache_info->length);
+ cache_info->pixels=(Quantum *) MagickAssumeAligned(AcquireAlignedMemory(1,
+ (size_t) cache_info->length));
if (cache_info->pixels == (Quantum *) NULL)
{
cache_info->mapped=MagickTrue;
if (nexus_info->length != (MagickSizeType) ((size_t) nexus_info->length))
return(MagickFalse);
nexus_info->mapped=MagickFalse;
- nexus_info->cache=(Quantum *) AcquireAlignedMemory(1,(size_t)
- nexus_info->length);
+ nexus_info->cache=(Quantum *) MagickAssumeAligned(AcquireAlignedMemory(1,
+ (size_t) nexus_info->length));
if (nexus_info->cache == (Quantum *) NULL)
{
nexus_info->mapped=MagickTrue;
#include "MagickCore/list.h"
#include "MagickCore/log.h"
#include "MagickCore/memory_.h"
+#include "MagickCore/memory-private.h"
#include "MagickCore/monitor.h"
#include "MagickCore/monitor-private.h"
#include "MagickCore/montage.h"
Create a set of kernels from maximum (radius,sigma) to minimum.
*/
width=GetOptimalKernelWidth2D(radius,sigma);
- kernel=(MagickRealType **) AcquireAlignedMemory((size_t) width,
- sizeof(*kernel));
+ kernel=(MagickRealType **) MagickAssumeAligned(AcquireAlignedMemory((size_t)
+ width,sizeof(*kernel)));
if (kernel == (MagickRealType **) NULL)
{
edge_image=DestroyImage(edge_image);
(void) ResetMagickMemory(kernel,0,(size_t) width*sizeof(*kernel));
for (i=0; i < (ssize_t) width; i+=2)
{
- kernel[i]=(MagickRealType *) AcquireAlignedMemory((size_t) (width-i),
- (width-i)*sizeof(**kernel));
+ kernel[i]=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory(
+ (size_t) (width-i),(width-i)*sizeof(**kernel)));
if (kernel[i] == (MagickRealType *) NULL)
break;
normalize=0.0;
Create a set of kernels from maximum (radius,sigma) to minimum.
*/
width=GetOptimalKernelWidth2D(radius,sigma);
- kernel=(MagickRealType **) AcquireAlignedMemory((size_t) width,
- sizeof(*kernel));
+ kernel=(MagickRealType **) MagickAssumeAligned(AcquireAlignedMemory((size_t)
+ width,sizeof(*kernel)));
if (kernel == (MagickRealType **) NULL)
{
edge_image=DestroyImage(edge_image);
(void) ResetMagickMemory(kernel,0,(size_t) width*sizeof(*kernel));
for (i=0; i < (ssize_t) width; i+=2)
{
- kernel[i]=(MagickRealType *) AcquireAlignedMemory((size_t) (width-i),
- (width-i)*sizeof(**kernel));
+ kernel[i]=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory(
+ (size_t) (width-i),(width-i)*sizeof(**kernel)));
if (kernel[i] == (double *) NULL)
break;
normalize=0.0;
Generate a 1-D convolution kernel.
*/
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- kernel=(MagickRealType *) AcquireAlignedMemory((size_t) width,
- sizeof(*kernel));
+ kernel=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory((size_t)
+ width,sizeof(*kernel)));
if (kernel == (MagickRealType *) NULL)
return(0);
normalize=0.0;
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
kernel_info->width=width;
kernel_info->height=width;
- kernel_info->values=(MagickRealType *) AcquireAlignedMemory(
- kernel_info->width,kernel_info->width*sizeof(*kernel_info->values));
+ kernel_info->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel_info->width,kernel_info->width*
+ sizeof(*kernel_info->values)));
if (kernel_info->values == (MagickRealType *) NULL)
{
kernel_info=DestroyKernelInfo(kernel_info);
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
kernel_info->width=width;
kernel_info->height=width;
- kernel_info->values=(MagickRealType *) AcquireAlignedMemory(
- kernel_info->width,kernel_info->width*sizeof(*kernel_info->values));
+ kernel_info->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel_info->width,kernel_info->width*
+ sizeof(*kernel_info->values)));
if (kernel_info->values == (MagickRealType *) NULL)
{
kernel_info=DestroyKernelInfo(kernel_info);
kernel_info->width=width;
kernel_info->height=width;
kernel_info->signature=MagickSignature;
- kernel_info->values=(MagickRealType *) AcquireAlignedMemory(
- kernel_info->width,kernel_info->width*sizeof(*kernel_info->values));
+ kernel_info->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel_info->width,kernel_info->width*
+ sizeof(*kernel_info->values)));
if (kernel_info->values == (MagickRealType *) NULL)
{
kernel_info=DestroyKernelInfo(kernel_info);
Generate a 1-D convolution kernel.
*/
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- kernel=(MagickRealType *) AcquireAlignedMemory((size_t) width,
- sizeof(*kernel));
+ kernel=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory((size_t)
+ width,sizeof(*kernel)));
if (kernel == (MagickRealType *) NULL)
return(kernel);
normalize=0.0;
assert(exception != (ExceptionInfo *) NULL);
assert(exception->signature == MagickSignature);
width=GetOptimalKernelWidth1D(radius,sigma);
- kernel=(MagickRealType *) AcquireAlignedMemory((size_t) width,width*
- sizeof(*kernel));
+ kernel=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory((size_t)
+ width,width*sizeof(*kernel)));
if (kernel == (MagickRealType *) NULL)
ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
j=(ssize_t) width/2;
kernel_info->width=width;
kernel_info->height=width;
kernel_info->signature=MagickSignature;
- kernel_info->values=(MagickRealType *) AcquireAlignedMemory(
- kernel_info->width,kernel_info->width*sizeof(*kernel_info->values));
+ kernel_info->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel_info->width,kernel_info->width*
+ sizeof(*kernel_info->values)));
if (kernel_info->values == (MagickRealType *) NULL)
{
kernel_info=DestroyKernelInfo(kernel_info);
extern "C" {
#endif
+
#if defined(MAGICK_TARGET_CPU) && (MAGICK_TARGET_CPU == powerpc)
-# define CACHE_LINE_SIZE (16*sizeof(void *))
+# define CACHE_LINE_SIZE 128
#else
-# define CACHE_LINE_SIZE (8*sizeof(void *))
+# define CACHE_LINE_SIZE 64
#endif
+
#define CacheAlign(size) ((size) < CACHE_LINE_SIZE ? CACHE_LINE_SIZE : (size))
+#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR > 6))
+#define MagickAssumeAligned(address) \
+ __builtin_assume_aligned((address),CACHE_LINE_SIZE)
+#else
+#define MagickAssumeAligned(address) (address)
+#endif
+
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
#include "MagickCore/list.h"
#include "MagickCore/magick.h"
#include "MagickCore/memory_.h"
+#include "MagickCore/memory-private.h"
#include "MagickCore/monitor-private.h"
#include "MagickCore/morphology.h"
#include "MagickCore/morphology-private.h"
}
/* Read in the kernel values from rest of input string argument */
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(AcquireAlignedMemory(
+ kernel->width,kernel->height*sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->minimum = +MagickHuge;
{
kernel->height = kernel->width = (size_t) 1;
kernel->x = kernel->y = (ssize_t) 0;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(1,
- sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(1,sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->maximum = kernel->values[0] = args->rho;
kernel->width = GetOptimalKernelWidth2D(args->rho,sigma2);
kernel->height = kernel->width;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->x = (ssize_t) (kernel->width-1)/2;
kernel->y = 0;
kernel->negative_range = kernel->positive_range = 0.0;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->x = kernel->y = 0;
kernel->height = 1;
kernel->negative_range = kernel->positive_range = 0.0;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
order_f = fact(kernel->width-1);
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->y = (ssize_t) args->psi;
scale = 1.0;
}
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = (size_t)fabs(args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->height = kernel->width;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
kernel->width = kernel->height = ((size_t)args->rho)*2+1;
kernel->x = kernel->y = (ssize_t) (kernel->width-1)/2;
- kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*
+ sizeof(*kernel->values)));
if (kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(kernel));
*new_kernel=(*kernel); /* copy values in structure */
/* replace the values with a copy of the values */
- new_kernel->values=(MagickRealType *) AcquireAlignedMemory(kernel->width,
- kernel->height*sizeof(*kernel->values));
+ new_kernel->values=(MagickRealType *) MagickAssumeAligned(
+ AcquireAlignedMemory(kernel->width,kernel->height*sizeof(*kernel->values)));
if (new_kernel->values == (MagickRealType *) NULL)
return(DestroyKernelInfo(new_kernel));
for (i=0; i < (ssize_t) (kernel->width*kernel->height); i++)
#include "MagickCore/image-private.h"
#include "MagickCore/list.h"
#include "MagickCore/memory_.h"
+#include "MagickCore/memory-private.h"
#include "MagickCore/magick.h"
#include "MagickCore/pixel-accessor.h"
#include "MagickCore/property.h"
(void) ResetMagickMemory(contribution,0,number_threads*sizeof(*contribution));
for (i=0; i < (ssize_t) number_threads; i++)
{
- contribution[i]=(ContributionInfo *) AcquireAlignedMemory(count,
- sizeof(**contribution));
+ contribution[i]=(ContributionInfo *) MagickAssumeAligned(
+ AcquireAlignedMemory(count,sizeof(**contribution)));
if (contribution[i] == (ContributionInfo *) NULL)
return(DestroyContributionThreadSet(contribution));
}
#include "MagickCore/exception-private.h"
#include "MagickCore/geometry.h"
#include "MagickCore/memory_.h"
+#include "MagickCore/memory-private.h"
#include "MagickCore/pixel.h"
#include "MagickCore/pixel-accessor.h"
#include "MagickCore/quantum.h"
if (stream_info == (StreamInfo *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(stream_info,0,sizeof(*stream_info));
- stream_info->pixels=(unsigned char *) AcquireAlignedMemory(1,
- sizeof(*stream_info->pixels));
+ stream_info->pixels=(unsigned char *) MagickAssumeAligned(
+ AcquireAlignedMemory(1,sizeof(*stream_info->pixels)));
if (stream_info->pixels == (unsigned char *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
stream_info->map=ConstantString("RGB");