@@ -148,8 +148,8 @@ export class SwiftRuntime {
148
148
const argv = exports . swjs_prepare_host_function_call ( argc )
149
149
for ( let index = 0 ; index < args . length ; index ++ ) {
150
150
const argument = args [ index ]
151
- const base = argv + 24 * index
152
- writeValue ( argument , base , base + 4 , base + 8 , base + 16 )
151
+ const base = argv + 16 * index
152
+ writeValue ( argument , base , base + 4 , base + 8 )
153
153
}
154
154
let output : any ;
155
155
const callback_func_ref = this . heap . retain ( function ( result : any ) {
@@ -203,7 +203,7 @@ export class SwiftRuntime {
203
203
204
204
const decodeValue = (
205
205
kind : JavaScriptValueKind ,
206
- payload1 : number , payload2 : number , payload3 : number
206
+ payload1 : number , payload2 : number
207
207
) => {
208
208
switch ( kind ) {
209
209
case JavaScriptValueKind . Boolean : {
@@ -213,7 +213,7 @@ export class SwiftRuntime {
213
213
}
214
214
}
215
215
case JavaScriptValueKind . Number : {
216
- return payload3 ;
216
+ return payload2 ;
217
217
}
218
218
case JavaScriptValueKind . String : {
219
219
return readString ( payload1 ) ;
@@ -237,50 +237,40 @@ export class SwiftRuntime {
237
237
238
238
const writeValue = (
239
239
value : any , kind_ptr : pointer ,
240
- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
240
+ payload1_ptr : pointer , payload2_ptr : pointer
241
241
) => {
242
242
if ( value === null ) {
243
243
writeUint32 ( kind_ptr , JavaScriptValueKind . Null ) ;
244
- writeUint32 ( payload1_ptr , 0 ) ;
245
- writeUint32 ( payload2_ptr , 0 ) ;
246
244
return ;
247
245
}
248
246
switch ( typeof value ) {
249
247
case "boolean" : {
250
248
writeUint32 ( kind_ptr , JavaScriptValueKind . Boolean ) ;
251
249
writeUint32 ( payload1_ptr , value ? 1 : 0 ) ;
252
- writeUint32 ( payload2_ptr , 0 ) ;
253
250
break ;
254
251
}
255
252
case "number" : {
256
253
writeUint32 ( kind_ptr , JavaScriptValueKind . Number ) ;
257
- writeUint32 ( payload1_ptr , 0 ) ;
258
- writeUint32 ( payload2_ptr , 0 ) ;
259
- writeFloat64 ( payload3_ptr , value ) ;
254
+ writeFloat64 ( payload2_ptr , value ) ;
260
255
break ;
261
256
}
262
257
case "string" : {
263
258
writeUint32 ( kind_ptr , JavaScriptValueKind . String ) ;
264
259
writeUint32 ( payload1_ptr , this . heap . retain ( value ) ) ;
265
- writeUint32 ( payload2_ptr , 0 ) ;
266
260
break ;
267
261
}
268
262
case "undefined" : {
269
263
writeUint32 ( kind_ptr , JavaScriptValueKind . Undefined ) ;
270
- writeUint32 ( payload1_ptr , 0 ) ;
271
- writeUint32 ( payload2_ptr , 0 ) ;
272
264
break ;
273
265
}
274
266
case "object" : {
275
267
writeUint32 ( kind_ptr , JavaScriptValueKind . Object ) ;
276
268
writeUint32 ( payload1_ptr , this . heap . retain ( value ) ) ;
277
- writeUint32 ( payload2_ptr , 0 ) ;
278
269
break ;
279
270
}
280
271
case "function" : {
281
272
writeUint32 ( kind_ptr , JavaScriptValueKind . Function ) ;
282
273
writeUint32 ( payload1_ptr , this . heap . retain ( value ) ) ;
283
- writeUint32 ( payload2_ptr , 0 ) ;
284
274
break ;
285
275
}
286
276
default :
@@ -289,17 +279,15 @@ export class SwiftRuntime {
289
279
}
290
280
291
281
// Note:
292
- // `decodeValues` assumes that the size of RawJSValue is 24
293
- // and the alignment of it is 8
282
+ // `decodeValues` assumes that the size of RawJSValue is 16.
294
283
const decodeValues = ( ptr : pointer , length : number ) => {
295
284
let result = [ ]
296
285
for ( let index = 0 ; index < length ; index ++ ) {
297
- const base = ptr + 24 * index
286
+ const base = ptr + 16 * index
298
287
const kind = readUInt32 ( base )
299
288
const payload1 = readUInt32 ( base + 4 )
300
- const payload2 = readUInt32 ( base + 8 )
301
- const payload3 = readFloat64 ( base + 16 )
302
- result . push ( decodeValue ( kind , payload1 , payload2 , payload3 ) )
289
+ const payload2 = readFloat64 ( base + 8 )
290
+ result . push ( decodeValue ( kind , payload1 , payload2 ) )
303
291
}
304
292
return result
305
293
}
@@ -308,36 +296,36 @@ export class SwiftRuntime {
308
296
swjs_set_prop : (
309
297
ref : ref , name : ref ,
310
298
kind : JavaScriptValueKind ,
311
- payload1 : number , payload2 : number , payload3 : number
299
+ payload1 : number , payload2 : number
312
300
) => {
313
301
const obj = this . heap . referenceHeap ( ref ) ;
314
- Reflect . set ( obj , readString ( name ) , decodeValue ( kind , payload1 , payload2 , payload3 ) )
302
+ Reflect . set ( obj , readString ( name ) , decodeValue ( kind , payload1 , payload2 ) )
315
303
} ,
316
304
swjs_get_prop : (
317
305
ref : ref , name : ref ,
318
306
kind_ptr : pointer ,
319
- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : number
307
+ payload1_ptr : pointer , payload2_ptr : pointer
320
308
) => {
321
309
const obj = this . heap . referenceHeap ( ref ) ;
322
310
const result = Reflect . get ( obj , readString ( name ) ) ;
323
- writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr , payload3_ptr ) ;
311
+ writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr ) ;
324
312
} ,
325
313
swjs_set_subscript : (
326
314
ref : ref , index : number ,
327
315
kind : JavaScriptValueKind ,
328
- payload1 : number , payload2 : number , payload3 : number
316
+ payload1 : number , payload2 : number
329
317
) => {
330
318
const obj = this . heap . referenceHeap ( ref ) ;
331
- Reflect . set ( obj , index , decodeValue ( kind , payload1 , payload2 , payload3 ) )
319
+ Reflect . set ( obj , index , decodeValue ( kind , payload1 , payload2 ) )
332
320
} ,
333
321
swjs_get_subscript : (
334
322
ref : ref , index : number ,
335
323
kind_ptr : pointer ,
336
- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
324
+ payload1_ptr : pointer , payload2_ptr : pointer
337
325
) => {
338
326
const obj = this . heap . referenceHeap ( ref ) ;
339
327
const result = Reflect . get ( obj , index ) ;
340
- writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr , payload3_ptr ) ;
328
+ writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr ) ;
341
329
} ,
342
330
swjs_encode_string : ( ref : ref , bytes_ptr_result : pointer ) => {
343
331
const bytes = textEncoder . encode ( this . heap . referenceHeap ( ref ) ) ;
@@ -358,22 +346,22 @@ export class SwiftRuntime {
358
346
swjs_call_function : (
359
347
ref : ref , argv : pointer , argc : number ,
360
348
kind_ptr : pointer ,
361
- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
349
+ payload1_ptr : pointer , payload2_ptr : pointer
362
350
) => {
363
351
const func = this . heap . referenceHeap ( ref )
364
352
const result = Reflect . apply ( func , undefined , decodeValues ( argv , argc ) )
365
- writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr , payload3_ptr ) ;
353
+ writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr ) ;
366
354
} ,
367
355
swjs_call_function_with_this : (
368
356
obj_ref : ref , func_ref : ref ,
369
357
argv : pointer , argc : number ,
370
358
kind_ptr : pointer ,
371
- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
359
+ payload1_ptr : pointer , payload2_ptr : pointer
372
360
) => {
373
361
const obj = this . heap . referenceHeap ( obj_ref )
374
362
const func = this . heap . referenceHeap ( func_ref )
375
363
const result = Reflect . apply ( func , obj , decodeValues ( argv , argc ) )
376
- writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr , payload3_ptr ) ;
364
+ writeValue ( result , kind_ptr , payload1_ptr , payload2_ptr ) ;
377
365
} ,
378
366
swjs_create_function : (
379
367
host_func_id : number ,
0 commit comments