JSPL

 view release on metacpan or  search on metacpan

JS.xs  view on Meta::CPAN

	RETVAL

SV*
does_support_anonfunfix(...)
    CODE:
	PERL_UNUSED_VAR(items); /* -W */
#ifdef	JSOPTION_ANONFUNFIX
	RETVAL = &PL_sv_yes;
#else
	RETVAL = &PL_sv_no;
#endif
    OUTPUT:
	RETVAL

SV*
does_support_jit(...)
    CODE:
	PERL_UNUSED_VAR(items); /* -W */
#ifdef	JSOPTION_JIT
	RETVAL = &PL_sv_yes;
#else
	RETVAL = &PL_sv_no;
#endif
    OUTPUT:
	RETVAL

SV*
does_support_opcb(...)
    CODE:
	PERL_UNUSED_VAR(items); /* -W */
#ifdef JS_HAS_BRANCH_HANDLER
	RETVAL = &PL_sv_no;
#else /* Imply OPCB available */
	RETVAL = &PL_sv_yes;
#endif
    OUTPUT:
	RETVAL

SV*
does_support_threading(...)
    CODE:
	PERL_UNUSED_VAR(items); /* -W */
#ifdef JS_THREADSAFE
	RETVAL = &PL_sv_yes;
#else
	RETVAL = &PL_sv_no;
#endif
    OUTPUT:
	RETVAL

SV* exact_doubles(...)
    CODE:
	PERL_UNUSED_VAR(items); /* -W */
	RETVAL = sizeof(NV) == sizeof(jsdouble) ? &PL_sv_yes : &PL_sv_no;
    OUTPUT:
	RETVAL
	
void
jsvisitor(sv)
    SV *sv
    PPCODE:
	if(SvOK(sv) && SvROK(sv) && (sv = SvRV(sv)) && SvMAGICAL(sv)) {
	    MAGIC *mg = mg_find(sv, PERL_MAGIC_jsvis);
	    while(mg) {
		if(mg->mg_type == PERL_MAGIC_jsvis && mg->mg_private == 0x4a53) {
		    jsv_mg *jsvis = (jsv_mg *)mg->mg_ptr;
		    XPUSHs(sv_2mortal(newSViv(PTR2IV(jsvis->pcx))));
		}
		mg = mg->mg_moremagic;
	    }
	}

MODULE = JSPL     PACKAGE = JSPL::RawRT	PREFIX = jsr_

JSPL::RawRT
jsr_create(maxbytes)
    int maxbytes
    CODE:
	Newxz(RETVAL, 1, PJS_Runtime);
	if(!RETVAL) XSRETURN_UNDEF;
	if(plGRuntime) RETVAL->rt = plGRuntime;
	else if(maxbytes) RETVAL->rt = JS_NewRuntime(maxbytes);
	if(!RETVAL->rt) {
	    Safefree(RETVAL);
	    croak("Failed to create Runtime");
	}
    OUTPUT:
	RETVAL

void
jsr_DESTROY(runtime)
    JSPL::RawRT runtime
    CODE:
	if(!PL_dirty && !plGRuntime) JS_DestroyRuntime(runtime->rt);
	runtime->rt = NULL;
	Safefree(runtime);

MODULE = JSPL     PACKAGE = JSPL::Context

JSPL::Context 
create(rt, ...)
    JSPL::RawRT rt;
    INIT:
    JSContext *imported = NULL;
    CODE:
	if(items == 3) {
	    warn("Importing context\n");
	    imported = (JSContext *)SvIV(ST(1));
	    gMyPri = (JSPrincipals *)SvIV(ST(2));
	}
	RETVAL = PJS_CreateContext(aTHX_ rt, ST(0), imported);
    OUTPUT:
	RETVAL

void
DESTROY(pcx)
    JSPL::Context pcx;
    CODE:
	PJS_DestroyContext(aTHX_ pcx);

void



( run in 0.668 second using v1.01-cache-2.11-cpan-5511b514fd6 )