Skip to content

Commit d82a611

Browse files
authored
refactor: abstract runtime Isolate class (#158)
1 parent 39a2c32 commit d82a611

File tree

21 files changed

+292
-203
lines changed

21 files changed

+292
-203
lines changed

eslint.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export default tseslint.config(
8080
}],
8181
'@stylistic/spaced-comment': ['error', 'always', {
8282
line: {
83-
markers: ['/'],
83+
markers: ['/', '#region', '#endregion'],
8484
},
8585
block: {
8686
markers: ['#__PURE__'],

packages/emnapi/src/core/init.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,18 @@ export var napiModule: INapiModule = {
101101
const NODE_MODULE_VERSION = Version.NODE_MODULE_VERSION
102102
const nodeRegisterModuleSymbol = `node_register_module_v${NODE_MODULE_VERSION}`
103103
if (typeof instance.exports[nodeRegisterModuleSymbol] === 'function') {
104-
const scope = emnapiCtx.openScopeRaw()
104+
const scope = emnapiCtx.isolate.openScope()
105105
try {
106106
const exports = napiModule.exports
107107

108108
const exportsHandle = scope.add(exports)
109109
const moduleHandle = scope.add(napiModule)
110110
instance.exports[nodeRegisterModuleSymbol](to64('exportsHandle'), to64('moduleHandle'), to64('5'))
111111
} catch (err) {
112-
emnapiCtx.closeScopeRaw(scope)
112+
emnapiCtx.isolate.closeScope(scope)
113113
throw err
114114
}
115-
emnapiCtx.closeScopeRaw(scope)
115+
emnapiCtx.isolate.closeScope(scope)
116116
napiModule.loaded = true
117117
delete napiModule.envObject
118118
return napiModule.exports

packages/emnapi/src/emscripten/init.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,18 @@ export function emnapiInit (options: InitOptions): any {
7272
const nodeRegisterModuleSymbol = `node_register_module_v${NODE_MODULE_VERSION}`
7373
const emscriptenExportedSymbol = `_${nodeRegisterModuleSymbol}`
7474
if (typeof Module[emscriptenExportedSymbol] === 'function') {
75-
const scope = emnapiCtx.openScopeRaw()
75+
const scope = emnapiCtx.isolate.openScope()
7676
try {
7777
const exports = emnapiModule.exports
7878

7979
const exportsHandle = scope.add(exports)
8080
const moduleHandle = scope.add(emnapiModule)
8181
Module[emscriptenExportedSymbol](to64('exportsHandle'), to64('moduleHandle'), to64('5'))
8282
} catch (err) {
83-
emnapiCtx.closeScopeRaw(scope)
83+
emnapiCtx.isolate.closeScope(scope)
8484
throw err
8585
}
86-
emnapiCtx.closeScopeRaw(scope)
86+
emnapiCtx.isolate.closeScope(scope)
8787
emnapiModule.loaded = true
8888
delete emnapiModule.envObject
8989
return emnapiModule.exports

packages/emnapi/src/promise.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export function napi_create_promise (env: napi_env, deferred: Pointer<napi_defer
1111
$CHECK_ARG!(envObject, promise)
1212

1313
const resolver = emnapiCtx.createResolver()
14-
deferredObjectId = emnapiCtx.createReference(undefined, resolver, 1, ReferenceOwnership.kUserland as any).id
14+
deferredObjectId = emnapiCtx.isolate.createReference(resolver).id
1515

1616
from64('deferred')
1717
makeSetValue('deferred', 0, 'deferredObjectId', '*')

packages/emnapi/src/v8/external.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export function _v8_external_new (
66
isolate: Ptr,
77
data: number
88
): Ptr {
9-
const external = emnapiCtx.createExternal(data)
9+
const external = emnapiCtx.isolate.createExternal(data)
1010
return emnapiCtx.napiValueFromJsValue(external)
1111
}
1212

@@ -18,5 +18,5 @@ export function _v8_external_value (
1818
external: Ptr
1919
): Ptr {
2020
const obj = emnapiCtx.jsValueFromNapiValue(external)
21-
return emnapiCtx.getExternalValue(obj)
21+
return emnapiCtx.isolate.getExternalValue(obj)
2222
}

packages/emnapi/src/v8/function.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export function _v8_function_new_instance (fn: Ptr, ctx: Ptr, argc: number, argv
4242
ret = new BoundCtor()
4343
}
4444
} catch (err) {
45-
emnapiCtx.throwException(err)
45+
emnapiCtx.isolate.throwException(err)
4646
return 1
4747
}
4848

packages/emnapi/src/v8/handle_scope.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import { from64 } from 'emscripten:parse-tools'
55
* @__sig pp
66
*/
77
export function _v8_open_handle_scope (_isolate: Pointer<unknown>): napi_handle_scope {
8-
return emnapiCtx.openScopeRaw().id
8+
return emnapiCtx.isolate.openScope().id
99
}
1010

1111
/**
1212
* @__deps $emnapiCtx
1313
* @__sig v
1414
*/
1515
export function _v8_close_handle_scope (): void {
16-
return emnapiCtx.closeScopeRaw()
16+
return emnapiCtx.isolate.closeScope()
1717
}
1818

1919
/**

packages/emnapi/src/v8/internal.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { from64, makeDynCall } from 'emscripten:parse-tools'
77
export function _v8_local_from_global_reference (ref: Ptr): Ptr {
88
const reference = emnapiCtx.getRef(ref)
99
if (reference === undefined) return 1
10-
const id = reference.get(emnapiCtx)
10+
const id = reference.get(emnapiCtx.isolate)
1111
return id || 1
1212
}
1313

@@ -18,7 +18,7 @@ export function _v8_local_from_global_reference (ref: Ptr): Ptr {
1818
export function _v8_globalize_reference (isolate: Ptr, value: Ptr): Ptr {
1919
const jsValue = emnapiCtx.jsValueFromNapiValue(value)
2020
if (jsValue === undefined) return 0
21-
return emnapiCtx.createReference(undefined, jsValue, 1, ReferenceOwnership.kUserland as any).id
21+
return emnapiCtx.isolate.createReference(jsValue).id
2222
}
2323

2424
/**
@@ -64,11 +64,11 @@ export function _v8_make_weak (ref: Ptr, data: Ptr, callback: Ptr, weak_callback
6464
let field0 = 0
6565
let field1 = 0
6666
if (type === 1) {
67-
const id = refValue.get(emnapiCtx)
67+
const id = refValue.get(emnapiCtx.isolate)
6868
if (id) {
6969
const value = emnapiCtx.jsValueFromNapiValue(id)
70-
field0 = emnapiCtx.getInternalField(value, 0)
71-
field1 = emnapiCtx.getInternalField(value, 1)
70+
field0 = emnapiCtx.isolate.getInternalField(value, 0)
71+
field1 = emnapiCtx.isolate.getInternalField(value, 1)
7272
if ((typeof field0 !== 'number' && typeof field0 !== 'bigint') ||
7373
(typeof field1 !== 'number' && typeof field1 !== 'bigint')) {
7474
throw new Error('Internal field is not a number')

packages/emnapi/src/v8/isolate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ export function _v8_isolate_get_current_context (): number {
1010
* @__sig pp
1111
*/
1212
export function _v8_isolate_throw_exception (error: Ptr): Ptr {
13-
emnapiCtx.throwException(emnapiCtx.jsValueFromNapiValue(error))
13+
emnapiCtx.isolate.throwException(emnapiCtx.jsValueFromNapiValue(error))
1414
return error
1515
}

packages/emnapi/src/v8/object.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export function _v8_object_internal_field_count (
2727
obj: Ptr
2828
): number {
2929
const objValue = emnapiCtx.jsValueFromNapiValue(obj)
30-
return emnapiCtx.getInternalFieldCount(objValue)
30+
return emnapiCtx.isolate.getInternalFieldCount(objValue)
3131
}
3232

3333
/**
@@ -41,7 +41,7 @@ export function _v8_object_set_internal_field (
4141
): void {
4242
const objValue = emnapiCtx.jsValueFromNapiValue(obj)
4343
const dataValue = emnapiCtx.jsValueFromNapiValue(data)
44-
emnapiCtx.setInternalField(objValue, index, dataValue)
44+
emnapiCtx.isolate.setInternalField(objValue, index, dataValue)
4545
}
4646

4747
/**
@@ -54,7 +54,7 @@ export function _v8_object_set_aligned_pointer_in_internal_field (
5454
data: Ptr
5555
): void {
5656
const objValue = emnapiCtx.jsValueFromNapiValue(obj)
57-
emnapiCtx.setInternalField(objValue, index, data)
57+
emnapiCtx.isolate.setInternalField(objValue, index, data)
5858
}
5959

6060
/**
@@ -66,7 +66,7 @@ export function _v8_object_get_internal_field (
6666
index: number
6767
): Ptr {
6868
const objValue = emnapiCtx.jsValueFromNapiValue(obj)
69-
return emnapiCtx.napiValueFromJsValue(emnapiCtx.getInternalField(objValue, index))
69+
return emnapiCtx.isolate.napiValueFromJsValue(emnapiCtx.isolate.getInternalField(objValue, index))
7070
}
7171

7272
/**
@@ -78,7 +78,7 @@ export function _v8_object_get_aligned_pointer_in_internal_field (
7878
index: number
7979
): Ptr {
8080
const objValue = emnapiCtx.jsValueFromNapiValue(obj)
81-
return emnapiCtx.getInternalField(objValue, index)
81+
return emnapiCtx.isolate.getInternalField(objValue, index)
8282
}
8383

8484
/**

0 commit comments

Comments
 (0)