Sourceforge.net - The VCF's Project Host
   The VCF Website Home   |   Online Discussion Forums   |   Sourceforge.net Project Page   

vcf/JavaScriptKit/js-impl/jsopcode.h File Reference


Classes

struct  JSCodeSpec

Defines

#define OPDEF(op, val, name, token, length, nuses, ndefs, prec, format)   op = val,
#define OPDEF(op, val, name, token, length, nuses, ndefs, prec, format)   op##_LENGTH = length,
#define JOF_BYTE   0
#define JOF_JUMP   1
#define JOF_CONST   2
#define JOF_UINT16   3
#define JOF_TABLESWITCH   4
#define JOF_LOOKUPSWITCH   5
#define JOF_QARG   6
#define JOF_QVAR   7
#define JOF_INDEXCONST   8
#define JOF_JUMPX   9
#define JOF_TABLESWITCHX   10
#define JOF_LOOKUPSWITCHX   11
#define JOF_UINT24   12
#define JOF_LITOPX   13
#define JOF_LOCAL   14
#define JOF_TYPEMASK   0x000f
#define JOF_NAME   0x0010
#define JOF_PROP   0x0020
#define JOF_ELEM   0x0030
#define JOF_MODEMASK   0x0030
#define JOF_SET   0x0040
#define JOF_DEL   0x0080
#define JOF_DEC   0x0100
#define JOF_INC   0x0200
#define JOF_INCDEC   0x0300
#define JOF_POST   0x0400
#define JOF_IMPORT   0x0800
#define JOF_FOR   0x1000
#define JOF_ASSIGNING   JOF_SET
#define JOF_DETECTING   0x2000
#define JOF_BACKPATCH   0x4000
#define JOF_LEFTASSOC   0x8000
#define JOF_DECLARING   0x10000
#define JOF_XMLNAME   0x20000
#define JOF_TYPE_IS_EXTENDED_JUMP(t)   ((unsigned)((t) - JOF_JUMPX) <= (unsigned)(JOF_LOOKUPSWITCHX - JOF_JUMPX))
#define JUMP_OFFSET_LEN   2
#define JUMP_OFFSET_HI(off)   ((jsbytecode)((off) >> 8))
#define JUMP_OFFSET_LO(off)   ((jsbytecode)(off))
#define GET_JUMP_OFFSET(pc)   ((int16)(((pc)[1] << 8) | (pc)[2]))
#define SET_JUMP_OFFSET(pc, off)
#define JUMP_OFFSET_MIN   ((int16)0x8000)
#define JUMP_OFFSET_MAX   ((int16)0x7fff)
#define GET_SPANDEP_INDEX(pc)   ((uint16)(((pc)[1] << 8) | (pc)[2]))
#define SET_SPANDEP_INDEX(pc, i)
#define SPANDEP_INDEX_MAX   ((uint16)0xfffe)
#define SPANDEP_INDEX_HUGE   ((uint16)0xffff)
#define JUMPX_OFFSET_LEN   4
#define JUMPX_OFFSET_B3(off)   ((jsbytecode)((off) >> 24))
#define JUMPX_OFFSET_B2(off)   ((jsbytecode)((off) >> 16))
#define JUMPX_OFFSET_B1(off)   ((jsbytecode)((off) >> 8))
#define JUMPX_OFFSET_B0(off)   ((jsbytecode)(off))
#define GET_JUMPX_OFFSET(pc)
#define SET_JUMPX_OFFSET(pc, off)
#define JUMPX_OFFSET_MIN   ((int32)0x80000000)
#define JUMPX_OFFSET_MAX   ((int32)0x7fffffff)
#define ATOM_INDEX_LEN   2
#define ATOM_INDEX_HI(i)   ((jsbytecode)((i) >> 8))
#define ATOM_INDEX_LO(i)   ((jsbytecode)(i))
#define GET_ATOM_INDEX(pc)   ((jsatomid)(((pc)[1] << 8) | (pc)[2]))
#define SET_ATOM_INDEX(pc, i)
#define GET_ATOM(cx, script, pc)
#define UINT24_HI(i)   ((jsbytecode)((i) >> 16))
#define UINT24_MID(i)   ((jsbytecode)((i) >> 8))
#define UINT24_LO(i)   ((jsbytecode)(i))
#define GET_UINT24(pc)
#define SET_UINT24(pc, i)
#define LITERAL_INDEX_LEN   3
#define LITERAL_INDEX_HI(i)   UINT24_HI(i)
#define LITERAL_INDEX_MID(i)   UINT24_MID(i)
#define LITERAL_INDEX_LO(i)   UINT24_LO(i)
#define GET_LITERAL_INDEX(pc)   GET_UINT24(pc)
#define SET_LITERAL_INDEX(pc, i)   SET_UINT24(pc,i)
#define ATOM_INDEX_LIMIT_LOG2   23
#define ATOM_INDEX_LIMIT   ((uint32)1 << ATOM_INDEX_LIMIT_LOG2)
#define UINT16_HI(i)   ((jsbytecode)((i) >> 8))
#define UINT16_LO(i)   ((jsbytecode)(i))
#define GET_UINT16(pc)   ((uintN)(((pc)[1] << 8) | (pc)[2]))
#define SET_UINT16(pc, i)   ((pc)[1] = UINT16_HI(i), (pc)[2] = UINT16_LO(i))
#define UINT16_LIMIT   ((uintN)1 << 16)
#define ARGC_HI(argc)   UINT16_HI(argc)
#define ARGC_LO(argc)   UINT16_LO(argc)
#define GET_ARGC(pc)   GET_UINT16(pc)
#define ARGC_LIMIT   UINT16_LIMIT
#define GET_ARGNO(pc)   GET_UINT16(pc)
#define SET_ARGNO(pc, argno)   SET_UINT16(pc,argno)
#define ARGNO_LEN   2
#define ARGNO_LIMIT   UINT16_LIMIT
#define GET_VARNO(pc)   GET_UINT16(pc)
#define SET_VARNO(pc, varno)   SET_UINT16(pc,varno)
#define VARNO_LEN   2
#define VARNO_LIMIT   UINT16_LIMIT
#define JSDVG_IGNORE_STACK   0
#define JSDVG_SEARCH_STACK   1

Enumerations

enum  JSOp {
  op, op, val, val,
  name, name, token, token,
  length, length, nuses, nuses,
  ndefs, ndefs, prec, prec,
  JSOP_LIMIT
}
enum  JSOpLength {
  op, op, val, val,
  name, name, token, token,
  length, length, nuses, nuses,
  ndefs, ndefs, prec, prec,
  JSOP_LIMIT_LENGTH
}

Functions

 JS_STATIC_ASSERT (sizeof(jsatomid)*JS_BITS_PER_BYTE >=ATOM_INDEX_LIMIT_LOG2+1)
JSStringjs_QuoteString (JSContext *cx, JSString *str, jschar quote)
JSPrinterjs_NewPrinter (JSContext *cx, const char *name, uintN indent, JSBool pretty)
void js_DestroyPrinter (JSPrinter *jp)
JSStringjs_GetPrinterOutput (JSPrinter *jp)
int js_printf (JSPrinter *jp, const char *format,...)
JSBool js_puts (JSPrinter *jp, const char *s)
JSBool js_DecompileCode (JSPrinter *jp, JSScript *script, jsbytecode *pc, uintN len, uintN pcdepth)
JSBool js_DecompileScript (JSPrinter *jp, JSScript *script)
JSBool js_DecompileFunctionBody (JSPrinter *jp, JSFunction *fun)
JSBool js_DecompileFunction (JSPrinter *jp, JSFunction *fun)
JSStringjs_DecompileValueGenerator (JSContext *cx, intN spindex, jsval v, JSString *fallback)

Variables

const JSCodeSpec js_CodeSpec []
uintN js_NumCodeSpecs
const jschar js_EscapeMap []

Define Documentation

#define ARGC_HI argc   )     UINT16_HI(argc)
 

#define ARGC_LIMIT   UINT16_LIMIT
 

#define ARGC_LO argc   )     UINT16_LO(argc)
 

#define ARGNO_LEN   2
 

#define ARGNO_LIMIT   UINT16_LIMIT
 

#define ATOM_INDEX_HI i   )     ((jsbytecode)((i) >> 8))
 

#define ATOM_INDEX_LEN   2
 

#define ATOM_INDEX_LIMIT   ((uint32)1 << ATOM_INDEX_LIMIT_LOG2)
 

#define ATOM_INDEX_LIMIT_LOG2   23
 

#define ATOM_INDEX_LO i   )     ((jsbytecode)(i))
 

#define GET_ARGC pc   )     GET_UINT16(pc)
 

#define GET_ARGNO pc   )     GET_UINT16(pc)
 

#define GET_ATOM cx,
script,
pc   ) 
 

Value:

js_GetAtom((cx), &(script)->atomMap,          \
                                           GET_ATOM_INDEX(pc))

#define GET_ATOM_INDEX pc   )     ((jsatomid)(((pc)[1] << 8) | (pc)[2]))
 

#define GET_JUMP_OFFSET pc   )     ((int16)(((pc)[1] << 8) | (pc)[2]))
 

#define GET_JUMPX_OFFSET pc   ) 
 

Value:

((int32)(((pc)[1] << 24) | ((pc)[2] << 16)    \
                                         | ((pc)[3] << 8) | (pc)[4]))

#define GET_LITERAL_INDEX pc   )     GET_UINT24(pc)
 

#define GET_SPANDEP_INDEX pc   )     ((uint16)(((pc)[1] << 8) | (pc)[2]))
 

#define GET_UINT16 pc   )     ((uintN)(((pc)[1] << 8) | (pc)[2]))
 

#define GET_UINT24 pc   ) 
 

Value:

((jsatomid)(((pc)[1] << 16) |                 \
                                            ((pc)[2] << 8) |                  \
                                            (pc)[3]))

#define GET_VARNO pc   )     GET_UINT16(pc)
 

#define JOF_ASSIGNING   JOF_SET
 

#define JOF_BACKPATCH   0x4000
 

#define JOF_BYTE   0
 

#define JOF_CONST   2
 

#define JOF_DEC   0x0100
 

#define JOF_DECLARING   0x10000
 

#define JOF_DEL   0x0080
 

#define JOF_DETECTING   0x2000
 

#define JOF_ELEM   0x0030
 

#define JOF_FOR   0x1000
 

#define JOF_IMPORT   0x0800
 

#define JOF_INC   0x0200
 

#define JOF_INCDEC   0x0300
 

#define JOF_INDEXCONST   8
 

#define JOF_JUMP   1
 

#define JOF_JUMPX   9
 

#define JOF_LEFTASSOC   0x8000
 

#define JOF_LITOPX   13
 

#define JOF_LOCAL   14
 

#define JOF_LOOKUPSWITCH   5
 

#define JOF_LOOKUPSWITCHX   11
 

#define JOF_MODEMASK   0x0030
 

#define JOF_NAME   0x0010
 

#define JOF_POST   0x0400
 

#define JOF_PROP   0x0020
 

#define JOF_QARG   6
 

#define JOF_QVAR   7
 

#define JOF_SET   0x0040
 

#define JOF_TABLESWITCH   4
 

#define JOF_TABLESWITCHX   10
 

#define JOF_TYPE_IS_EXTENDED_JUMP  )     ((unsigned)((t) - JOF_JUMPX) <= (unsigned)(JOF_LOOKUPSWITCHX - JOF_JUMPX))
 

#define JOF_TYPEMASK   0x000f
 

#define JOF_UINT16   3
 

#define JOF_UINT24   12
 

#define JOF_XMLNAME   0x20000
 

#define JSDVG_IGNORE_STACK   0
 

#define JSDVG_SEARCH_STACK   1
 

#define JUMP_OFFSET_HI off   )     ((jsbytecode)((off) >> 8))
 

#define JUMP_OFFSET_LEN   2
 

#define JUMP_OFFSET_LO off   )     ((jsbytecode)(off))
 

#define JUMP_OFFSET_MAX   ((int16)0x7fff)
 

#define JUMP_OFFSET_MIN   ((int16)0x8000)
 

#define JUMPX_OFFSET_B0 off   )     ((jsbytecode)(off))
 

#define JUMPX_OFFSET_B1 off   )     ((jsbytecode)((off) >> 8))
 

#define JUMPX_OFFSET_B2 off   )     ((jsbytecode)((off) >> 16))
 

#define JUMPX_OFFSET_B3 off   )     ((jsbytecode)((off) >> 24))
 

#define JUMPX_OFFSET_LEN   4
 

#define JUMPX_OFFSET_MAX   ((int32)0x7fffffff)
 

#define JUMPX_OFFSET_MIN   ((int32)0x80000000)
 

#define LITERAL_INDEX_HI i   )     UINT24_HI(i)
 

#define LITERAL_INDEX_LEN   3
 

#define LITERAL_INDEX_LO i   )     UINT24_LO(i)
 

#define LITERAL_INDEX_MID i   )     UINT24_MID(i)
 

#define OPDEF op,
val,
name,
token,
length,
nuses,
ndefs,
prec,
format   )     op##_LENGTH = length,
 

#define OPDEF op,
val,
name,
token,
length,
nuses,
ndefs,
prec,
format   )     op = val,
 

#define SET_ARGNO pc,
argno   )     SET_UINT16(pc,argno)
 

#define SET_ATOM_INDEX pc,
i   ) 
 

Value:

((pc)[1] = ATOM_INDEX_HI(i),                  \
                                 (pc)[2] = ATOM_INDEX_LO(i))

#define SET_JUMP_OFFSET pc,
off   ) 
 

Value:

((pc)[1] = JUMP_OFFSET_HI(off),               \
                                 (pc)[2] = JUMP_OFFSET_LO(off))

#define SET_JUMPX_OFFSET pc,
off   ) 
 

Value:

((pc)[1] = JUMPX_OFFSET_B3(off),              \
                                 (pc)[2] = JUMPX_OFFSET_B2(off),              \
                                 (pc)[3] = JUMPX_OFFSET_B1(off),              \
                                 (pc)[4] = JUMPX_OFFSET_B0(off))

#define SET_LITERAL_INDEX pc,
i   )     SET_UINT24(pc,i)
 

#define SET_SPANDEP_INDEX pc,
i   ) 
 

Value:

((pc)[1] = JUMP_OFFSET_HI(i),                 \
                                 (pc)[2] = JUMP_OFFSET_LO(i))

#define SET_UINT16 pc,
i   )     ((pc)[1] = UINT16_HI(i), (pc)[2] = UINT16_LO(i))
 

#define SET_UINT24 pc,
i   ) 
 

Value:

((pc)[1] = UINT24_HI(i),                      \
                                 (pc)[2] = UINT24_MID(i),                     \
                                 (pc)[3] = UINT24_LO(i))

#define SET_VARNO pc,
varno   )     SET_UINT16(pc,varno)
 

#define SPANDEP_INDEX_HUGE   ((uint16)0xffff)
 

#define SPANDEP_INDEX_MAX   ((uint16)0xfffe)
 

#define UINT16_HI i   )     ((jsbytecode)((i) >> 8))
 

#define UINT16_LIMIT   ((uintN)1 << 16)
 

#define UINT16_LO i   )     ((jsbytecode)(i))
 

#define UINT24_HI i   )     ((jsbytecode)((i) >> 16))
 

#define UINT24_LO i   )     ((jsbytecode)(i))
 

#define UINT24_MID i   )     ((jsbytecode)((i) >> 8))
 

#define VARNO_LEN   2
 

#define VARNO_LIMIT   UINT16_LIMIT
 


Enumeration Type Documentation

enum JSOp
 

Enumerator:
op 
op 
val 
val 
name 
name 
token 
token 
length 
length 
nuses 
nuses 
ndefs 
ndefs 
prec 
prec 
JSOP_LIMIT 

enum JSOpLength
 

Enumerator:
op 
op 
val 
val 
name 
name 
token 
token 
length 
length 
nuses 
nuses 
ndefs 
ndefs 
prec 
prec 
JSOP_LIMIT_LENGTH 


Function Documentation

JSBool js_DecompileCode JSPrinter jp,
JSScript script,
jsbytecode pc,
uintN  len,
uintN  pcdepth
 

JSBool js_DecompileFunction JSPrinter jp,
JSFunction fun
 

JSBool js_DecompileFunctionBody JSPrinter jp,
JSFunction fun
 

JSBool js_DecompileScript JSPrinter jp,
JSScript script
 

JSString* js_DecompileValueGenerator JSContext cx,
intN  spindex,
jsval  v,
JSString fallback
 

void js_DestroyPrinter JSPrinter jp  ) 
 

JSString* js_GetPrinterOutput JSPrinter jp  ) 
 

JSPrinter* js_NewPrinter JSContext cx,
const char *  name,
uintN  indent,
JSBool  pretty
 

int js_printf JSPrinter jp,
const char *  format,
  ...
 

JSBool js_puts JSPrinter jp,
const char *  s
 

JSString* js_QuoteString JSContext cx,
JSString str,
jschar  quote
 

JS_STATIC_ASSERT sizeof(jsatomid)*JS_BITS_PER_BYTE >=ATOM_INDEX_LIMIT_LOG2+  1  ) 
 


Variable Documentation

const JSCodeSpec js_CodeSpec[]
 

const jschar js_EscapeMap[]
 

uintN js_NumCodeSpecs
 

   Comments or Suggestions?    License Information