typedef struct perl_mstats perl_mstats_t;
-struct perl_mstats {
- unsigned long *nfree;
- unsigned long *ntotal;
- long topbucket, topbucket_ev, topbucket_odd, totfree, total, total_chain;
- long total_sbrk, sbrks, sbrk_good, sbrk_slack, start_slack, sbrked_remains;
- long minbucket;
- /* Level 1 info */
- unsigned long *bucket_mem_size;
- unsigned long *bucket_available_size;
-};
-
# define safemalloc Perl_malloc
# define safecalloc Perl_calloc
# define saferealloc Perl_realloc
#define PTR2IV(p) INT2PTR(IV,p)
#define PTR2UV(p) INT2PTR(UV,p)
#define PTR2NV(p) NUM2PTR(NV,p)
+#if PTRSIZE == LONGSIZE
+# define PTR2ul(p) (unsigned long)(p)
+#else
+# define PTR2ul(p) INT2PTR(unsigned long,p)
+#endif
#ifdef USE_LONG_DOUBLE
+# if defined(HAS_LONG_DOUBLE) && LONG_DOUBLESIZE == DOUBLESIZE
+# define LONG_DOUBLE_EQUALS_DOUBLE
+# endif
# if !(defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE))
# undef USE_LONG_DOUBLE /* Ouch! */
# endif
# ifdef LDBL_MANT_DIG
# define NV_MANT_DIG LDBL_MANT_DIG
# endif
+# ifdef LDBL_MAX
+# define NV_MAX LDBL_MAX
+# define NV_MIN LDBL_MIN
+# else
+# ifdef HUGE_VALL
+# define NV_MAX HUGE_VALL
+# else
+# ifdef HUGE_VAL
+# define NV_MAX ((NV)HUGE_VAL)
+# endif
+# endif
+# endif
# ifdef HAS_SQRTL
# define Perl_cos cosl
# define Perl_sin sinl
/* e.g. libsunmath doesn't have modfl and frexpl as of mid-March 2000 */
# ifdef HAS_MODFL
# define Perl_modf(x,y) modfl(x,y)
-# else
-# define Perl_modf(x,y) ((long double)modf((double)(x),(double*)(y)))
# endif
# ifdef HAS_FREXPL
# define Perl_frexp(x,y) frexpl(x,y)
-# else
-# define Perl_frexp(x,y) ((long double)frexp((double)(x),y))
# endif
# ifdef HAS_ISNANL
# define Perl_isnan(x) isnanl(x)
# ifdef DBL_MANT_DIG
# define NV_MANT_DIG DBL_MANT_DIG
# endif
+# ifdef DBL_MAX
+# define NV_MAX DBL_MAX
+# define NV_MIN DBL_MIN
+# else
+# ifdef HUGE_VAL
+# define NV_MAX HUGE_VAL
+# endif
+# endif
# define Perl_cos cos
# define Perl_sin sin
# define Perl_sqrt sqrt
#endif
+struct perl_mstats {
+ UV *nfree;
+ UV *ntotal;
+ IV topbucket, topbucket_ev, topbucket_odd, totfree, total, total_chain;
+ IV total_sbrk, sbrks, sbrk_good, sbrk_slack, start_slack, sbrked_remains;
+ IV minbucket;
+ /* Level 1 info */
+ UV *bucket_mem_size;
+ UV *bucket_available_size;
+ UV nbuckets;
+};
+
typedef MEM_SIZE STRLEN;
typedef struct op OP;
typedef struct loop LOOP;
typedef struct interpreter PerlInterpreter;
-typedef struct sv SV;
+#ifdef UTS
+# define STRUCT_SV perl_sv /* Amdahl's <ksync.h> has struct sv */
+#else
+# define STRUCT_SV sv
+#endif
+typedef struct STRUCT_SV SV;
typedef struct av AV;
typedef struct hv HV;
typedef struct cv CV;
# endif
# endif
# endif
-#endif
+#endif
+
+#ifndef NO_ENVIRON_ARRAY
+# define USE_ENVIRON_ARRAY
+#endif
#ifndef PERL_SYS_INIT3
# define PERL_SYS_INIT3(argvp,argcp,envp) PERL_SYS_INIT(argvp,argcp)
# endif
#endif
+#ifndef UVf
+# ifdef CHECK_FORMAT
+# define UVf UVuf
+# else
+# define UVf "Vu"
+# endif
+#endif
+
+#ifndef VDf
+# ifdef CHECK_FORMAT
+# define VDf "p"
+# else
+# define VDf "vd"
+# endif
+#endif
+
/* Some unistd.h's give a prototype for pause() even though
HAS_PAUSE ends up undefined. This causes the #define
- below to be rejected by the compmiler. Sigh.
+ below to be rejected by the compiler. Sigh.
*/
#ifdef HAS_PAUSE
#define Pause pause
#ifndef Perl_error_log
# define Perl_error_log (PL_stderrgv \
+ && GvIOp(PL_stderrgv) \
&& IoOFP(GvIOp(PL_stderrgv)) \
? IoOFP(GvIOp(PL_stderrgv)) \
: PerlIO_stderr())
# endif
#else
/* VMS and some other platforms don't use the environ array */
-# if !defined(VMS)
+# ifdef USE_ENVIRON_ARRAY
# if !defined(DONT_DECLARE_STD) || \
(defined(__svr4__) && defined(__GNUC__) && defined(sun)) || \
defined(__sgi) || \
- defined(__DGUX) || defined(EPOC)
+ defined(__DGUX)
extern char ** environ; /* environment variables supplied via exec */
# endif
# endif