Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 3 additions & 16 deletions
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‎

Lines changed: 13 additions & 32 deletions
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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 1 addition & 14 deletions
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 JavaScriptTypedArrayKindkind,
102+
_create_typed_array(const JavaScriptObjectRefconstructor,
116103
const void *elementsPtr, const int length,
117104
JavaScriptObjectRef *result_obj);
118105

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /