|
@@ -1305,24 +1305,42 @@ module HxbWriter = struct
|
|
| TSuper ->
|
|
| TSuper ->
|
|
Chunk.write_u8 writer.chunk 2;
|
|
Chunk.write_u8 writer.chunk 2;
|
|
true; (* TODO: ? *)
|
|
true; (* TODO: ? *)
|
|
- | TBool false ->
|
|
|
|
|
|
+ | TBool false when (ExtType.is_bool (follow_lazy_and_mono e.etype)) ->
|
|
Chunk.write_u8 writer.chunk 3;
|
|
Chunk.write_u8 writer.chunk 3;
|
|
false;
|
|
false;
|
|
- | TBool true ->
|
|
|
|
|
|
+ | TBool true when (ExtType.is_bool (follow_lazy_and_mono e.etype)) ->
|
|
Chunk.write_u8 writer.chunk 4;
|
|
Chunk.write_u8 writer.chunk 4;
|
|
false;
|
|
false;
|
|
- | TInt i32 ->
|
|
|
|
|
|
+ | TInt i32 when (ExtType.is_int (follow_lazy_and_mono e.etype)) ->
|
|
Chunk.write_u8 writer.chunk 5;
|
|
Chunk.write_u8 writer.chunk 5;
|
|
Chunk.write_i32 writer.chunk i32;
|
|
Chunk.write_i32 writer.chunk i32;
|
|
false;
|
|
false;
|
|
- | TFloat f ->
|
|
|
|
|
|
+ | TFloat f when (ExtType.is_float (follow_lazy_and_mono e.etype)) ->
|
|
Chunk.write_u8 writer.chunk 6;
|
|
Chunk.write_u8 writer.chunk 6;
|
|
Chunk.write_string writer.chunk f;
|
|
Chunk.write_string writer.chunk f;
|
|
false;
|
|
false;
|
|
- | TString s ->
|
|
|
|
|
|
+ | TString s when (ExtType.is_string (follow_lazy_and_mono e.etype)) ->
|
|
Chunk.write_u8 writer.chunk 7;
|
|
Chunk.write_u8 writer.chunk 7;
|
|
Chunk.write_string writer.chunk s;
|
|
Chunk.write_string writer.chunk s;
|
|
false
|
|
false
|
|
|
|
+ | TBool false ->
|
|
|
|
+ Chunk.write_u8 writer.chunk 13;
|
|
|
|
+ true;
|
|
|
|
+ | TBool true ->
|
|
|
|
+ Chunk.write_u8 writer.chunk 14;
|
|
|
|
+ true;
|
|
|
|
+ | TInt i32 ->
|
|
|
|
+ Chunk.write_u8 writer.chunk 15;
|
|
|
|
+ Chunk.write_i32 writer.chunk i32;
|
|
|
|
+ true;
|
|
|
|
+ | TFloat f ->
|
|
|
|
+ Chunk.write_u8 writer.chunk 16;
|
|
|
|
+ Chunk.write_string writer.chunk f;
|
|
|
|
+ true;
|
|
|
|
+ | TString s ->
|
|
|
|
+ Chunk.write_u8 writer.chunk 17;
|
|
|
|
+ Chunk.write_string writer.chunk s;
|
|
|
|
+ true;
|
|
end
|
|
end
|
|
(* vars 20-29 *)
|
|
(* vars 20-29 *)
|
|
| TLocal v ->
|
|
| TLocal v ->
|
|
@@ -1455,21 +1473,21 @@ module HxbWriter = struct
|
|
(* control flow 90-99 *)
|
|
(* control flow 90-99 *)
|
|
| TReturn None ->
|
|
| TReturn None ->
|
|
Chunk.write_u8 writer.chunk 90;
|
|
Chunk.write_u8 writer.chunk 90;
|
|
- false;
|
|
|
|
|
|
+ true;
|
|
| TReturn (Some e1) ->
|
|
| TReturn (Some e1) ->
|
|
Chunk.write_u8 writer.chunk 91;
|
|
Chunk.write_u8 writer.chunk 91;
|
|
loop e1;
|
|
loop e1;
|
|
- false;
|
|
|
|
|
|
+ true;
|
|
| TContinue ->
|
|
| TContinue ->
|
|
Chunk.write_u8 writer.chunk 92;
|
|
Chunk.write_u8 writer.chunk 92;
|
|
- false;
|
|
|
|
|
|
+ true;
|
|
| TBreak ->
|
|
| TBreak ->
|
|
Chunk.write_u8 writer.chunk 93;
|
|
Chunk.write_u8 writer.chunk 93;
|
|
- false;
|
|
|
|
|
|
+ true;
|
|
| TThrow e1 ->
|
|
| TThrow e1 ->
|
|
Chunk.write_u8 writer.chunk 94;
|
|
Chunk.write_u8 writer.chunk 94;
|
|
loop e1;
|
|
loop e1;
|
|
- false;
|
|
|
|
|
|
+ true;
|
|
(* access 100-119 *)
|
|
(* access 100-119 *)
|
|
| TEnumIndex e1 ->
|
|
| TEnumIndex e1 ->
|
|
Chunk.write_u8 writer.chunk 100;
|
|
Chunk.write_u8 writer.chunk 100;
|