@@ -148,8 +148,8 @@ export class SwiftRuntime {
148148 const argv = exports . swjs_prepare_host_function_call ( argc )
149149 for ( let index = 0 ; index < args . length ; index ++ ) {
150150 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 )
153153 }
154154 let output : any ;
155155 const callback_func_ref = this . heap . retain ( function ( result : any ) {
@@ -203,7 +203,7 @@ export class SwiftRuntime {
203203
204204 const decodeValue = (
205205 kind : JavaScriptValueKind ,
206- payload1 : number , payload2 : number , payload3 : number
206+ payload1 : number , payload2 : number
207207 ) => {
208208 switch ( kind ) {
209209 case JavaScriptValueKind . Boolean : {
@@ -213,7 +213,7 @@ export class SwiftRuntime {
213213 }
214214 }
215215 case JavaScriptValueKind . Number : {
216- return payload3 ;
216+ return payload2 ;
217217 }
218218 case JavaScriptValueKind . String : {
219219 return readString ( payload1 ) ;
@@ -237,50 +237,40 @@ export class SwiftRuntime {
237237
238238 const writeValue = (
239239 value : any , kind_ptr : pointer ,
240- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
240+ payload1_ptr : pointer , payload2_ptr : pointer
241241 ) => {
242242 if ( value === null ) {
243243 writeUint32 ( kind_ptr , JavaScriptValueKind . Null ) ;
244- writeUint32 ( payload1_ptr , 0 ) ;
245- writeUint32 ( payload2_ptr , 0 ) ;
246244 return ;
247245 }
248246 switch ( typeof value ) {
249247 case "boolean" : {
250248 writeUint32 ( kind_ptr , JavaScriptValueKind . Boolean ) ;
251249 writeUint32 ( payload1_ptr , value ? 1 : 0 ) ;
252- writeUint32 ( payload2_ptr , 0 ) ;
253250 break ;
254251 }
255252 case "number" : {
256253 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 ) ;
260255 break ;
261256 }
262257 case "string" : {
263258 writeUint32 ( kind_ptr , JavaScriptValueKind . String ) ;
264259 writeUint32 ( payload1_ptr , this . heap . retain ( value ) ) ;
265- writeUint32 ( payload2_ptr , 0 ) ;
266260 break ;
267261 }
268262 case "undefined" : {
269263 writeUint32 ( kind_ptr , JavaScriptValueKind . Undefined ) ;
270- writeUint32 ( payload1_ptr , 0 ) ;
271- writeUint32 ( payload2_ptr , 0 ) ;
272264 break ;
273265 }
274266 case "object" : {
275267 writeUint32 ( kind_ptr , JavaScriptValueKind . Object ) ;
276268 writeUint32 ( payload1_ptr , this . heap . retain ( value ) ) ;
277- writeUint32 ( payload2_ptr , 0 ) ;
278269 break ;
279270 }
280271 case "function" : {
281272 writeUint32 ( kind_ptr , JavaScriptValueKind . Function ) ;
282273 writeUint32 ( payload1_ptr , this . heap . retain ( value ) ) ;
283- writeUint32 ( payload2_ptr , 0 ) ;
284274 break ;
285275 }
286276 default :
@@ -289,17 +279,15 @@ export class SwiftRuntime {
289279 }
290280
291281 // 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.
294283 const decodeValues = ( ptr : pointer , length : number ) => {
295284 let result = [ ]
296285 for ( let index = 0 ; index < length ; index ++ ) {
297- const base = ptr + 24 * index
286+ const base = ptr + 16 * index
298287 const kind = readUInt32 ( base )
299288 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 ) )
303291 }
304292 return result
305293 }
@@ -308,36 +296,36 @@ export class SwiftRuntime {
308296 swjs_set_prop : (
309297 ref : ref , name : ref ,
310298 kind : JavaScriptValueKind ,
311- payload1 : number , payload2 : number , payload3 : number
299+ payload1 : number , payload2 : number
312300 ) => {
313301 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 ) )
315303 } ,
316304 swjs_get_prop : (
317305 ref : ref , name : ref ,
318306 kind_ptr : pointer ,
319- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : number
307+ payload1_ptr : pointer , payload2_ptr : pointer
320308 ) => {
321309 const obj = this . heap . referenceHeap ( ref ) ;
322310 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 ) ;
324312 } ,
325313 swjs_set_subscript : (
326314 ref : ref , index : number ,
327315 kind : JavaScriptValueKind ,
328- payload1 : number , payload2 : number , payload3 : number
316+ payload1 : number , payload2 : number
329317 ) => {
330318 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 ) )
332320 } ,
333321 swjs_get_subscript : (
334322 ref : ref , index : number ,
335323 kind_ptr : pointer ,
336- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
324+ payload1_ptr : pointer , payload2_ptr : pointer
337325 ) => {
338326 const obj = this . heap . referenceHeap ( ref ) ;
339327 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 ) ;
341329 } ,
342330 swjs_encode_string : ( ref : ref , bytes_ptr_result : pointer ) => {
343331 const bytes = textEncoder . encode ( this . heap . referenceHeap ( ref ) ) ;
@@ -358,22 +346,22 @@ export class SwiftRuntime {
358346 swjs_call_function : (
359347 ref : ref , argv : pointer , argc : number ,
360348 kind_ptr : pointer ,
361- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
349+ payload1_ptr : pointer , payload2_ptr : pointer
362350 ) => {
363351 const func = this . heap . referenceHeap ( ref )
364352 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 ) ;
366354 } ,
367355 swjs_call_function_with_this : (
368356 obj_ref : ref , func_ref : ref ,
369357 argv : pointer , argc : number ,
370358 kind_ptr : pointer ,
371- payload1_ptr : pointer , payload2_ptr : pointer , payload3_ptr : pointer
359+ payload1_ptr : pointer , payload2_ptr : pointer
372360 ) => {
373361 const obj = this . heap . referenceHeap ( obj_ref )
374362 const func = this . heap . referenceHeap ( func_ref )
375363 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 ) ;
377365 } ,
378366 swjs_create_function : (
379367 host_func_id : number ,
0 commit comments