28#define AM_MEMORY_MANAGER
73#define ALIGN_TYPE double
196 fprintf(stderr,
"Freeing pool %d, total space = %ld\n",
200 lhdr_ptr = lhdr_ptr->hdr.next) {
201 fprintf(stderr,
" Large chunk used %ld\n",
202 (
long) lhdr_ptr->hdr.bytes_used);
206 shdr_ptr = shdr_ptr->
hdr.
next) {
207 fprintf(stderr,
" Small chunk used %ld free %ld\n",
222 cinfo->err->trace_level = 2;
224 ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, which);
263 size_t odd_bytes, min_request, slop;
276 ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);
279 while (hdr_ptr !=
NULL) {
282 prev_hdr_ptr = hdr_ptr;
287 if (hdr_ptr ==
NULL) {
290 if (prev_hdr_ptr ==
NULL)
311 if (prev_hdr_ptr ==
NULL)
314 prev_hdr_ptr->
hdr.
next = hdr_ptr;
318 data_ptr = (
char *) (hdr_ptr + 1);
323 return (
void *) data_ptr;
360 ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);
374 hdr_ptr->hdr.bytes_left = 0;
377 return (
void FAR *) (hdr_ptr + 1);
409 ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
410 if (ltemp < (
long) numrows)
413 rowsperchunk = numrows;
422 while (currow < numrows) {
423 rowsperchunk =
MIN(rowsperchunk, numrows - currow);
425 (
size_t) ((
size_t) rowsperchunk * (
size_t) samplesperrow
427 for (
i = rowsperchunk;
i > 0;
i--) {
457 ERREXIT(cinfo, JERR_WIDTH_OVERFLOW);
458 if (ltemp < (
long) numrows)
461 rowsperchunk = numrows;
470 while (currow < numrows) {
471 rowsperchunk =
MIN(rowsperchunk, numrows - currow);
473 (
size_t) ((
size_t) rowsperchunk * (
size_t) blocksperrow
475 for (
i = rowsperchunk;
i > 0;
i--) {
533 ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);
540 result->rows_in_array = numrows;
541 result->samplesperrow = samplesperrow;
542 result->maxaccess = maxaccess;
543 result->pre_zero = pre_zero;
563 ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);
570 result->rows_in_array = numrows;
571 result->blocksperrow = blocksperrow;
572 result->maxaccess = maxaccess;
573 result->pre_zero = pre_zero;
587 long space_per_minheight, maximum_space, avail_mem;
588 long minheights, max_minheights;
596 space_per_minheight = 0;
599 if (sptr->mem_buffer == NULL) {
600 space_per_minheight += (long) sptr->maxaccess *
601 (long) sptr->samplesperrow * SIZEOF(JSAMPLE);
602 maximum_space += (long) sptr->rows_in_array *
603 (long) sptr->samplesperrow * SIZEOF(JSAMPLE);
607 if (bptr->mem_buffer == NULL) {
608 space_per_minheight += (long) bptr->maxaccess *
609 (long) bptr->blocksperrow * SIZEOF(JBLOCK);
610 maximum_space += (long) bptr->rows_in_array *
611 (long) bptr->blocksperrow * SIZEOF(JBLOCK);
615 if (space_per_minheight <= 0)
626 if (avail_mem >= maximum_space)
627 max_minheights = 1000000000L;
629 max_minheights = avail_mem / space_per_minheight;
633 if (max_minheights <= 0)
640 if (sptr->mem_buffer ==
NULL) {
641 minheights = ((long) sptr->rows_in_array - 1L) / sptr->maxaccess + 1L;
642 if (minheights <= max_minheights) {
644 sptr->rows_in_mem = sptr->rows_in_array;
647 sptr->rows_in_mem = (
JDIMENSION) (max_minheights * sptr->maxaccess);
649 (
long) sptr->rows_in_array *
650 (
long) sptr->samplesperrow *
652 sptr->b_s_open =
TRUE;
655 sptr->samplesperrow, sptr->rows_in_mem);
657 sptr->cur_start_row = 0;
658 sptr->first_undef_row = 0;
664 if (bptr->mem_buffer ==
NULL) {
665 minheights = ((long) bptr->rows_in_array - 1L) / bptr->maxaccess + 1L;
666 if (minheights <= max_minheights) {
668 bptr->rows_in_mem = bptr->rows_in_array;
671 bptr->rows_in_mem = (
JDIMENSION) (max_minheights * bptr->maxaccess);
673 (
long) bptr->rows_in_array *
674 (
long) bptr->blocksperrow *
676 bptr->b_s_open =
TRUE;
679 bptr->blocksperrow, bptr->rows_in_mem);
681 bptr->cur_start_row = 0;
682 bptr->first_undef_row = 0;
693 long bytesperrow, file_offset, byte_count, rows, thisrow,
i;
696 file_offset = ptr->cur_start_row * bytesperrow;
698 for (
i = 0;
i < (long) ptr->rows_in_mem;
i += ptr->rowsperchunk) {
700 rows =
MIN((
long) ptr->rowsperchunk, (
long) ptr->rows_in_mem -
i);
702 thisrow = (long) ptr->cur_start_row +
i;
703 rows =
MIN(rows, (
long) ptr->first_undef_row - thisrow);
705 rows =
MIN(rows, (
long) ptr->rows_in_array - thisrow);
708 byte_count = rows * bytesperrow;
710 (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,
711 (
void FAR *) ptr->mem_buffer[
i],
712 file_offset, byte_count);
714 (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,
715 (
void FAR *) ptr->mem_buffer[
i],
716 file_offset, byte_count);
717 file_offset += byte_count;
726 long bytesperrow, file_offset, byte_count, rows, thisrow,
i;
728 bytesperrow = (long) ptr->blocksperrow *
SIZEOF(
JBLOCK);
729 file_offset = ptr->cur_start_row * bytesperrow;
731 for (
i = 0;
i < (long) ptr->rows_in_mem;
i += ptr->rowsperchunk) {
733 rows =
MIN((
long) ptr->rowsperchunk, (
long) ptr->rows_in_mem -
i);
735 thisrow = (long) ptr->cur_start_row +
i;
736 rows =
MIN(rows, (
long) ptr->first_undef_row - thisrow);
738 rows =
MIN(rows, (
long) ptr->rows_in_array - thisrow);
741 byte_count = rows * bytesperrow;
743 (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,
744 (
void FAR *) ptr->mem_buffer[
i],
745 file_offset, byte_count);
747 (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,
748 (
void FAR *) ptr->mem_buffer[
i],
749 file_offset, byte_count);
750 file_offset += byte_count;
767 if (end_row > ptr->rows_in_array ||
num_rows > ptr->maxaccess ||
768 ptr->mem_buffer ==
NULL)
769 ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
772 if (start_row < ptr->cur_start_row ||
773 end_row > ptr->cur_start_row+ptr->rows_in_mem) {
775 ERREXIT(cinfo, JERR_VIRTUAL_BUG);
778 do_sarray_io(cinfo, ptr, TRUE);
788 if (start_row > ptr->cur_start_row) {
789 ptr->cur_start_row = start_row;
794 ltemp = (long) end_row - (long) ptr->rows_in_mem;
797 ptr->cur_start_row = (JDIMENSION) ltemp;
809 if (
ptr->first_undef_row < end_row) {
810 if (ptr->first_undef_row < start_row) {
812 ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
813 undef_row = start_row;
815 undef_row = ptr->first_undef_row;
818 ptr->first_undef_row = end_row;
820 size_t bytesperrow = (size_t) ptr->samplesperrow * SIZEOF(JSAMPLE);
821 undef_row -= ptr->cur_start_row;
822 end_row -= ptr->cur_start_row;
823 while (undef_row < end_row) {
824 jzero_far((void FAR *) ptr->mem_buffer[undef_row], bytesperrow);
829 ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
836 return ptr->mem_buffer + (start_row -
ptr->cur_start_row);
852 if (end_row > ptr->rows_in_array ||
num_rows > ptr->maxaccess ||
853 ptr->mem_buffer ==
NULL)
854 ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
857 if (start_row < ptr->cur_start_row ||
858 end_row > ptr->cur_start_row+ptr->rows_in_mem) {
860 ERREXIT(cinfo, JERR_VIRTUAL_BUG);
863 do_barray_io(cinfo, ptr, TRUE);
873 if (start_row > ptr->cur_start_row) {
874 ptr->cur_start_row = start_row;
879 ltemp = (long) end_row - (long) ptr->rows_in_mem;
882 ptr->cur_start_row = (JDIMENSION) ltemp;
894 if (
ptr->first_undef_row < end_row) {
895 if (ptr->first_undef_row < start_row) {
897 ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
898 undef_row = start_row;
900 undef_row = ptr->first_undef_row;
903 ptr->first_undef_row = end_row;
905 size_t bytesperrow = (size_t) ptr->blocksperrow * SIZEOF(JBLOCK);
906 undef_row -= ptr->cur_start_row;
907 end_row -= ptr->cur_start_row;
908 while (undef_row < end_row) {
909 jzero_far((void FAR *) ptr->mem_buffer[undef_row], bytesperrow);
914 ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);
921 return ptr->mem_buffer + (start_row -
ptr->cur_start_row);
938 ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);
941 if (cinfo->err->trace_level > 1)
942 print_mem_stats(cinfo, pool_id);
970 while (lhdr_ptr !=
NULL) {
972 space_freed = lhdr_ptr->hdr.bytes_used +
973 lhdr_ptr->hdr.bytes_left +
977 lhdr_ptr = next_lhdr_ptr;
984 while (shdr_ptr !=
NULL) {
991 shdr_ptr = next_shdr_ptr;
1045 ERREXIT(cinfo, JERR_BAD_ALIGN_TYPE);
1063 ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 0);
1095 cinfo->mem = & mem->
pub;
1109 if (sscanf(memenv,
"%ld%c", &max_to_use, &ch) > 0) {
1110 if (ch ==
'm' || ch ==
'M')
1111 max_to_use *= 1000L;
pool_t pool
Definition Util.cpp:167
register unsigned i
Definition inflate.c:1575
static const char * name
Definition pugl.h:1582
#define ERREXIT(cinfo, code)
Definition jerror.h:205
#define ERREXIT1(cinfo, code, p1)
Definition jerror.h:208
#define SIZEOF(object)
Definition jinclude.h:83
union large_pool_struct FAR * large_pool_ptr
Definition jmemmgr.c:100
self_destruct(j_common_ptr cinfo)
Definition jmemmgr.c:1002
alloc_sarray(j_common_ptr cinfo, int pool_id, JDIMENSION samplesperrow, JDIMENSION numrows)
Definition jmemmgr.c:395
request_virt_sarray(j_common_ptr cinfo, int pool_id, boolean pre_zero, JDIMENSION samplesperrow, JDIMENSION numrows, JDIMENSION maxaccess)
Definition jmemmgr.c:523
access_virt_barray(j_common_ptr cinfo, jvirt_barray_ptr ptr, JDIMENSION start_row, JDIMENSION num_rows, boolean writable)
Definition jmemmgr.c:841
#define ALIGN_TYPE
Definition jmemmgr.c:73
union small_pool_struct * small_pool_ptr
Definition jmemmgr.c:89
union large_pool_struct large_pool_hdr
request_virt_barray(j_common_ptr cinfo, int pool_id, boolean pre_zero, JDIMENSION blocksperrow, JDIMENSION numrows, JDIMENSION maxaccess)
Definition jmemmgr.c:553
access_virt_sarray(j_common_ptr cinfo, jvirt_sarray_ptr ptr, JDIMENSION start_row, JDIMENSION num_rows, boolean writable)
Definition jmemmgr.c:756
union small_pool_struct small_pool_hdr
alloc_small(j_common_ptr cinfo, int pool_id, size_t sizeofobject)
Definition jmemmgr.c:257
my_memory_mgr * my_mem_ptr
Definition jmemmgr.c:140
static const size_t extra_pool_slop[JPOOL_NUMPOOLS]
Definition jmemmgr.c:247
do_barray_io(j_common_ptr cinfo, jvirt_barray_ptr ptr, boolean writing)
Definition jmemmgr.c:723
jinit_memory_mgr(j_common_ptr cinfo)
Definition jmemmgr.c:1028
free_pool(j_common_ptr cinfo, int pool_id)
Definition jmemmgr.c:930
out_of_memory(j_common_ptr cinfo, int which)
Definition jmemmgr.c:217
realize_virt_arrays(j_common_ptr cinfo)
Definition jmemmgr.c:583
#define MIN_SLOP
Definition jmemmgr.c:253
static const size_t first_pool_slop[JPOOL_NUMPOOLS]
Definition jmemmgr.c:241
do_sarray_io(j_common_ptr cinfo, jvirt_sarray_ptr ptr, boolean writing)
Definition jmemmgr.c:690
alloc_large(j_common_ptr cinfo, int pool_id, size_t sizeofobject)
Definition jmemmgr.c:342
alloc_barray(j_common_ptr cinfo, int pool_id, JDIMENSION blocksperrow, JDIMENSION numrows)
Definition jmemmgr.c:443
jpeg_get_large(j_common_ptr, size_t sizeofobject)
Definition jmemnobs.c:55
jpeg_open_backing_store(j_common_ptr cinfo, struct backing_store_struct *, long)
Definition jmemnobs.c:87
jpeg_mem_available(j_common_ptr, long, long max_bytes_needed, long)
Definition jmemnobs.c:73
jpeg_free_large(j_common_ptr, void FAR *object, size_t)
Definition jmemnobs.c:61
jpeg_free_small(j_common_ptr, void *object, size_t)
Definition jmemnobs.c:41
jpeg_get_small(j_common_ptr, size_t sizeofobject)
Definition jmemnobs.c:35
jpeg_mem_term(j_common_ptr)
Definition jmemnobs.c:106
jpeg_mem_init(j_common_ptr)
Definition jmemnobs.c:100
size_t sizeofobject
Definition jmemsys.h:49
#define MAX_ALLOC_CHUNK
Definition jmemsys.h:80
struct backing_store_struct backing_store_info
unsigned int JDIMENSION
Definition jmorecfg.h:171
char JSAMPLE
Definition jmorecfg.h:64
#define LOCAL(type)
Definition jmorecfg.h:186
#define METHODDEF(type)
Definition jmorecfg.h:184
int JSAMPARRAY int int num_rows
Definition jpegint.h:375
JBLOCK FAR * JBLOCKROW
Definition jpeglib.h:71
struct jpeg_common_struct * j_common_ptr
Definition jpeglib.h:261
#define JPOOL_NUMPOOLS
Definition jpeglib.h:750
#define JPP(arglist)
Definition jpeglib.h:818
JCOEF JBLOCK[DCTSIZE2]
Definition jpeglib.h:70
struct jvirt_barray_control * jvirt_barray_ptr
Definition jpeglib.h:753
JBLOCKROW * JBLOCKARRAY
Definition jpeglib.h:72
struct jvirt_sarray_control * jvirt_sarray_ptr
Definition jpeglib.h:752
JSAMPROW * JSAMPARRAY
Definition jpeglib.h:67
#define JPOOL_PERMANENT
Definition jpeglib.h:748
JSAMPLE FAR * JSAMPROW
Definition jpeglib.h:66
#define JPOOL_IMAGE
Definition jpeglib.h:749
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void arg jack_client_t jack_port_t port void func jack_client_t const char const char unsigned long flags const jack_port_t port jack_client_t jack_port_id_t port_id const jack_port_t const char port_name const jack_port_t port void * ptr
Definition juce_linux_JackAudio.cpp:79
long max_alloc_chunk
Definition jpeglib.h:802
long max_memory_to_use
Definition jpeglib.h:799
JDIMENSION rows_in_mem
Definition jmemmgr.c:171
boolean dirty
Definition jmemmgr.c:176
boolean pre_zero
Definition jmemmgr.c:175
JDIMENSION maxaccess
Definition jmemmgr.c:170
JDIMENSION rows_in_array
Definition jmemmgr.c:168
boolean b_s_open
Definition jmemmgr.c:177
backing_store_info b_s_info
Definition jmemmgr.c:179
JDIMENSION blocksperrow
Definition jmemmgr.c:169
JBLOCKARRAY mem_buffer
Definition jmemmgr.c:167
JDIMENSION first_undef_row
Definition jmemmgr.c:174
JDIMENSION rowsperchunk
Definition jmemmgr.c:172
JDIMENSION cur_start_row
Definition jmemmgr.c:173
jvirt_barray_ptr next
Definition jmemmgr.c:178
JDIMENSION first_undef_row
Definition jmemmgr.c:158
JDIMENSION rows_in_array
Definition jmemmgr.c:152
JDIMENSION samplesperrow
Definition jmemmgr.c:153
boolean pre_zero
Definition jmemmgr.c:159
JDIMENSION maxaccess
Definition jmemmgr.c:154
JDIMENSION cur_start_row
Definition jmemmgr.c:157
JDIMENSION rows_in_mem
Definition jmemmgr.c:155
backing_store_info b_s_info
Definition jmemmgr.c:163
JSAMPARRAY mem_buffer
Definition jmemmgr.c:151
boolean b_s_open
Definition jmemmgr.c:161
boolean dirty
Definition jmemmgr.c:160
JDIMENSION rowsperchunk
Definition jmemmgr.c:156
jvirt_sarray_ptr next
Definition jmemmgr.c:162
jvirt_barray_ptr virt_barray_list
Definition jmemmgr.c:129
small_pool_ptr small_list[JPOOL_NUMPOOLS]
Definition jmemmgr.c:120
struct jpeg_memory_mgr pub
Definition jmemmgr.c:117
JDIMENSION last_rowsperchunk
Definition jmemmgr.c:137
long total_space_allocated
Definition jmemmgr.c:132
jvirt_sarray_ptr virt_sarray_list
Definition jmemmgr.c:128
large_pool_ptr large_list[JPOOL_NUMPOOLS]
Definition jmemmgr.c:121
struct large_pool_struct::@020341344147074177160157320130052077110044277047 hdr
size_t bytes_used
Definition jmemmgr.c:105
ALIGN_TYPE dummy
Definition jmemmgr.c:108
size_t bytes_left
Definition jmemmgr.c:106
large_pool_ptr next
Definition jmemmgr.c:104
small_pool_ptr next
Definition jmemmgr.c:93
struct small_pool_struct::@300244327257320307224024170275003103063007044151 hdr
ALIGN_TYPE dummy
Definition jmemmgr.c:97
size_t bytes_left
Definition jmemmgr.c:95
size_t bytes_used
Definition jmemmgr.c:94
#define GLOBAL(g)
Definition crypt.c:87
if(GLOBAL(newzip))
Definition crypt.c:475
int result
Definition process.c:1455
#define MIN(a, b)
Definition unzpriv.h:2649
#define TRUE
Definition unzpriv.h:1295
#define FALSE
Definition unzpriv.h:1298
char workspace[12]
Definition zipinfo.c:998
#define FAR
Definition zconf.h:270