Skip to content

Commit

Permalink
Revert "Faster object representation"
Browse files Browse the repository at this point in the history
This reverts commit b608bc3.
  • Loading branch information
lucabrunox committed Jul 3, 2008
1 parent b608bc3 commit bcd0fd7
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 47 deletions.
4 changes: 0 additions & 4 deletions ChangeLog
@@ -1,7 +1,3 @@
2008-07-02 Luca Bruno <lethalman88@gmail.com>

* Start merging object system of Panda Smalltalk

2008-06-12 Luca Bruno <lethalman88@gmail.com>

* st/kernel/Exception.st (what): improved
Expand Down
17 changes: 0 additions & 17 deletions syx/syx-enums.h
Expand Up @@ -38,23 +38,6 @@ typedef enum
SYX_TYPE_CHARACTER
} SyxType;

/*! Number of bits for header informations */
typedef enum
{
SYX_OBJECT_TYPE_OBJECT,
SYX_OBJECT_TYPE_FLOAT,
SYX_OBJECT_TYPE_LARGE_INTEGER,
SYX_OBJECT_TYPE_ARRAY,
SYX_OBJECT_TYPE_BYTE_ARRAY,
SYX_OBJECT_TYPE_FLOAT_ARRAY,
SYX_OBJECT_TYPE_INTEGER_ARRAY,
SYX_OBJECT_TYPE_WORD_ARRAY,
SYX_OBJECT_TYPE_CONTEXT,
SYX_OBJECT_TYPE_PROCESS,

SYX_OBJECT_TYPE_ALL
} SyxObjectType;

/*!
Indexes of known instance variables.
Expand Down
41 changes: 15 additions & 26 deletions syx/syx-object.h
Expand Up @@ -42,27 +42,15 @@
SYX_BEGIN_DECLS

#define SYX_OBJECT(oop) ((SyxObject *) (oop))
#define SYX_OBJECT_TYPE(oop) (SYX_OBJECT (object)->object_type)
#define SYX_ARRAYED_OBJECT(oop) ((SyxArrayedObject *) (oop))

#define SYX_SYMBOL(oop) ((SyxSymbol *) (oop))
#define SYX_FLOAT(oop) ((SyxFloat *) (oop))
#define SYX_ARRAY(oop) ((SyxArray *) (oop))
#define SYX_BYTE_ARRAY(oop) ((SyxByteArray *) (oop))
#define SYX_FLOAT_ARRAY(oop) ((SyxFloatArray *) (oop))
#define SYX_INTEGER_ARRAY(oop) ((SyxIntegerArray *) (oop))
#define SYX_WORD_ARRAY(oop) ((SyxWordArray *) (oop))
#define SYX_CONTEXT(oop) ((SyxContext *) (oop))
#define SYX_METHOD_CONTEXT(oop) ((SyxMethodContext *) (oop))
#define SYX_BLOCK_CONTEXT(oop) ((SyxBlockContext *) (oop))
#define SYX_PROCESS(oop) ((SyxProcess *) (oop))
#define SYX_OBJECT_FLOAT(oop) (*((syx_double *)(SYX_OBJECT(oop)->data)))

#ifdef HAVE_LIBGMP
#define SYX_LARGE_INTEGER(oop) ((SyxLargeInteger *) (oop))
#define SYX_OBJECT_LARGE_INTEGER(oop) (*(mpz_t *)(SYX_OBJECT(oop)->data))
#endif

#define SYX_STRING_VALUE(oop) ((syx_string)(SYX_BYTE_ARRAY(oop)->bytes))

#define SYX_OBJECT_SYMBOL(oop) ((syx_symbol)(SYX_OBJECT(oop)->data))
#define SYX_OBJECT_STRING(oop) ((syx_string)(SYX_OBJECT(oop)->data))
#define SYX_OBJECT_BYTE_ARRAY(oop) ((syx_uint8 *)(SYX_OBJECT(oop)->data))
#define SYX_OBJECT_VARS(oop) (SYX_OBJECT(oop)->vars)
#define SYX_OBJECT_DATA_SIZE(oop) (SYX_OBJECT(oop)->data_size)
#define SYX_OBJECT_DATA(oop) (SYX_OBJECT(oop)->data)
Expand Down Expand Up @@ -93,14 +81,8 @@ typedef struct SyxObject SyxObject;
/*! The core class of Syx holding necessary informations for each concrete object. */
struct SyxObject
{
/*! This is needed by the GC and it's always SYX_TYPE_POINTER, see SyxType */
syx_int8 tag;

/*! The object type, see SyxObjectType */
syx_int8 type;

/*! Number of instance variables */
syx_int16 size;
/*! Contains the instance size, format, tag and unused bits */
SyxOop mark;

/*! Holds the hash code of the object */
SyxOop hash;
Expand Down Expand Up @@ -215,7 +197,14 @@ syx_object_get_class (SyxOop object)
If the object is a constant, a small integer or a character, no operation is done
*/
#define syx_object_set_class (oop, klass) (SYX_OBJECT (oop)->klass = klass)
INLINE void
syx_object_set_class (SyxOop object, SyxOop klass)
{
if (!SYX_IS_OBJECT(object))
return;

SYX_OBJECT(object)->klass = klass;
}

EXPORT syx_symbol *syx_class_get_all_instance_variable_names (SyxOop klass);
EXPORT syx_bool syx_class_is_superclass_of (SyxOop klass, SyxOop subclass);
Expand Down

0 comments on commit bcd0fd7

Please sign in to comment.