
/* VOID Type.  */
DEF_TYPE (STACK_TYPE_VOID,              "VOID",         'V',    0)

/* Array Ref 에 대한 타입.  Object Ref 와 완전히 같다.
   하지만 OBJECT_IS_ARRAY (NODE) 가 1 로 설정되어 있는 점이 다르다.
*/
DEF_TYPE (STACK_TYPE_ARRAYREF,          "ARRAYREF",     '[',    sizeof (void *))

/* 1 비트 boolean 타입  */
DEF_TYPE (STACK_TYPE_BOOLEAN,           "BOOLEAN",      'B',    sizeof (unsigned char))

/* 1 바이트 signed 문자형 타입  */
DEF_TYPE (STACK_TYPE_CHAR,              "CHAR",         'C',    sizeof (char))

/* 2 바이트 문자형 타입  */
DEF_TYPE (STACK_TYPE_SHORT,             "SHORT",        'H',    sizeof (short))

/* 4 바이트 크기를 가지는 정수형 타입.  
   메모리 주소 형식의 스택 slot 일 경우, 이것이 설정된다.  */
DEF_TYPE (STACK_TYPE_INT,               "INT",          'I',    sizeof (int))

/* 4 바이트 실수형 타입.  */
DEF_TYPE (STACK_TYPE_FLOAT,             "FLOAT",        'F',    sizeof (float))

/* 8 바이트 실수형 타입.  */
DEF_TYPE (STACK_TYPE_DOUBLE,            "DOUBLE",       'D',    sizeof (double))

/* Object Ref 에 대한 타입.  */
DEF_TYPE (STACK_TYPE_OBJREF,            "OBJREF",       'T',    sizeof (void *))

/* Object Ref 와 완전히 같다.  단, OBJECT_IS_STRING (NODE) 가 1 로 설정되어 있다. 

   이러한 ObjectRef 와 거의 같으면서, 다른 Type 을 가지는 것을 정의할 때 주의해야 할 점은
   아래와 같습니다.

     * GC 가 제대로 이루어질 수 있도록 배려를 해야 합니다.  그렇지 않을 경우, 심각한
       문제를 일이킬 수 있습니다.
*/
DEF_TYPE (STACK_TYPE_STRINGREF,         "STRINGREF",    'S',    sizeof (void *))
