public JSCustomClass(JSContextPtr context, string name, JSHandleObject globalObject) { Context = context; ClassDefinition = new JSClass(name); ClassPtr = new JSClassPtr(ClassDefinition, out ClassPin); GlobalObject = globalObject; SetConstructor(DefaultConstructor); }
static JSGlobalObject() { DefaultClassDefinition = new JSClass( "global", JSClassFlags.GLOBAL_FLAGS | JSClassFlags.NEW_RESOLVE ); // HACK: Lazy standard classes // DefaultClassDefinition.enumerate = (JSEnumerateOp)global_enumerate; // DefaultClassDefinition.resolve = (JSNewResolveOp)global_resolve; // We have to pin our JSClass (so everything it points to is retained) // and marshal it into a manually-allocated buffer that doesn't expire. // JSClass buffer needs to live as long as the global object, or longer. DefaultClass = new JSClassPtr(DefaultClassDefinition, out DefaultClassHandle); }