コード例 #1
0
ファイル: ejs-promise.c プロジェクト: dilijev/echo-js
static void
resolve_thenable_arg_dtor(void* data)
{
    ResolveThenableTaskArg* arg = (ResolveThenableTaskArg*)data;
    /* unroot the arg's ejsvals */
    _ejs_gc_remove_root(&arg->promiseToResolve);
    _ejs_gc_remove_root(&arg->thenable);
    _ejs_gc_remove_root(&arg->then);
    free (arg);
}
コード例 #2
0
ファイル: ejs-promise.c プロジェクト: dilijev/echo-js
static void
reaction_arg_dtor(void* data)
{
    ReactionTaskArg* arg = (ReactionTaskArg*)data;
    /* unroot the arg's ejsvals */
    _ejs_gc_remove_root(&arg->reaction->handler);
    _ejs_gc_remove_root(&arg->reaction->capabilities);
    _ejs_gc_remove_root(&arg->arg);
    free (arg->reaction);
    free (arg);
}
コード例 #3
0
ファイル: ejs-error.c プロジェクト: dilijev/echo-js
void
_ejs_error_init(ejsval global)
{
    ejsval toString = _ejs_function_new_native (_ejs_null, _ejs_atom_toString, (EJSClosureFunc)_ejs_Error_prototype_toString);
    _ejs_gc_add_root (&toString);
    
#define EJS_ADD_NATIVE_ERROR_TYPE(err) EJS_MACRO_START                  \
    _ejs_##err = _ejs_function_new_without_proto (_ejs_null, _ejs_atom_##err, (EJSClosureFunc)_ejs_##err##_impl); \
    _ejs_object_setprop (global, _ejs_atom_##err, _ejs_##err);          \
    _ejs_##err##_prototype = _ejs_object_new(_ejs_null, &_ejs_Object_specops); \
    _ejs_object_setprop (_ejs_##err,       _ejs_atom_prototype,  _ejs_##err##_prototype); \
    _ejs_object_define_value_property (_ejs_##err##_prototype, _ejs_atom_constructor, _ejs_##err,\
                                       EJS_PROP_NOT_ENUMERABLE | EJS_PROP_CONFIGURABLE | EJS_PROP_WRITABLE); \
                                                                    \
    _ejs_object_setprop (_ejs_##err##_prototype, _ejs_atom_name, _ejs_atom_##err); \
    _ejs_object_setprop (_ejs_##err##_prototype, _ejs_atom_toString, toString); \
                                                                        \
    EJS_INSTALL_SYMBOL_FUNCTION_FLAGS (_ejs_##err, create, _ejs_Error_create, EJS_PROP_NOT_ENUMERABLE); \
EJS_MACRO_END

    EJS_ADD_NATIVE_ERROR_TYPE(Error);
    EJS_ADD_NATIVE_ERROR_TYPE(EvalError);
    EJS_ADD_NATIVE_ERROR_TYPE(RangeError);
    EJS_ADD_NATIVE_ERROR_TYPE(ReferenceError);
    EJS_ADD_NATIVE_ERROR_TYPE(SyntaxError);
    EJS_ADD_NATIVE_ERROR_TYPE(TypeError);
    EJS_ADD_NATIVE_ERROR_TYPE(URIError);

    _ejs_gc_remove_root (&toString);
}
コード例 #4
0
ファイル: ejs-exception.c プロジェクト: toshok/echojs
static void _ejs_exception_destructor(void *exc_gen) {
    struct ejs_exception *exc = (struct ejs_exception *)exc_gen;
    // remove the gc root for the throw exception
    _ejs_gc_remove_root (&exc->val);
}