@@ -65,6 +65,7 @@ let get_nth_inst locs idx =
65
65
| Some (_ , i ) -> Some i
66
66
| None -> None
67
67
68
+
68
69
(* Decoding *)
69
70
70
71
(* TODO: make Decode module reusable instead of duplicating code *)
@@ -144,21 +145,27 @@ let decode_hint locs foff s =
144
145
145
146
let decode_func_hints locs foff = decode_vec (decode_hint locs foff)
146
147
147
- let decode_func m s =
148
+ let get_func_start_off f bs =
149
+ let s = stream bs in
150
+ skip f.at.left.column s;
151
+ let _ = decode_u32 s in
152
+ pos s
153
+
154
+ let decode_func m bs s =
148
155
let fidx = decode_u32 s in
149
156
let f = get_func m fidx in
150
- let foff = Int32. of_int f.at.left.column in
157
+ let foff = Int32. of_int (get_func_start_off f bs) in
151
158
let locs = flatten_instr_locs f.it.body in
152
159
let hs = decode_func_hints locs foff s in
153
160
(fidx, List. rev hs)
154
161
155
- let decode_funcs m s =
156
- let fs = decode_vec (decode_func m) s in
162
+ let decode_funcs m bs s =
163
+ let fs = decode_vec (decode_func m bs ) s in
157
164
IdxMap. add_seq (List. to_seq fs) IdxMap. empty
158
165
159
- let decode m _ custom =
166
+ let decode m bs custom =
160
167
let s = stream custom.it.content in
161
- try { func_hints = decode_funcs m s } @@ custom.at
168
+ try { func_hints = decode_funcs m bs s } @@ custom.at
162
169
with EOS -> decode_error (pos s) " unexpected end of name section"
163
170
164
171
(* Encoding *)
@@ -200,22 +207,22 @@ let encode_hint locs foff buf h =
200
207
201
208
let encode_func_hints buf locs foff = encode_vec buf (encode_hint locs foff)
202
209
203
- let encode_func m buf t =
210
+ let encode_func m bs buf t =
204
211
let fidx, hs = t in
205
212
encode_u32 buf fidx;
206
213
let f = get_func m fidx in
207
- let foff = f.at.left.column in
214
+ let foff = get_func_start_off f bs in
208
215
let locs = flatten_instr_locs f.it.body in
209
216
encode_func_hints buf locs foff hs
210
217
211
- let encode_funcs buf m fhs =
212
- encode_vec buf (encode_func m) (List. of_seq (IdxMap. to_seq fhs))
218
+ let encode_funcs buf m bs fhs =
219
+ encode_vec buf (encode_func m bs ) (List. of_seq (IdxMap. to_seq fhs))
213
220
214
221
let encode m bs sec =
215
222
let { func_hints } = sec.it in
216
223
let m2 = Decode. decode " " bs in
217
224
let buf = Buffer. create 200 in
218
- encode_funcs buf m2 func_hints;
225
+ encode_funcs buf m2 bs func_hints;
219
226
let content = Buffer. contents buf in
220
227
{
221
228
name = Utf8. decode " metadata.code.branch_hint" ;
0 commit comments