2003-02-16
2003-02-16 04:05:16 by Martin Stjernholm <mast@lysator.liu.se>
-
a90303f27c3f3c13d69ad5f06dd998980f5eb50c
(26 lines)
(+19/-7)
[
Show
| Annotate
]
Branch: 7.9
Cleaned up and wrote some helpful notes about the lvalue handling.
Rev: src/builtin.cmod:1.120
Rev: src/code/ia32.c:1.24
Rev: src/interpret.c:1.291
Rev: src/interpret_functions.h:1.138
Rev: src/object.c:1.225
Rev: src/pike_types.c:1.207
Rev: src/svalue.c:1.159
Rev: src/svalue.h:1.116
2:
|| This file is part of Pike. For copyright information see COPYRIGHT.
|| Pike is distributed under GPL, LGPL and MPL. See the file COPYING
|| for more information.
- || $Id: svalue.h,v 1.115 2003/02/15 02:51:06 mast Exp $
+ || $Id: svalue.h,v 1.116 2003/02/16 03:59:58 mast Exp $
*/
#ifndef SVALUE_H
67:
INT32 *refs;
struct ref_dummy *dummy;
FLOAT_TYPE float_number;
- struct svalue *lval; /* only used on stack */
- union anything *short_lval; /* only used on stack */
+ int identifier; /* Used with T_OBJ_INDEX. */
+ struct svalue *lval; /* Used with T_SVALUE_PTR. */
void *ptr;
};
99:
#define PIKE_T_ZERO 14 /* Can return 0, but nothing else */
#define T_UNFINISHED 15 /* Reserved for the garbage-collector */
- #define T_VOID 16 /* Can't return any value */
+
+ #define T_VOID 16
+ /* Can't return any value. Also used on stack to fill out the second
+ * svalue on an lvalue when it isn't used. */
+
#define T_MANY 17
#define PIKE_T_RING 240
109:
#define T_ASSIGN 245
#define T_DELETED 246
#define PIKE_T_UNKNOWN 247
- #define T_SHORT_LVALUE 248
- #define T_LVALUE 249
+
+ #define T_OBJ_INDEX 248
+ /* svalue.u.identifer is an identifier index in an object. Primarily
+ * used in lvalues on stack. */
+
+ #define T_SVALUE_PTR 249
+ /* svalue.u.lval points to an svalue. Primarily used in lvalues on
+ * stack. */
+
#define T_ARRAY_LVALUE 250
#define PIKE_T_MIXED 251
#define T_NOT 253
317: Inside #if defined(PIKE_DEBUG)
#ifdef PIKE_DEBUG
PMOD_EXPORT extern void describe(void *); /* defined in gc.c */
PMOD_EXPORT extern const char msg_type_error[];
- #define check_type(T) if(T > MAX_TYPE && T!=T_LVALUE && T!=T_SHORT_LVALUE && T!=T_VOID && T!=T_DELETED && T!=T_ARRAY_LVALUE) Pike_fatal(msg_type_error,T)
+ #define check_type(T) if(T > MAX_TYPE && T!=T_SVALUE_PTR && T!=T_OBJ_INDEX && T!=T_VOID && T!=T_DELETED && T!=T_ARRAY_LVALUE) Pike_fatal(msg_type_error,T)
#define check_svalue(S) debug_check_svalue(dmalloc_check_svalue(S,DMALLOC_LOCATION()))