@@ -729,10 +729,10 @@ impl GlobalObject {
729
729
arguments : ArgumentsList ,
730
730
mut gc : GcScope < ' gc , ' _ > ,
731
731
) -> JsResult < Value < ' gc > > {
732
- let x = arguments. get ( 0 ) ;
732
+ let x = arguments. get ( 0 ) . bind ( gc . nogc ( ) ) ;
733
733
734
734
// 1. Return ? PerformEval(x, false, false).
735
- perform_eval ( agent, x, false , false , gc. reborrow ( ) ) . map ( |v| v. unbind ( ) )
735
+ perform_eval ( agent, x. unbind ( ) , false , false , gc. reborrow ( ) ) . map ( |v| v. unbind ( ) )
736
736
}
737
737
738
738
/// ### [19.2.2 isFinite ( number )](https://tc39.es/ecma262/#sec-isfinite-number)
@@ -744,9 +744,9 @@ impl GlobalObject {
744
744
arguments : ArgumentsList ,
745
745
mut gc : GcScope < ' gc , ' _ > ,
746
746
) -> JsResult < Value < ' gc > > {
747
- let number = arguments. get ( 0 ) ;
747
+ let number = arguments. get ( 0 ) . bind ( gc . nogc ( ) ) ;
748
748
// 1. Let num be ? ToNumber(number).
749
- let num = to_number ( agent, number, gc. reborrow ( ) ) ?;
749
+ let num = to_number ( agent, number. unbind ( ) , gc. reborrow ( ) ) ?;
750
750
// 2. If num is not finite, return false.
751
751
// 3. Otherwise, return true.
752
752
Ok ( num. is_finite ( agent) . into ( ) )
@@ -765,9 +765,9 @@ impl GlobalObject {
765
765
arguments : ArgumentsList ,
766
766
mut gc : GcScope < ' gc , ' _ > ,
767
767
) -> JsResult < Value < ' gc > > {
768
- let number = arguments. get ( 0 ) ;
768
+ let number = arguments. get ( 0 ) . bind ( gc . nogc ( ) ) ;
769
769
// 1. Let num be ? ToNumber(number).
770
- let num = to_number ( agent, number, gc. reborrow ( ) ) ?;
770
+ let num = to_number ( agent, number. unbind ( ) , gc. reborrow ( ) ) ?;
771
771
// 2. If num is NaN, return true.
772
772
// 3. Otherwise, return false.
773
773
Ok ( num. is_nan ( agent) . into ( ) )
@@ -787,10 +787,10 @@ impl GlobalObject {
787
787
return Ok ( Value :: nan ( ) ) ;
788
788
}
789
789
790
- let string = arguments. get ( 0 ) ;
790
+ let string = arguments. get ( 0 ) . bind ( gc . nogc ( ) ) ;
791
791
792
792
// 1. Let inputString be ? ToString(string).
793
- let input_string = to_string ( agent, string, gc. reborrow ( ) ) ?;
793
+ let input_string = to_string ( agent, string. unbind ( ) , gc. reborrow ( ) ) ?;
794
794
795
795
// 2. Let trimmedString be ! TrimString(inputString, start).
796
796
let trimmed_string = input_string
@@ -852,8 +852,8 @@ impl GlobalObject {
852
852
arguments : ArgumentsList ,
853
853
mut gc : GcScope < ' gc , ' _ > ,
854
854
) -> JsResult < Value < ' gc > > {
855
- let string = arguments. get ( 0 ) ;
856
- let radix = arguments. get ( 1 ) ;
855
+ let string = arguments. get ( 0 ) . bind ( gc . nogc ( ) ) ;
856
+ let radix = arguments. get ( 1 ) . bind ( gc . nogc ( ) ) ;
857
857
858
858
// OPTIMIZATION: If the string is empty, undefined, null or a boolean, return NaN.
859
859
if string. is_undefined ( )
@@ -872,12 +872,15 @@ impl GlobalObject {
872
872
}
873
873
}
874
874
875
+ let radix = radix. scope ( agent, gc. nogc ( ) ) ;
876
+
875
877
// 1. Let inputString be ? ToString(string).
876
- let mut s = to_string ( agent, string, gc. reborrow ( ) ) ?
878
+ let mut s = to_string ( agent, string. unbind ( ) , gc. reborrow ( ) ) ?
877
879
. unbind ( )
878
880
. bind ( gc. nogc ( ) ) ;
879
881
880
882
// 6. Let R be ℝ(? ToInt32(radix)).
883
+ let radix = radix. get ( agent) . bind ( gc. nogc ( ) ) ;
881
884
let r = if let Value :: Integer ( radix) = radix {
882
885
radix. into_i64 ( ) as i32
883
886
} else if radix. is_undefined ( ) {
@@ -887,7 +890,7 @@ impl GlobalObject {
887
890
to_int32_number ( agent, radix)
888
891
} else {
889
892
let s_root = s. scope ( agent, gc. nogc ( ) ) ;
890
- let radix = to_int32 ( agent, radix, gc. reborrow ( ) ) ?;
893
+ let radix = to_int32 ( agent, radix. unbind ( ) , gc. reborrow ( ) ) ?;
891
894
s = s_root. get ( agent) . bind ( gc. nogc ( ) ) ;
892
895
radix
893
896
} ;
0 commit comments