2
2
use std:: fmt:: { self , Debug , Display , Formatter } ;
3
3
#[ cfg( feature = "debug" ) ]
4
4
use std:: thread;
5
- use std:: { borrow:: Cow , fmt:: Write , time:: Instant } ;
5
+ use std:: { borrow:: Cow , fmt:: Write , mem :: transmute , time:: Instant } ;
6
6
7
7
#[ cfg( feature = "pretty_assertions" ) ]
8
8
use pretty_assertions:: assert_eq;
@@ -24,7 +24,7 @@ use crate::{
24
24
debug:: { dump, AssertValid } ,
25
25
mode:: Mode ,
26
26
option:: { CompressOptions , MangleOptions } ,
27
- program_data:: analyze,
27
+ program_data:: { analyze, ProgramData } ,
28
28
util:: { force_dump_program, now} ,
29
29
} ;
30
30
@@ -266,17 +266,19 @@ impl Compressor<'_> {
266
266
//
267
267
// This is swc version of `node.optimize(this);`.
268
268
269
- let mut visitor = optimizer (
270
- self . marks ,
271
- self . options ,
272
- self . mangle_options ,
273
- & mut data,
274
- self . mode ,
275
- !self . dump_for_infinite_loop . is_empty ( ) ,
276
- ) ;
277
- n. visit_mut_with ( & mut visitor) ;
269
+ {
270
+ let mut visitor = optimizer (
271
+ self . marks ,
272
+ self . options ,
273
+ self . mangle_options ,
274
+ unsafe { transmute :: < & mut ProgramData , & mut ProgramData > ( & mut data) } ,
275
+ self . mode ,
276
+ !self . dump_for_infinite_loop . is_empty ( ) ,
277
+ ) ;
278
+ n. visit_mut_with ( & mut visitor) ;
278
279
279
- self . changed |= visitor. changed ( ) ;
280
+ self . changed |= visitor. changed ( ) ;
281
+ }
280
282
281
283
// let done = dump(&*n);
282
284
// debug!("===== Result =====\n{}", done);
0 commit comments