Skip to content

Commit 6652885

Browse files
authored
Remove JavaScriptTypedArrayKind (#58)
* Remove JavaScriptTypedArrayKind * Fix bugs * Bump swjs_library_version
1 parent 6ff2941 commit 6652885

File tree

5 files changed

+19
-64
lines changed

5 files changed

+19
-64
lines changed

Runtime/src/index.ts

+3-16
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,6 @@ enum JavaScriptValueKind {
4242
Function = 6,
4343
}
4444

45-
enum JavaScriptTypedArrayKind {
46-
Int8 = 0,
47-
Uint8 = 1,
48-
Int16 = 2,
49-
Uint16 = 3,
50-
Int32 = 4,
51-
Uint32 = 5,
52-
BigInt64 = 6,
53-
BigUint64 = 7,
54-
Float32 = 8,
55-
Float64 = 9,
56-
}
57-
5845
type TypedArray =
5946
| Int8ArrayConstructor
6047
| Uint8ArrayConstructor
@@ -130,7 +117,7 @@ class SwiftRuntimeHeap {
130117
export class SwiftRuntime {
131118
private instance: WebAssembly.Instance | null;
132119
private heap: SwiftRuntimeHeap
133-
private version: number = 600
120+
private version: number = 610
134121

135122
constructor() {
136123
this.instance = null;
@@ -405,11 +392,11 @@ export class SwiftRuntime {
405392
return obj instanceof constructor
406393
},
407394
swjs_create_typed_array: (
408-
kind: JavaScriptTypedArrayKind,
395+
constructor_ref: ref,
409396
elementsPtr: pointer, length: number,
410397
result_obj: pointer
411398
) => {
412-
const ArrayType: TypedArray = globalVariable[JavaScriptTypedArrayKind[kind] + 'Array']
399+
const ArrayType: TypedArray = this.heap.referenceHeap(constructor_ref);
413400
const array = new ArrayType(memory().buffer, elementsPtr, length);
414401
// Call `.slice()` to copy the memory
415402
writeUint32(result_obj, this.heap.retain(array.slice()));

Sources/JavaScriptKit/BasicObjects/JSTypedArray.swift

+13-32
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import _CJavaScriptKit
66

77
public protocol TypedArrayElement: JSValueConvertible, JSValueConstructible {
8-
static var typedArrayKind: JavaScriptTypedArrayKind { get }
98
static var typedArrayClass: JSFunction { get }
109
}
1110

@@ -58,7 +57,7 @@ public class JSTypedArray<Element>: JSValueConvertible, ExpressibleByArrayLitera
5857
public convenience init(_ array: [Element]) {
5958
var resultObj = JavaScriptObjectRef()
6059
array.withUnsafeBufferPointer { ptr in
61-
_create_typed_array(Element.typedArrayKind, ptr.baseAddress!, Int32(array.count), &resultObj)
60+
_create_typed_array(Element.typedArrayClass.id, ptr.baseAddress!, Int32(array.count), &resultObj)
6261
}
6362
self.init(unsafe: JSObject(id: resultObj))
6463
}
@@ -83,67 +82,49 @@ func valueForBitWidth<T>(typeName: String, bitWidth: Int, when32: T) -> T {
8382
}
8483

8584
extension Int: TypedArrayElement {
86-
public static var typedArrayClass: JSFunction {
85+
public static var typedArrayClass: JSFunction =
8786
valueForBitWidth(typeName: "Int", bitWidth: Int.bitWidth, when32: JSObject.global.Int32Array).function!
88-
}
89-
public static var typedArrayKind: JavaScriptTypedArrayKind {
90-
valueForBitWidth(typeName: "Int", bitWidth: Int.bitWidth, when32: .int32)
91-
}
9287
}
9388
extension UInt: TypedArrayElement {
94-
public static var typedArrayClass: JSFunction {
89+
public static var typedArrayClass: JSFunction =
9590
valueForBitWidth(typeName: "UInt", bitWidth: Int.bitWidth, when32: JSObject.global.Uint32Array).function!
96-
}
97-
public static var typedArrayKind: JavaScriptTypedArrayKind {
98-
valueForBitWidth(typeName: "UInt", bitWidth: UInt.bitWidth, when32: .uint32)
99-
}
10091
}
10192

10293
// MARK: - Concrete TypedArray classes
10394

10495
extension Int8: TypedArrayElement {
105-
public static var typedArrayClass: JSFunction { JSObject.global.Int8Array.function! }
106-
public static var typedArrayKind: JavaScriptTypedArrayKind { .int8 }
96+
public static var typedArrayClass = JSObject.global.Int8Array.function!
10797
}
10898
extension UInt8: TypedArrayElement {
109-
public static var typedArrayClass: JSFunction { JSObject.global.Uint8Array.function! }
110-
public static var typedArrayKind: JavaScriptTypedArrayKind { .uint8 }
99+
public static var typedArrayClass = JSObject.global.Uint8Array.function!
111100
}
112101
// TODO: Support Uint8ClampedArray?
113102

114103
extension Int16: TypedArrayElement {
115-
public static var typedArrayClass: JSFunction { JSObject.global.Int16Array.function! }
116-
public static var typedArrayKind: JavaScriptTypedArrayKind { .int16 }
104+
public static var typedArrayClass = JSObject.global.Int16Array.function!
117105
}
118106
extension UInt16: TypedArrayElement {
119-
public static var typedArrayClass: JSFunction { JSObject.global.Uint16Array.function! }
120-
public static var typedArrayKind: JavaScriptTypedArrayKind { .uint16 }
107+
public static var typedArrayClass = JSObject.global.Uint16Array.function!
121108
}
122109

123110
extension Int32: TypedArrayElement {
124-
public static var typedArrayClass: JSFunction { JSObject.global.Int32Array.function! }
125-
public static var typedArrayKind: JavaScriptTypedArrayKind { .int32 }
111+
public static var typedArrayClass = JSObject.global.Int32Array.function!
126112
}
127113
extension UInt32: TypedArrayElement {
128-
public static var typedArrayClass: JSFunction { JSObject.global.Uint32Array.function! }
129-
public static var typedArrayKind: JavaScriptTypedArrayKind { .uint32 }
114+
public static var typedArrayClass = JSObject.global.Uint32Array.function!
130115
}
131116

132117
// FIXME: Support passing BigInts across the bridge
133118
//extension Int64: TypedArrayElement {
134-
// public static var typedArrayClass: JSFunction { JSObject.global.BigInt64Array.function! }
135-
// public static var type: JavaScriptTypedArrayKind { .bigInt64 }
119+
// public static var typedArrayClass = JSObject.global.BigInt64Array.function!
136120
//}
137121
//extension UInt64: TypedArrayElement {
138-
// public static var typedArrayClass: JSFunction { JSObject.global.BigUint64Array.function! }
139-
// public static var type: JavaScriptTypedArrayKind { .bigUint64 }
122+
// public static var typedArrayClass = JSObject.global.BigUint64Array.function!
140123
//}
141124

142125
extension Float32: TypedArrayElement {
143-
public static var typedArrayClass: JSFunction { JSObject.global.Float32Array.function! }
144-
public static var typedArrayKind: JavaScriptTypedArrayKind { .float32 }
126+
public static var typedArrayClass = JSObject.global.Float32Array.function!
145127
}
146128
extension Float64: TypedArrayElement {
147-
public static var typedArrayClass: JSFunction { JSObject.global.Float64Array.function! }
148-
public static var typedArrayKind: JavaScriptTypedArrayKind { .float64 }
129+
public static var typedArrayClass = JSObject.global.Float64Array.function!
149130
}

Sources/JavaScriptKit/Compatibility.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
/// this and `SwiftRuntime.version` in `./Runtime/src/index.ts`.
44
@_cdecl("swjs_library_version")
55
func _library_version() -> Double {
6-
return 600
6+
return 610
77
}

Sources/JavaScriptKit/XcodeSupport.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ import _CJavaScriptKit
7474
) { fatalError() }
7575
func _release(_: JavaScriptObjectRef) { fatalError() }
7676
func _create_typed_array<T: TypedArrayElement>(
77-
_: JavaScriptTypedArrayKind,
77+
_: JavaScriptObjectRef,
7878
_: UnsafePointer<T>,
7979
_: Int32,
8080
_: UnsafeMutablePointer<JavaScriptObjectRef>!

Sources/_CJavaScriptKit/include/_CJavaScriptKit.h

+1-14
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,6 @@ typedef enum __attribute__((enum_extensibility(closed))) {
1818
JavaScriptValueKindFunction = 6,
1919
} JavaScriptValueKind;
2020

21-
typedef enum __attribute__((enum_extensibility(closed))) {
22-
JavaScriptTypedArrayKindInt8 = 0,
23-
JavaScriptTypedArrayKindUint8 = 1,
24-
JavaScriptTypedArrayKindInt16 = 2,
25-
JavaScriptTypedArrayKindUint16 = 3,
26-
JavaScriptTypedArrayKindInt32 = 4,
27-
JavaScriptTypedArrayKindUint32 = 5,
28-
JavaScriptTypedArrayKindBigInt64 = 6,
29-
JavaScriptTypedArrayKindBigUint64 = 7,
30-
JavaScriptTypedArrayKindFloat32 = 8,
31-
JavaScriptTypedArrayKindFloat64 = 9,
32-
} JavaScriptTypedArrayKind;
33-
3421
typedef unsigned JavaScriptPayload1;
3522
typedef unsigned JavaScriptPayload2;
3623
typedef double JavaScriptPayload3;
@@ -112,7 +99,7 @@ _release(const JavaScriptObjectRef ref);
11299

113100
__attribute__((__import_module__("javascript_kit"),
114101
__import_name__("swjs_create_typed_array"))) extern void
115-
_create_typed_array(const JavaScriptTypedArrayKind kind,
102+
_create_typed_array(const JavaScriptObjectRef constructor,
116103
const void *elementsPtr, const int length,
117104
JavaScriptObjectRef *result_obj);
118105

0 commit comments

Comments
 (0)