getContextAndModuleBuilder retrieves context and ModuleBuilder from module private value.
(ctx *C.JSContext, m *C.JSModuleDef)
| 23 | |
| 24 | // getContextAndModuleBuilder retrieves context and ModuleBuilder from module private value. |
| 25 | func getContextAndModuleBuilder(ctx *C.JSContext, m *C.JSModuleDef) (*Context, *ModuleBuilder, C.int32_t, error) { |
| 26 | privateValue := C.JS_GetModulePrivateValue(ctx, m) |
| 27 | |
| 28 | var builderID C.int32_t |
| 29 | if moduleBuilderIDForceParseFailure.Load() || C.JS_ToInt32(ctx, &builderID, privateValue) < 0 { |
| 30 | C.JS_FreeValue(ctx, privateValue) |
| 31 | return nil, nil, 0, fmt.Errorf("failed to parse module builder id from module private value") |
| 32 | } |
| 33 | C.JS_FreeValue(ctx, privateValue) |
| 34 | |
| 35 | goCtx, builderInterface, err := getContextAndObject(ctx, C.int(builderID), errFunctionNotFound) |
| 36 | if err != nil { |
| 37 | cleanupModuleBuilderHandle(goCtx, builderID) |
| 38 | return nil, nil, 0, fmt.Errorf("failed to get context and module builder: %v", err.message) |
| 39 | } |
| 40 | |
| 41 | builder, ok := builderInterface.(*ModuleBuilder) |
| 42 | if !ok || builder == nil { |
| 43 | cleanupModuleBuilderHandle(goCtx, builderID) |
| 44 | return nil, nil, 0, fmt.Errorf("failed to get context and module builder: invalid module builder handle") |
| 45 | } |
| 46 | |
| 47 | return goCtx, builder, builderID, nil |
| 48 | } |
| 49 | |
| 50 | //export goModuleInitProxy |
| 51 | func goModuleInitProxy(ctx *C.JSContext, m *C.JSModuleDef) C.int { |
no test coverage detected