1
1
# # serializing values ##
2
2
3
3
# dummy types to tell number of bytes used to store length (4 or 1)
4
- abstract LongSymbol
5
4
abstract LongTuple
6
5
abstract LongExpr
7
6
abstract UndefRefTag
@@ -14,11 +13,11 @@ let i = 2
14
13
for t = {Symbol, Int8, Uint8, Int16, Uint16, Int32, Uint32,
15
14
Int64, Uint64, Int128, Uint128, Float32, Float64, Char, Ptr,
16
15
DataType, UnionType, Function,
17
- Tuple, Array, Expr, LongSymbol , LongTuple, LongExpr,
16
+ Tuple, Array, Expr, :reserved21 , LongTuple, LongExpr,
18
17
LineNumberNode, SymbolNode, LabelNode, GotoNode,
19
18
QuoteNode, TopNode, TypeVar, Box, LambdaStaticData,
20
- Module, UndefRefTag, Task, :reserved4 ,
21
- :reserved5 , : reserved6 , :reserved7 , :reserved8 ,
19
+ Module, UndefRefTag, Task, ASCIIString, UTF8String ,
20
+ :reserved6 , :reserved7 , :reserved8 ,
22
21
:reserved9 , :reserved10 , :reserved11 , :reserved12 ,
23
22
24
23
(), Bool, Any, :Any , None, Top, Undef, Type,
@@ -31,7 +30,7 @@ let i = 2
31
30
:mul_float , :unbox , :box ,
32
31
:eq_int , :slt_int , :sle_int , :ne_int ,
33
32
:arrayset , :arrayref ,
34
- :reserved13 , :reserved14 , :reserved15 , :reserved16 ,
33
+ :Core , :Base , :reserved15 , :reserved16 ,
35
34
:reserved17 , :reserved18 , :reserved19 , :reserved20 ,
36
35
false , true , nothing , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ,
37
36
12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 ,
@@ -79,16 +78,9 @@ function serialize(s, x::Symbol)
79
78
if haskey (ser_tag, x)
80
79
return write_as_tag (s, x)
81
80
end
82
- name = string (x)
83
- ln = sizeof (name)
84
- if ln <= 255
85
- writetag (s, Symbol)
86
- write (s, uint8 (ln))
87
- else
88
- writetag (s, LongSymbol)
89
- write (s, int32 (ln))
90
- end
91
- write (s, name)
81
+ writetag (s, Symbol)
82
+ write (s, x)
83
+ write (s, 0x00 )
92
84
end
93
85
94
86
function serialize_array_data (s, a)
323
315
324
316
deserialize_tuple (s, len) = ntuple (len, i-> deserialize (s))
325
317
326
- deserialize (s, :: Type{Symbol} ) = symbol (read (s, Uint8, int32 (read (s, Uint8))))
327
- deserialize (s, :: Type{LongSymbol} ) = symbol (read (s, Uint8, read (s, Int32)))
318
+ function deserialize (s, :: Type{Symbol} )
319
+ r = readuntil (s,0x00 )
320
+ pop! (r)
321
+ symbol (r)
322
+ end
328
323
329
324
function deserialize (s, :: Type{Module} )
330
325
path = deserialize (s)
0 commit comments