@@ -286,13 +286,15 @@ module Constants = struct
286
286
; i32_const' 5 (* string *)
287
287
; eq i32
288
288
; if_
289
- [ i32_const' 0
290
- ; new_ [] " EjStringBuilder"
291
- ; local_set foreign_ptr
292
- (* load length / characters to be processed *)
293
- ; local_get local_ptr
289
+ [ (* load length / characters to be processed *)
290
+ local_get local_ptr
294
291
; load ctx.ctx.memory ~offset: 8 i32
295
292
; local_set n
293
+ (* initialize buffer in runtime *)
294
+ ; i32_const' 0
295
+ ; local_get n
296
+ ; new_ [i32] " EjStringBuilderUTF8"
297
+ ; local_set foreign_ptr
296
298
(* initialize moving pointer *)
297
299
; local_get local_ptr
298
300
; i32_const' 12
@@ -304,7 +306,7 @@ module Constants = struct
304
306
; if_
305
307
[ local_get foreign_ptr (* for release *)
306
308
; local_get foreign_ptr (* for finalize *)
307
- ; call (foreign ~params: [i32] ~result: [i32] " EjStringBuilder #finalize" )
309
+ ; call (foreign ~params: [i32] ~result: [i32] " EjStringBuilderUTF8 #finalize" )
308
310
; local_set foreign_ptr (* for return *)
309
311
; call (foreign ~params: [i32] ~result: [] " __release" )
310
312
; local_get foreign_ptr
@@ -316,9 +318,9 @@ module Constants = struct
316
318
; local_set n
317
319
; local_get foreign_ptr
318
320
; local_get local_ptr
321
+ (* TODO: speed up string constant allocation by copying words. *)
319
322
; load ctx.ctx.memory ~pack: U8 i32
320
- ; call (foreign ~params: [i32; i32] ~result: [i32] " EjStringBuilder#append" )
321
- ; drop
323
+ ; call (foreign ~params: [i32; i32] ~result: [] " EjStringBuilderUTF8#putByte" )
322
324
; local_get local_ptr
323
325
; i32_const' 1
324
326
; add i32
0 commit comments