@@ -58,41 +58,45 @@ impl<'a> MappingsDecoder<'a> {
5858impl Iterator for MappingsDecoder < ' _ > {
5959 type Item = Mapping ;
6060
61+ #[ allow( unsafe_code) ]
6162 fn next ( & mut self ) -> Option < Self :: Item > {
6263 for c in & mut self . mappings_iter {
63- let value = B64 [ * c as usize ] ;
64+ let value = unsafe { * B64 . get_unchecked ( * c as usize ) } ;
6465 if value == ERR {
6566 continue ;
6667 }
6768 if ( value & COM ) != 0 {
69+ #[ allow( unsafe_code) ]
6870 let mut mapping = Mapping {
6971 generated_line : self . generated_line ,
70- generated_column : self . current_data [ 0 ] ,
72+ generated_column : unsafe { * self . current_data . get_unchecked ( 0 ) } ,
7173 original : None ,
7274 } ;
7375 let current_data_pos = self . current_data_pos ;
7476 self . current_data_pos = 0 ;
7577 if value == SEM {
7678 self . generated_line += 1 ;
77- self . current_data [ 0 ] = 0 ;
79+ unsafe {
80+ * self . current_data . get_unchecked_mut ( 0 ) = 0
81+ } ;
7882 }
7983 match current_data_pos {
8084 1 => return Some ( mapping) ,
8185 4 => {
8286 mapping. original = Some ( OriginalLocation {
83- source_index : self . current_data [ 1 ] ,
84- original_line : self . current_data [ 2 ] ,
85- original_column : self . current_data [ 3 ] ,
87+ source_index : unsafe { * self . current_data . get_unchecked ( 1 ) } ,
88+ original_line : unsafe { * self . current_data . get_unchecked ( 2 ) } ,
89+ original_column : unsafe { * self . current_data . get_unchecked ( 3 ) } ,
8690 name_index : None ,
8791 } ) ;
8892 return Some ( mapping) ;
8993 }
9094 5 => {
9195 mapping. original = Some ( OriginalLocation {
92- source_index : self . current_data [ 1 ] ,
93- original_line : self . current_data [ 2 ] ,
94- original_column : self . current_data [ 3 ] ,
95- name_index : Some ( self . current_data [ 4 ] ) ,
96+ source_index : unsafe { * self . current_data . get_unchecked ( 1 ) } ,
97+ original_line : unsafe { * self . current_data . get_unchecked ( 2 ) } ,
98+ original_column : unsafe { * self . current_data . get_unchecked ( 3 ) } ,
99+ name_index : Some ( unsafe { * self . current_data . get_unchecked ( 4 ) } ) ,
96100 } ) ;
97101 return Some ( mapping) ;
98102 }
@@ -107,9 +111,12 @@ impl Iterator for MappingsDecoder<'_> {
107111 self . current_value >> 1
108112 } ;
109113 if self . current_data_pos < 5 {
110- self . current_data [ self . current_data_pos ] =
111- ( self . current_data [ self . current_data_pos ] as i64 + final_value)
112- as u32 ;
114+ #[ allow( unsafe_code) ]
115+ unsafe {
116+ * self . current_data . get_unchecked_mut ( self . current_data_pos ) =
117+ ( * self . current_data . get_unchecked ( self . current_data_pos ) as i64 + final_value)
118+ as u32
119+ }
113120 }
114121 self . current_data_pos += 1 ;
115122 self . current_value_pos = 0 ;
@@ -128,31 +135,31 @@ impl Iterator for MappingsDecoder<'_> {
128135 1 => {
129136 return Some ( Mapping {
130137 generated_line : self . generated_line ,
131- generated_column : self . current_data [ 0 ] ,
138+ generated_column : unsafe { * self . current_data . get_unchecked ( 0 ) } ,
132139 original : None ,
133140 } )
134141 }
135142 4 => {
136143 return Some ( Mapping {
137144 generated_line : self . generated_line ,
138- generated_column : self . current_data [ 0 ] ,
145+ generated_column : unsafe { * self . current_data . get_unchecked ( 0 ) } ,
139146 original : Some ( OriginalLocation {
140- source_index : self . current_data [ 1 ] ,
141- original_line : self . current_data [ 2 ] ,
142- original_column : self . current_data [ 3 ] ,
147+ source_index : unsafe { * self . current_data . get_unchecked ( 1 ) } ,
148+ original_line : unsafe { * self . current_data . get_unchecked ( 2 ) } ,
149+ original_column : unsafe { * self . current_data . get_unchecked ( 3 ) } ,
143150 name_index : None ,
144151 } ) ,
145152 } )
146153 }
147154 5 => {
148155 return Some ( Mapping {
149156 generated_line : self . generated_line ,
150- generated_column : self . current_data [ 0 ] ,
157+ generated_column : unsafe { * self . current_data . get_unchecked ( 0 ) } ,
151158 original : Some ( OriginalLocation {
152- source_index : self . current_data [ 1 ] ,
153- original_line : self . current_data [ 2 ] ,
154- original_column : self . current_data [ 3 ] ,
155- name_index : Some ( self . current_data [ 4 ] ) ,
159+ source_index : unsafe { * self . current_data . get_unchecked ( 1 ) } ,
160+ original_line : unsafe { * self . current_data . get_unchecked ( 2 ) } ,
161+ original_column : unsafe { * self . current_data . get_unchecked ( 3 ) } ,
162+ name_index : Some ( unsafe { * self . current_data . get_unchecked ( 4 ) } ) ,
156163 } ) ,
157164 } )
158165 }
0 commit comments