@@ -717,6 +717,12 @@ impl Future for Isolate {
717
717
inner. check_last_exception ( ) ?;
718
718
719
719
// We're idle if pending_ops is empty.
720
+ eprintln ! (
721
+ "has ops {} have unpoolled ops {} dyn import {}" ,
722
+ inner. pending_ops. len( ) ,
723
+ inner. have_unpolled_ops,
724
+ inner. pending_dyn_imports. is_empty( )
725
+ ) ;
720
726
if inner. pending_ops . is_empty ( ) && inner. pending_dyn_imports . is_empty ( ) {
721
727
Poll :: Ready ( Ok ( ( ) ) )
722
728
} else {
@@ -759,7 +765,6 @@ pub fn js_check<T>(r: Result<T, ErrBox>) -> T {
759
765
#[ cfg( test) ]
760
766
pub mod tests {
761
767
use super :: * ;
762
- use futures:: executor:: ThreadPool ;
763
768
use futures:: future:: lazy;
764
769
use std:: io;
765
770
use std:: ops:: FnOnce ;
@@ -769,8 +774,7 @@ pub mod tests {
769
774
where
770
775
F : FnOnce ( & mut Context ) + Send + ' static ,
771
776
{
772
- let poll = ThreadPool :: new ( ) . unwrap ( ) ;
773
- poll. spawn_ok ( lazy ( move |cx| f ( cx) ) ) ;
777
+ futures:: executor:: block_on ( lazy ( move |cx| f ( cx) ) ) ;
774
778
}
775
779
776
780
fn poll_until_ready < F > ( future : & mut F , max_poll_count : usize ) -> F :: Output
@@ -790,34 +794,8 @@ pub mod tests {
790
794
)
791
795
}
792
796
793
- struct DelayedFuture {
794
- counter : u32 ,
795
- buf : Box < [ u8 ] > ,
796
- }
797
-
798
- impl DelayedFuture {
799
- pub fn new ( buf : Box < [ u8 ] > ) -> Self {
800
- DelayedFuture { counter : 0 , buf }
801
- }
802
- }
803
-
804
- impl Future for DelayedFuture {
805
- type Output = Result < Box < [ u8 ] > , ( ) > ;
806
-
807
- fn poll ( self : Pin < & mut Self > , _cx : & mut Context ) -> Poll < Self :: Output > {
808
- let inner = self . get_mut ( ) ;
809
- if inner. counter > 0 {
810
- return Poll :: Ready ( Ok ( inner. buf . clone ( ) ) ) ;
811
- }
812
-
813
- inner. counter += 1 ;
814
- Poll :: Pending
815
- }
816
- }
817
-
818
797
pub enum Mode {
819
- AsyncImmediate ,
820
- AsyncDelayed ,
798
+ Async ,
821
799
OverflowReqSync ,
822
800
OverflowResSync ,
823
801
OverflowReqAsync ,
@@ -834,18 +812,12 @@ pub mod tests {
834
812
move |control : & [ u8 ] , _zero_copy : Option < PinnedBuf > | -> CoreOp {
835
813
dispatch_count_. fetch_add ( 1 , Ordering :: Relaxed ) ;
836
814
match mode {
837
- Mode :: AsyncImmediate => {
815
+ Mode :: Async => {
838
816
assert_eq ! ( control. len( ) , 1 ) ;
839
817
assert_eq ! ( control[ 0 ] , 42 ) ;
840
818
let buf = vec ! [ 43u8 , 0 , 0 , 0 ] . into_boxed_slice ( ) ;
841
819
Op :: Async ( futures:: future:: ok ( buf) . boxed ( ) )
842
820
}
843
- Mode :: AsyncDelayed => {
844
- assert_eq ! ( control. len( ) , 1 ) ;
845
- assert_eq ! ( control[ 0 ] , 42 ) ;
846
- let buf = vec ! [ 43u8 , 0 , 0 , 0 ] . into_boxed_slice ( ) ;
847
- Op :: Async ( DelayedFuture :: new ( buf) . boxed ( ) )
848
- }
849
821
Mode :: OverflowReqSync => {
850
822
assert_eq ! ( control. len( ) , 100 * 1024 * 1024 ) ;
851
823
let buf = vec ! [ 43u8 , 0 , 0 , 0 ] . into_boxed_slice ( ) ;
@@ -863,7 +835,7 @@ pub mod tests {
863
835
Mode :: OverflowReqAsync => {
864
836
assert_eq ! ( control. len( ) , 100 * 1024 * 1024 ) ;
865
837
let buf = vec ! [ 43u8 , 0 , 0 , 0 ] . into_boxed_slice ( ) ;
866
- Op :: Async ( DelayedFuture :: new ( buf) . boxed ( ) )
838
+ Op :: Async ( futures :: future :: ok ( buf) . boxed ( ) )
867
839
}
868
840
Mode :: OverflowResAsync => {
869
841
assert_eq ! ( control. len( ) , 1 ) ;
@@ -872,7 +844,7 @@ pub mod tests {
872
844
vec. resize ( 100 * 1024 * 1024 , 0 ) ;
873
845
vec[ 0 ] = 4 ;
874
846
let buf = vec. into_boxed_slice ( ) ;
875
- Op :: Async ( DelayedFuture :: new ( buf) . boxed ( ) )
847
+ Op :: Async ( futures :: future :: ok ( buf) . boxed ( ) )
876
848
}
877
849
}
878
850
} ;
@@ -895,7 +867,7 @@ pub mod tests {
895
867
896
868
#[ test]
897
869
fn test_dispatch ( ) {
898
- let ( mut isolate, dispatch_count) = setup ( Mode :: AsyncImmediate ) ;
870
+ let ( mut isolate, dispatch_count) = setup ( Mode :: Async ) ;
899
871
js_check ( isolate. execute (
900
872
"filename.js" ,
901
873
r#"
@@ -912,7 +884,7 @@ pub mod tests {
912
884
913
885
#[ test]
914
886
fn test_mods ( ) {
915
- let ( mut isolate, dispatch_count) = setup ( Mode :: AsyncImmediate ) ;
887
+ let ( mut isolate, dispatch_count) = setup ( Mode :: Async ) ;
916
888
let mod_a = isolate
917
889
. mod_new (
918
890
true ,
@@ -958,60 +930,10 @@ pub mod tests {
958
930
assert_eq ! ( resolve_count. load( Ordering :: SeqCst ) , 1 ) ;
959
931
}
960
932
961
- #[ test]
962
- fn test_poll_async_immediate_ops ( ) {
963
- run_in_task ( |cx| {
964
- let ( mut isolate, dispatch_count) = setup ( Mode :: AsyncImmediate ) ;
965
-
966
- js_check ( isolate. execute (
967
- "setup2.js" ,
968
- r#"
969
- let nrecv = 0;
970
- Deno.core.setAsyncHandler((opId, buf) => {
971
- nrecv++;
972
- });
973
- "# ,
974
- ) ) ;
975
- assert_eq ! ( dispatch_count. load( Ordering :: Relaxed ) , 0 ) ;
976
- js_check ( isolate. execute (
977
- "check1.js" ,
978
- r#"
979
- assert(nrecv == 0);
980
- let control = new Uint8Array([42]);
981
- const res1 = Deno.core.send(1, control);
982
- assert(res1);
983
- assert(nrecv == 0);
984
- "# ,
985
- ) ) ;
986
- assert_eq ! ( dispatch_count. load( Ordering :: Relaxed ) , 1 ) ;
987
- assert_eq ! ( dispatch_count. load( Ordering :: Relaxed ) , 1 ) ;
988
- js_check ( isolate. execute (
989
- "check2.js" ,
990
- r#"
991
- assert(nrecv == 0);
992
- Deno.core.send(1, control);
993
- assert(nrecv == 0);
994
- "# ,
995
- ) ) ;
996
- assert_eq ! ( dispatch_count. load( Ordering :: Relaxed ) , 2 ) ;
997
- assert_eq ! ( dispatch_count. load( Ordering :: Relaxed ) , 2 ) ;
998
- assert ! ( match isolate. poll_unpin( cx) {
999
- Poll :: Ready ( Ok ( _) ) => true ,
1000
- _ => false ,
1001
- } ) ;
1002
- js_check ( isolate. execute ( "check3.js" , "assert(nrecv == 0)" ) ) ;
1003
- // We are idle, so the next poll should be the last.
1004
- assert ! ( match isolate. poll_unpin( cx) {
1005
- Poll :: Ready ( Ok ( _) ) => true ,
1006
- _ => false ,
1007
- } ) ;
1008
- } ) ;
1009
- }
1010
-
1011
933
#[ test]
1012
934
fn test_poll_async_delayed_ops ( ) {
1013
935
run_in_task ( |cx| {
1014
- let ( mut isolate, dispatch_count) = setup ( Mode :: AsyncDelayed ) ;
936
+ let ( mut isolate, dispatch_count) = setup ( Mode :: Async ) ;
1015
937
1016
938
js_check ( isolate. execute (
1017
939
"setup2.js" ,
@@ -1275,7 +1197,7 @@ pub mod tests {
1275
1197
let ( tx, rx) = std:: sync:: mpsc:: channel :: < bool > ( ) ;
1276
1198
let tx_clone = tx. clone ( ) ;
1277
1199
1278
- let ( mut isolate, _dispatch_count) = setup ( Mode :: AsyncImmediate ) ;
1200
+ let ( mut isolate, _dispatch_count) = setup ( Mode :: Async ) ;
1279
1201
let shared = isolate. shared_isolate_handle ( ) ;
1280
1202
1281
1203
let t1 = std:: thread:: spawn ( move || {
@@ -1332,7 +1254,7 @@ pub mod tests {
1332
1254
fn dangling_shared_isolate ( ) {
1333
1255
let shared = {
1334
1256
// isolate is dropped at the end of this block
1335
- let ( mut isolate, _dispatch_count) = setup ( Mode :: AsyncImmediate ) ;
1257
+ let ( mut isolate, _dispatch_count) = setup ( Mode :: Async ) ;
1336
1258
isolate. shared_isolate_handle ( )
1337
1259
} ;
1338
1260
@@ -1499,7 +1421,7 @@ pub mod tests {
1499
1421
#[ test]
1500
1422
fn test_js ( ) {
1501
1423
run_in_task ( |mut cx| {
1502
- let ( mut isolate, _dispatch_count) = setup ( Mode :: AsyncImmediate ) ;
1424
+ let ( mut isolate, _dispatch_count) = setup ( Mode :: Async ) ;
1503
1425
js_check (
1504
1426
isolate. execute (
1505
1427
"shared_queue_test.js" ,
0 commit comments