Classes | Defines | Typedefs | Enumerations

jsval.h File Reference

#include "jsutil.h"
Include dependency graph for jsval.h:
This graph shows which files directly or indirectly include this file:

Classes

union  jsval_layout

Defines

#define JSVAL_TAG_SHIFT   47
#define JSVAL_TYPE_DOUBLE   ((uint8)0x00)
#define JSVAL_TYPE_INT32   ((uint8)0x01)
#define JSVAL_TYPE_UNDEFINED   ((uint8)0x02)
#define JSVAL_TYPE_BOOLEAN   ((uint8)0x03)
#define JSVAL_TYPE_MAGIC   ((uint8)0x04)
#define JSVAL_TYPE_STRING   ((uint8)0x05)
#define JSVAL_TYPE_NULL   ((uint8)0x06)
#define JSVAL_TYPE_OBJECT   ((uint8)0x07)
#define JSVAL_TYPE_NONFUNOBJ   ((uint8)0x57)
#define JSVAL_TYPE_FUNOBJ   ((uint8)0x67)
#define JSVAL_TYPE_STRORNULL   ((uint8)0x97)
#define JSVAL_TYPE_OBJORNULL   ((uint8)0x98)
#define JSVAL_TYPE_BOXED   ((uint8)0x99)
#define JSVAL_TYPE_UNINITIALIZED   ((uint8)0xcd)
#define JSVAL_TAG_MAX_DOUBLE   ((uint32)(0x1FFF0))
#define JSVAL_TAG_INT32   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32)
#define JSVAL_TAG_UNDEFINED   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED)
#define JSVAL_TAG_STRING   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING)
#define JSVAL_TAG_BOOLEAN   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_BOOLEAN)
#define JSVAL_TAG_MAGIC   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_MAGIC)
#define JSVAL_TAG_NULL   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_NULL)
#define JSVAL_TAG_OBJECT   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_OBJECT)
#define JSVAL_SHIFTED_TAG_MAX_DOUBLE   ((((uint64)JSVAL_TAG_MAX_DOUBLE) << JSVAL_TAG_SHIFT) | 0xFFFFFFFF)
#define JSVAL_SHIFTED_TAG_INT32   (((uint64)JSVAL_TAG_INT32) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_UNDEFINED   (((uint64)JSVAL_TAG_UNDEFINED) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_STRING   (((uint64)JSVAL_TAG_STRING) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_BOOLEAN   (((uint64)JSVAL_TAG_BOOLEAN) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_MAGIC   (((uint64)JSVAL_TAG_MAGIC) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_NULL   (((uint64)JSVAL_TAG_NULL) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_OBJECT   (((uint64)JSVAL_TAG_OBJECT) << JSVAL_TAG_SHIFT)
#define JSVAL_LOWER_INCL_TYPE_OF_OBJ_OR_NULL_SET   JSVAL_TYPE_NULL
#define JSVAL_UPPER_EXCL_TYPE_OF_PRIMITIVE_SET   JSVAL_TYPE_OBJECT
#define JSVAL_UPPER_INCL_TYPE_OF_NUMBER_SET   JSVAL_TYPE_INT32
#define JSVAL_LOWER_INCL_TYPE_OF_PTR_PAYLOAD_SET   JSVAL_TYPE_MAGIC
#define JSVAL_UPPER_INCL_TYPE_OF_VALUE_SET   JSVAL_TYPE_OBJECT
#define JSVAL_UPPER_INCL_TYPE_OF_BOXABLE_SET   JSVAL_TYPE_FUNOBJ
#define JSVAL_PAYLOAD_MASK   0x00007FFFFFFFFFFFLL
#define JSVAL_TAG_MASK   0xFFFF800000000000LL
#define JSVAL_TYPE_TO_TAG(type)   ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type)))
#define JSVAL_TYPE_TO_SHIFTED_TAG(type)   (((uint64)JSVAL_TYPE_TO_TAG(type)) << JSVAL_TAG_SHIFT)
#define JSVAL_LOWER_INCL_SHIFTED_TAG_OF_OBJ_OR_NULL_SET   JSVAL_SHIFTED_TAG_NULL
#define JSVAL_UPPER_EXCL_SHIFTED_TAG_OF_PRIMITIVE_SET   JSVAL_SHIFTED_TAG_OBJECT
#define JSVAL_UPPER_EXCL_SHIFTED_TAG_OF_NUMBER_SET   JSVAL_SHIFTED_TAG_UNDEFINED
#define JSVAL_LOWER_INCL_SHIFTED_TAG_OF_PTR_PAYLOAD_SET   JSVAL_SHIFTED_TAG_MAGIC
#define JSVAL_LOWER_INCL_SHIFTED_TAG_OF_GCTHING_SET   JSVAL_SHIFTED_TAG_STRING
#define BUILD_JSVAL(tag, payload)   ((((uint64)(uint32)(tag)) << JSVAL_TAG_SHIFT) | (payload))
#define JSVAL_BITS(v)   (v)
#define JSVAL_FROM_LAYOUT(l)   ((l).asBits)
#define IMPL_TO_JSVAL(v)   ((v).asBits)
#define JSID_BITS(id)   (id)

Typedefs

typedef uint8 JSValueType
typedef uint32 JSValueTag
typedef uint64 JSValueShiftedTag
typedef enum JSWhyMagic JSWhyMagic
typedef struct JSString JSString
typedef struct JSFlatString JSFlatString
typedef struct JSObject JSObject
typedef union jsval_layout jsval_layout
typedef JSVAL_ALIGNMENT uint64 jsval
typedef ptrdiff_t jsid

Enumerations

enum  JSWhyMagic {
  JS_ARRAY_HOLE, JS_ARGS_HOLE, JS_NATIVE_ENUMERATE, JS_NO_ITER_VALUE,
  JS_GENERATOR_CLOSING, JS_NO_CONSTANT, JS_THIS_POISON, JS_ARG_POISON,
  JS_SERIALIZE_NO_NODE, JS_GENERIC_MAGIC
}

Define Documentation

#define BUILD_JSVAL (   tag,
  payload 
)    ((((uint64)(uint32)(tag)) << JSVAL_TAG_SHIFT) | (payload))
#define IMPL_TO_JSVAL (   v  )     ((v).asBits)
#define JSID_BITS (   id  )     (id)
#define JSVAL_BITS (   v  )     (v)
#define JSVAL_FROM_LAYOUT (   l  )     ((l).asBits)
#define JSVAL_LOWER_INCL_SHIFTED_TAG_OF_GCTHING_SET   JSVAL_SHIFTED_TAG_STRING
#define JSVAL_LOWER_INCL_SHIFTED_TAG_OF_OBJ_OR_NULL_SET   JSVAL_SHIFTED_TAG_NULL
#define JSVAL_LOWER_INCL_SHIFTED_TAG_OF_PTR_PAYLOAD_SET   JSVAL_SHIFTED_TAG_MAGIC
#define JSVAL_LOWER_INCL_TYPE_OF_OBJ_OR_NULL_SET   JSVAL_TYPE_NULL
#define JSVAL_LOWER_INCL_TYPE_OF_PTR_PAYLOAD_SET   JSVAL_TYPE_MAGIC
#define JSVAL_PAYLOAD_MASK   0x00007FFFFFFFFFFFLL
#define JSVAL_SHIFTED_TAG_BOOLEAN   (((uint64)JSVAL_TAG_BOOLEAN) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_INT32   (((uint64)JSVAL_TAG_INT32) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_MAGIC   (((uint64)JSVAL_TAG_MAGIC) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_MAX_DOUBLE   ((((uint64)JSVAL_TAG_MAX_DOUBLE) << JSVAL_TAG_SHIFT) | 0xFFFFFFFF)
#define JSVAL_SHIFTED_TAG_NULL   (((uint64)JSVAL_TAG_NULL) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_OBJECT   (((uint64)JSVAL_TAG_OBJECT) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_STRING   (((uint64)JSVAL_TAG_STRING) << JSVAL_TAG_SHIFT)
#define JSVAL_SHIFTED_TAG_UNDEFINED   (((uint64)JSVAL_TAG_UNDEFINED) << JSVAL_TAG_SHIFT)
#define JSVAL_TAG_BOOLEAN   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_BOOLEAN)
#define JSVAL_TAG_INT32   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32)
#define JSVAL_TAG_MAGIC   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_MAGIC)
#define JSVAL_TAG_MASK   0xFFFF800000000000LL
#define JSVAL_TAG_MAX_DOUBLE   ((uint32)(0x1FFF0))
#define JSVAL_TAG_NULL   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_NULL)
#define JSVAL_TAG_OBJECT   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_OBJECT)
#define JSVAL_TAG_SHIFT   47
#define JSVAL_TAG_STRING   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING)
#define JSVAL_TAG_UNDEFINED   (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED)
#define JSVAL_TYPE_BOOLEAN   ((uint8)0x03)
#define JSVAL_TYPE_BOXED   ((uint8)0x99)
#define JSVAL_TYPE_DOUBLE   ((uint8)0x00)
#define JSVAL_TYPE_FUNOBJ   ((uint8)0x67)
#define JSVAL_TYPE_INT32   ((uint8)0x01)
#define JSVAL_TYPE_MAGIC   ((uint8)0x04)
#define JSVAL_TYPE_NONFUNOBJ   ((uint8)0x57)
#define JSVAL_TYPE_NULL   ((uint8)0x06)
#define JSVAL_TYPE_OBJECT   ((uint8)0x07)
#define JSVAL_TYPE_OBJORNULL   ((uint8)0x98)
#define JSVAL_TYPE_STRING   ((uint8)0x05)
#define JSVAL_TYPE_STRORNULL   ((uint8)0x97)
#define JSVAL_TYPE_TO_SHIFTED_TAG (   type  )     (((uint64)JSVAL_TYPE_TO_TAG(type)) << JSVAL_TAG_SHIFT)
#define JSVAL_TYPE_TO_TAG (   type  )     ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type)))
#define JSVAL_TYPE_UNDEFINED   ((uint8)0x02)
#define JSVAL_TYPE_UNINITIALIZED   ((uint8)0xcd)
#define JSVAL_UPPER_EXCL_SHIFTED_TAG_OF_NUMBER_SET   JSVAL_SHIFTED_TAG_UNDEFINED
#define JSVAL_UPPER_EXCL_SHIFTED_TAG_OF_PRIMITIVE_SET   JSVAL_SHIFTED_TAG_OBJECT
#define JSVAL_UPPER_EXCL_TYPE_OF_PRIMITIVE_SET   JSVAL_TYPE_OBJECT
#define JSVAL_UPPER_INCL_TYPE_OF_BOXABLE_SET   JSVAL_TYPE_FUNOBJ
#define JSVAL_UPPER_INCL_TYPE_OF_NUMBER_SET   JSVAL_TYPE_INT32
#define JSVAL_UPPER_INCL_TYPE_OF_VALUE_SET   JSVAL_TYPE_OBJECT

Typedef Documentation

typedef struct JSFlatString JSFlatString
typedef ptrdiff_t jsid
typedef struct JSObject JSObject
typedef struct JSString JSString
typedef JSVAL_ALIGNMENT uint64 jsval
typedef union jsval_layout jsval_layout
typedef uint32 JSValueTag
typedef uint8 JSValueType
typedef enum JSWhyMagic JSWhyMagic

Enumeration Type Documentation

enum JSWhyMagic
Enumerator:
JS_ARRAY_HOLE 
JS_ARGS_HOLE 
JS_NATIVE_ENUMERATE 
JS_NO_ITER_VALUE 
JS_GENERATOR_CLOSING 
JS_NO_CONSTANT 
JS_THIS_POISON 
JS_ARG_POISON 
JS_SERIALIZE_NO_NODE 
JS_GENERIC_MAGIC