@@ -1371,11 +1371,7 @@ encode_proc_tag(mrb_state *mrb, CborWriter *w, mrb_value obj)
13711371{
13721372 mrb_value proc_rev = cbor_proc_tag_rev_registry (mrb );
13731373 struct proc_tag_foreach_arg a = {w , obj , FALSE };
1374- struct RBasic * basic_ptr = mrb_basic_ptr (proc_rev );
1375- unsigned int was_frozen = basic_ptr -> frozen ;
1376- basic_ptr -> frozen = TRUE;
13771374 mrb_hash_foreach (mrb , mrb_hash_ptr (proc_rev ), proc_tag_foreach_cb , & a );
1378- basic_ptr -> frozen = was_frozen ;
13791375 return a .found ;
13801376}
13811377
@@ -1629,7 +1625,7 @@ encode_value_fast(CborWriter *w, mrb_value obj)
16291625// Fast decoder
16301626// ============================================================================
16311627
1632- static mrb_value decode_value_fast (mrb_state * mrb , Reader * r , mrb_value sharedrefs , mrb_value src );
1628+ static mrb_value decode_value_fast (mrb_state * mrb , Reader * r , mrb_value src );
16331629
16341630static mrb_value
16351631decode_uint_fast (mrb_state * mrb , Reader * r )
@@ -1745,7 +1741,7 @@ decode_float_fast(mrb_state *mrb, Reader *r)
17451741#endif
17461742
17471743static mrb_value
1748- decode_value_fast (mrb_state * mrb , Reader * r , mrb_value sharedrefs , mrb_value src )
1744+ decode_value_fast (mrb_state * mrb , Reader * r , mrb_value src )
17491745{
17501746 reader_check_depth (mrb , r );
17511747 r -> depth ++ ;
@@ -1788,7 +1784,7 @@ decode_value_fast(mrb_state *mrb, Reader *r, mrb_value sharedrefs, mrb_value src
17881784 mrb_value ary = mrb_ary_new (mrb );
17891785 int idx = mrb_gc_arena_save (mrb );
17901786 for (mrb_int i = 0 ; i < len ; i ++ ) {
1791- mrb_ary_push (mrb , ary , decode_value_fast (mrb , r , sharedrefs , src ));
1787+ mrb_ary_push (mrb , ary , decode_value_fast (mrb , r , src ));
17921788 mrb_gc_arena_restore (mrb , idx );
17931789 }
17941790 result = ary ;
@@ -1799,8 +1795,8 @@ decode_value_fast(mrb_state *mrb, Reader *r, mrb_value sharedrefs, mrb_value src
17991795 mrb_value hash = mrb_hash_new (mrb );
18001796 int idx = mrb_gc_arena_save (mrb );
18011797 for (mrb_int i = 0 ; i < len ; i ++ ) {
1802- mrb_value key = decode_value_fast (mrb , r , sharedrefs , src );
1803- mrb_value val = decode_value_fast (mrb , r , sharedrefs , src );
1798+ mrb_value key = decode_value_fast (mrb , r , src );
1799+ mrb_value val = decode_value_fast (mrb , r , src );
18041800 mrb_hash_set (mrb , hash , key , val );
18051801 mrb_gc_arena_restore (mrb , idx );
18061802 }
@@ -1814,7 +1810,7 @@ decode_value_fast(mrb_state *mrb, Reader *r, mrb_value sharedrefs, mrb_value src
18141810
18151811 if (mrb_cmp (mrb , tag , mrb_fixnum_value (39 )) == 0 ) {
18161812 /* symbol — always encoded as tag 39 + string in fast path */
1817- mrb_value v = decode_value_fast (mrb , r , sharedrefs , src );
1813+ mrb_value v = decode_value_fast (mrb , r , src );
18181814 if (likely (mrb_string_p (v ))) {
18191815 result = mrb_symbol_value (mrb_intern_str (mrb , v ));
18201816 } else {
@@ -1823,20 +1819,20 @@ decode_value_fast(mrb_state *mrb, Reader *r, mrb_value sharedrefs, mrb_value src
18231819 }
18241820 else if (mrb_cmp (mrb , tag , mrb_convert_uint32 (mrb , CBOR_TAG_CLASS )) == 0 ) {
18251821 /* class/module — tag 49999 + string */
1826- mrb_value v = decode_value_fast (mrb , r , sharedrefs ,src );
1822+ mrb_value v = decode_value_fast (mrb , r ,src );
18271823 if (likely (mrb_string_p (v ))) {
18281824 result = mrb_str_constantize (mrb , v );
18291825 } else {
18301826 mrb_raise (mrb , E_TYPE_ERROR , "fast: tag 49999 payload must be string" );
18311827 }
18321828 } else {
1833- result = decode_class_tag (mrb , r , src , sharedrefs , tag );
1829+ result = decode_class_tag (mrb , r , src , mrb_undef_value () , tag );
18341830 if (!mrb_undef_p (result ))break ;
18351831
1836- result = decode_proc_tag (mrb , r , src , sharedrefs , tag );
1832+ result = decode_proc_tag (mrb , r , src , mrb_undef_value () , tag );
18371833 if (!mrb_undef_p (result ))break ;
18381834
1839- result = decode_unhandled_tag (mrb , r , src , sharedrefs , tag );
1835+ result = decode_unhandled_tag (mrb , r , src , mrb_undef_value () , tag );
18401836 }
18411837 } break ;
18421838 case 7 :
@@ -1888,7 +1884,7 @@ cbor_decode_fast_rb(mrb_state *mrb, mrb_value self)
18881884 mrb_value owned = mrb_str_byte_subseq (mrb , src , 0 , RSTRING_LEN (src ));
18891885 Reader r ;
18901886 reader_init (& r , (const uint8_t * )RSTRING_PTR (owned ), (size_t )RSTRING_LEN (owned ));
1891- return decode_value_fast (mrb , & r , mrb_undef_value (), owned );
1887+ return decode_value_fast (mrb , & r , owned );
18921888}
18931889
18941890// ============================================================================
@@ -2935,7 +2931,7 @@ mrb_cbor_decode_fast(mrb_state *mrb, mrb_value buf)
29352931 mrb_value owned = mrb_str_byte_subseq (mrb , buf , 0 , RSTRING_LEN (buf ));
29362932 Reader r ;
29372933 reader_init (& r , (const uint8_t * )RSTRING_PTR (owned ), (size_t )RSTRING_LEN (owned ));
2938- return decode_value_fast (mrb , & r , mrb_undef_value (), owned );
2934+ return decode_value_fast (mrb , & r , owned );
29392935 }
29402936 mrb_raise (mrb , E_TYPE_ERROR , "buf is not a String" );
29412937}
0 commit comments