Select Git revision
-
Martin Stjernholm authored
Rev: src/array.c:1.112
Martin Stjernholm authoredRev: src/array.c:1.112
array.c 51.76 KiB
/*\
||| This file a part of Pike, and is copyright by Fredrik Hubinette
||| Pike is distributed as GPL (General Public License)
||| See the files COPYING and DISCLAIMER for more information.
\*/
/**/
#include "global.h"
#include "svalue.h"
#include "array.h"
#include "object.h"
#include "las.h"
#include "stralloc.h"
#include "interpret.h"
#include "opcodes.h"
#include "pike_error.h"
#include "pike_types.h"
#include "fsort.h"
#include "builtin_functions.h"
#include "pike_memory.h"
#include "gc.h"
#include "main.h"
#include "security.h"
#include "stuff.h"
#include "bignum.h"
RCSID("$Id: array.c,v 1.112 2001/06/11 18:03:23 mast Exp $");
PMOD_EXPORT struct array empty_array=
{
PIKE_CONSTANT_MEMOBJ_INIT(1), /* Never free */
&weak_empty_array, /* Next */
&weak_shrink_empty_array, /* previous (circular) */
0, /* Size = 0 */
0, /* malloced Size = 0 */
0, /* no types */
0, /* no flags */
empty_array.real_item, /* Initialize the item pointer. */
};
PMOD_EXPORT struct array weak_empty_array=
{
PIKE_CONSTANT_MEMOBJ_INIT(1),
&weak_shrink_empty_array, &empty_array, 0, 0, 0, ARRAY_WEAK_FLAG,
weak_empty_array.real_item,
};
PMOD_EXPORT struct array weak_shrink_empty_array=
{
PIKE_CONSTANT_MEMOBJ_INIT(1),
&empty_array, &weak_empty_array, 0, 0, 0, ARRAY_WEAK_FLAG|ARRAY_WEAK_SHRINK,
weak_shrink_empty_array.real_item,
};
struct array *gc_internal_array = &empty_array;
static struct array *gc_mark_array_pos = 0;
/* Allocate an array, this might be changed in the future to
* allocate linked lists or something
* NOTE: the new array have zero references
*/
PMOD_EXPORT struct array *low_allocate_array(ptrdiff_t size, ptrdiff_t extra_space)
{
struct array *v;
ptrdiff_t e;
if(size == 0)
{
add_ref(&empty_array);
return &empty_array;
}