JavaScript-QuickJS
view release on metacpan or search on metacpan
easyxs/ppport.h view on Meta::CPAN
MAX_PRINT_A|5.033005||Viu
MAX_RECURSE_EVAL_NOCHANGE_DEPTH|5.009005||Viu
MAXSYSFD|5.003007||Viu
MAX_UNICODE_UTF8|5.027006||Viu
MAX_UNI_KEYWORD_INDEX|5.027011||Viu
MAX_UTF8_TWO_BYTE|5.019004||Viu
MAYBE_DEREF_GV|5.015003||Viu
MAYBE_DEREF_GV_flags|5.015003||Viu
MAYBE_DEREF_GV_nomg|5.015003||Viu
maybe_multimagic_gv|5.019004||Viu
mayberelocate|5.015006||Viu
MBLEN_LOCK|5.033005||Viu
MBLEN_UNLOCK|5.033005||Viu
MBOL|5.003007||Viu
MBOL_t8|5.035004||Viu
MBOL_t8_p8|5.033003||Viu
MBOL_t8_pb|5.033003||Viu
MBOL_tb|5.035004||Viu
MBOL_tb_p8|5.033003||Viu
MBOL_tb_pb|5.033003||Viu
MBTOWC_LOCK|5.033005||Viu
easyxs/ppport.h view on Meta::CPAN
op_refcnt_dec|||xiu
OpREFCNT_inc|5.006000||Viu
op_refcnt_inc|||xiu
OP_REFCNT_INIT|5.006000||Viu
OP_REFCNT_LOCK|5.006000||Viu
op_refcnt_lock|5.009002|5.009002|u
OpREFCNT_set|5.006000||Viu
OP_REFCNT_TERM|5.006000||Viu
OP_REFCNT_UNLOCK|5.006000||Viu
op_refcnt_unlock|5.009002|5.009002|u
op_relocate_sv|5.021005||Viu
op_scope|5.013007|5.013007|x
OP_SIBLING|5.021002||Viu
OpSIBLING|5.021007|5.003007|p
op_sibling_splice|5.021002|5.021002|n
OpSLAB|5.017002||Viu
opslab_force_free|5.017002||Viu
opslab_free|5.017002||Viu
opslab_free_nopad|5.017002||Viu
OpslabREFCNT_dec|5.017002||Viu
OpslabREFCNT_dec_padok|5.017002||Viu
quickjs/quickjs.c view on Meta::CPAN
/* move the `next` code here */
DynBuf *bc = &s->cur_func->byte_code;
int chunk_size = pos_expr - pos_next;
int offset = bc->size - pos_next;
int i;
dbuf_realloc(bc, bc->size + chunk_size);
dbuf_put(bc, bc->buf + pos_next, chunk_size);
memset(bc->buf + pos_next, OP_nop, chunk_size);
/* `next` part ends with a goto */
s->cur_func->last_opcode_pos = bc->size - 5;
/* relocate labels */
for (i = label_cont; i < s->cur_func->label_count; i++) {
LabelSlot *ls = &s->cur_func->label_slots[i];
if (ls->pos >= pos_next && ls->pos < pos_expr)
ls->pos += offset;
}
}
emit_label(s, label_body);
if (js_parse_statement(s))
return -1;
quickjs/quickjs.c view on Meta::CPAN
/* move the increment code here */
DynBuf *bc = &s->cur_func->byte_code;
int chunk_size = pos_body - pos_cont;
int offset = bc->size - pos_cont;
int i;
dbuf_realloc(bc, bc->size + chunk_size);
dbuf_put(bc, bc->buf + pos_cont, chunk_size);
memset(bc->buf + pos_cont, OP_nop, chunk_size);
/* increment part ends with a goto */
s->cur_func->last_opcode_pos = bc->size - 5;
/* relocate labels */
for (i = label_cont; i < s->cur_func->label_count; i++) {
LabelSlot *ls = &s->cur_func->label_slots[i];
if (ls->pos >= pos_cont && ls->pos < pos_body)
ls->pos += offset;
}
} else {
emit_goto(s, OP_goto, label_cont);
}
emit_label(s, label_break);
quickjs/quickjs.c view on Meta::CPAN
len = opcode_info[op].size;
if (op == OP_line_num) {
*linep = get_u32(bc_buf + pos + 1);
} else
if (op == OP_label) {
label = get_u32(bc_buf + pos + 1);
if (update_label(s, label, 0) > 0)
break;
#if 0
if (s->label_slots[label].first_reloc) {
printf("line %d: unreferenced label %d:%d has relocations\n",
*linep, label, s->label_slots[label].pos2);
}
#endif
assert(s->label_slots[label].first_reloc == NULL);
} else {
/* XXX: output a warning for unreachable code? */
JSAtom atom;
switch(opcode_info[op].fmt) {
case OP_FMT_label:
case OP_FMT_label_u16:
quickjs/quickjs.c view on Meta::CPAN
line_num = get_u32(bc_buf + pos + 1);
break;
case OP_label:
{
label = get_u32(bc_buf + pos + 1);
assert(label >= 0 && label < s->label_count);
ls = &label_slots[label];
assert(ls->addr == -1);
ls->addr = bc_out.size;
/* resolve the relocation entries */
for(re = ls->first_reloc; re != NULL; re = re_next) {
int diff = ls->addr - re->addr;
re_next = re->next;
switch (re->size) {
case 4:
put_u32(bc_out.buf + re->addr, diff);
break;
case 2:
assert(diff == (int16_t)diff);
put_u16(bc_out.buf + re->addr, diff);
quickjs/quickjs.c view on Meta::CPAN
jp->op = OP_goto16;
dbuf_putc(&bc_out, OP_goto16);
dbuf_put_u16(&bc_out, diff);
break;
}
}
#endif
dbuf_putc(&bc_out, op);
dbuf_put_u32(&bc_out, ls->addr - bc_out.size);
if (ls->addr == -1) {
/* unresolved yet: create a new relocation entry */
if (!add_reloc(ctx, ls, bc_out.size - 4, 4))
goto fail;
}
break;
case OP_with_get_var:
case OP_with_put_var:
case OP_with_delete_var:
case OP_with_make_ref:
case OP_with_get_ref:
case OP_with_get_ref_undef:
quickjs/quickjs.c view on Meta::CPAN
jp = &s->jump_slots[s->jump_count++];
jp->op = op;
jp->size = 4;
jp->pos = bc_out.size + 5;
jp->label = label;
#endif
dbuf_putc(&bc_out, op);
dbuf_put_u32(&bc_out, atom);
dbuf_put_u32(&bc_out, ls->addr - bc_out.size);
if (ls->addr == -1) {
/* unresolved yet: create a new relocation entry */
if (!add_reloc(ctx, ls, bc_out.size - 4, 4))
goto fail;
}
dbuf_putc(&bc_out, is_with);
}
break;
case OP_drop:
if (OPTIMIZE) {
/* remove useless drops before return */
quickjs/quickjs.c view on Meta::CPAN
}
for(i = 0; i < s->idx_to_atom_count; i++) {
p = JS_ReadString(s);
if (!p)
return -1;
atom = JS_NewAtomStr(s->ctx, p);
if (atom == JS_ATOM_NULL)
return s->error_state = -1;
s->idx_to_atom[i] = atom;
if (s->is_rom_data && (atom != (i + s->first_atom)))
s->is_rom_data = FALSE; /* atoms must be relocated */
}
bc_read_trace(s, "}\n");
return 0;
}
static void bc_reader_free(BCReaderState *s)
{
int i;
if (s->idx_to_atom) {
for(i = 0; i < s->idx_to_atom_count; i++) {
( run in 0.375 second using v1.01-cache-2.11-cpan-71847e10f99 )