Changeset f8519e in git for Singular/mmalloc.c


Ignore:
Timestamp:
Jan 26, 1999, 3:41:42 PM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38dfc5131670d387a89455159ed1e071997eec94')
Children:
b6285e707366fbd4f332d38d696bd74910bcbe9e
Parents:
8e012379f6186bcc208b49f8710913df381eb5e3
Message:
* added AllocAligned & FreeAligned


git-svn-id: file:///usr/local/Singular/svn/trunk@2816 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/mmalloc.c

    r8e0123 rf8519e  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mmalloc.c,v 1.10 1999-01-18 17:28:05 Singular Exp $ */
     4/* $Id: mmalloc.c,v 1.11 1999-01-26 14:41:38 obachman Exp $ */
    55
    66/*
     
    2222#include "mmprivate.h"
    2323
     24#undef HAVE_ASSUME
     25#define HAVE_ASSUME
    2426
    2527#ifndef MDEBUG
     
    166168
    167169#else /* MDEBUG */
    168 
    169 /**********************************************************************
    170  *
    171  * Auxillary routines
    172  *
    173  **********************************************************************/
    174 static void mmMoveDBMCB ( pDBMCB from, pDBMCB to, DBMCB * what )
    175 {
    176   what->prev->next = what->next;
    177   if ( what->next != NULL )
    178     what->next->prev = what->prev;
    179   what->prev = to;
    180   what->next = to->next;
    181   if (to->next!=NULL)
    182     to->next->prev=what;
    183   to->next = what;
    184 }
    185 
    186 static void mmMoveDBMCBInto ( pDBMCB to, pDBMCB what )
    187 {
    188   if (to->next !=NULL)
    189   {
    190     what->next = to->next;
    191     what->next->prev = what;
    192   }
    193   to->next = what;
    194   what->prev = to;
    195 }
    196 
    197 static void mmTakeOutDBMCB ( pDBMCB from, pDBMCB what )
    198 {
    199   what->prev->next = what->next;
    200   if ( what->next != NULL )
    201     what->next->prev = what->prev;
    202 }
    203 
    204 void mmDBInitNewHeapPage(memHeap heap)
    205 {
    206   DBMCB* what = (DBMCB*) heap->current;
    207   DBMCB* prev = NULL;
    208   size_t size = SizeFromRealSize(heap->size);
    209  
    210   if (mm_minAddr == 0 || mm_minAddr > (void*) what)
    211     mm_minAddr = (void*) what;
    212 
    213   while (what != NULL)
    214   {
    215     mmFillDBMCB(what, size, heap, MM_FREEFLAG, __FILE__, __LINE__);   
    216     mmMoveDBMCBInto(&mm_theDBfree, what);
    217     prev = what;
    218     what = *((void**) what);
    219   }
    220  
    221   if (mm_maxAddr == 0 || mm_maxAddr < (void*) prev)
    222     mm_maxAddr = (void*) prev;
    223 }
    224170
    225171/**********************************************************************
     
    361307    }
    362308    mm_bytesMalloc -= tmpsize;
    363     mmTakeOutDBMCB( &mm_theDBused, what );
     309    mmTakeOutDBMCB(what );
    364310    free( what );
    365311    if (BVERBOSE(V_SHOW_MEM)) mmCheckPrint();
     
    458404#if SIZEOF_DOUBLE == SIZEOF_VOIDP + SIZEOF_VOIDP
    459405
    460 #if 0
    461406#ifdef MDEBUG
    462407void * mmDBAllocAlignedBlock( size_t size, char* f, int l)   
     
    470415  {
    471416#ifdef MDEBUG
    472     unsigned long ret = (unsigned long) _mmDBAllocBlock(size + 9, f, l);
    473 #else
    474     unsigned long ret = (unsigned long) _mmAllocBlock(size+SIZEOF_DOUBLE+1);
     417    unsigned long ret =
     418      (unsigned long) mmDBAllocBlock(size + SIZEOF_DOUBLE + 1, f, l);
     419#else
     420    unsigned long ret =
     421      (unsigned long) mmAllocBlock(size+SIZEOF_DOUBLE+1);
    475422#endif
    476423    unsigned char shift = (ret + 1) & (SIZEOF_DOUBLE - 1);
     
    478425
    479426    assume(ret != 0);
    480 
    481     return (void*) ((ret + 1) & ~(SIZEOF_DOUBLE - 1));
     427    ret = ((ret + 1) & ~(SIZEOF_DOUBLE - 1));
     428
     429    assume(ret % SIZEOF_DOUBLE == 0);
     430
     431    return (void*) ret;
    482432  }
    483433  else
     
    537487  void* good;
    538488#ifdef MDEBUG
    539   good = mmDBAllocBlock(size, f, l);
    540 #else
    541   good = mmAllocBlock(size);
     489  good = mmDBAllocAllignedBlock(size, f, l);
     490#else
     491  good = mmAllocAlignedBlock(size);
    542492#endif
    543493 
     
    554504{
    555505  int i = mmGetIndex(size);
     506
     507  assume((unsigned long) addr % SIZEOF_DOUBLE == 0);
    556508 
    557509  if (i < 0)
     
    561513
    562514#ifdef MDEBUG   
    563     _mmDBFreeBlock(adj_addr - shift, size + SIZEOF_DOUBLE + 1, f, l);
    564 #else
    565     _mmFreeBlock(adj_addr - shift, size + SIZEOF_DOUBLE + 1);
     515    mmDBFreeBlock(adj_addr - shift, size + SIZEOF_DOUBLE + 1, f, l);
     516#else
     517    mmFreeBlock(adj_addr - shift, size + SIZEOF_DOUBLE + 1);
    566518#endif
    567519  }
     
    575527  }
    576528}
    577 #endif
    578529
    579530#endif /* SIZEOF_DOUBLE == SIZEOF_VOIDP + SIZEOF_VOIDP */
Note: See TracChangeset for help on using the changeset viewer.