@@ -390,7 +390,7 @@ function ArrayToString() {
390390 if ( ! IS_CALLABLE ( func ) ) {
391391 return % _CallFunction ( array , ObjectToString ) ;
392392 }
393- return % _CallFunction ( array , func ) ;
393+ return % _Call ( func , array ) ;
394394}
395395
396396
@@ -903,7 +903,7 @@ function InnerArraySort(array, length, comparefn) {
903903 var element = a [ i ] ;
904904 for ( var j = i - 1 ; j >= from ; j -- ) {
905905 var tmp = a [ j ] ;
906- var order = % _CallFunction ( UNDEFINED , tmp , element , comparefn ) ;
906+ var order = comparefn ( tmp , element ) ;
907907 if ( order > 0 ) {
908908 a [ j + 1 ] = tmp ;
909909 } else {
@@ -922,7 +922,7 @@ function InnerArraySort(array, length, comparefn) {
922922 t_array [ j ] = [ i , a [ i ] ] ;
923923 }
924924 % _CallFunction ( t_array , function ( a , b ) {
925- return % _CallFunction ( UNDEFINED , a [ 1 ] , b [ 1 ] , comparefn ) ;
925+ return comparefn ( a [ 1 ] , b [ 1 ] ) ;
926926 } , ArraySort ) ;
927927 var third_index = t_array [ t_array . length >> 1 ] [ 0 ] ;
928928 return third_index ;
@@ -945,14 +945,14 @@ function InnerArraySort(array, length, comparefn) {
945945 var v0 = a [ from ] ;
946946 var v1 = a [ to - 1 ] ;
947947 var v2 = a [ third_index ] ;
948- var c01 = % _CallFunction ( UNDEFINED , v0 , v1 , comparefn ) ;
948+ var c01 = comparefn ( v0 , v1 ) ;
949949 if ( c01 > 0 ) {
950950 // v1 < v0, so swap them.
951951 var tmp = v0 ;
952952 v0 = v1 ;
953953 v1 = tmp ;
954954 } // v0 <= v1.
955- var c02 = % _CallFunction ( UNDEFINED , v0 , v2 , comparefn ) ;
955+ var c02 = comparefn ( v0 , v2 ) ;
956956 if ( c02 >= 0 ) {
957957 // v2 <= v0 <= v1.
958958 var tmp = v0 ;
@@ -961,7 +961,7 @@ function InnerArraySort(array, length, comparefn) {
961961 v1 = tmp ;
962962 } else {
963963 // v0 <= v1 && v0 < v2
964- var c12 = % _CallFunction ( UNDEFINED , v1 , v2 , comparefn ) ;
964+ var c12 = comparefn ( v1 , v2 ) ;
965965 if ( c12 > 0 ) {
966966 // v0 <= v2 < v1
967967 var tmp = v1 ;
@@ -982,7 +982,7 @@ function InnerArraySort(array, length, comparefn) {
982982 // From i to high_start are elements that haven't been compared yet.
983983 partition: for ( var i = low_end + 1 ; i < high_start ; i ++ ) {
984984 var element = a [ i ] ;
985- var order = % _CallFunction ( UNDEFINED , element , pivot , comparefn ) ;
985+ var order = comparefn ( element , pivot ) ;
986986 if ( order < 0 ) {
987987 a [ i ] = a [ low_end ] ;
988988 a [ low_end ] = element ;
@@ -992,7 +992,7 @@ function InnerArraySort(array, length, comparefn) {
992992 high_start -- ;
993993 if ( high_start == i ) break partition;
994994 var top_elem = a [ high_start ] ;
995- order = % _CallFunction ( UNDEFINED , top_elem , pivot , comparefn ) ;
995+ order = comparefn ( top_elem , pivot ) ;
996996 } while ( order > 0 ) ;
997997 a [ i ] = a [ high_start ] ;
998998 a [ high_start ] = element ;
@@ -1179,12 +1179,6 @@ function ArraySort(comparefn) {
11791179// or delete elements from the array.
11801180function InnerArrayFilter ( f , receiver , array , length ) {
11811181 if ( ! IS_CALLABLE ( f ) ) throw MakeTypeError ( kCalledNonCallable , f ) ;
1182- var needs_wrapper = false ;
1183- if ( IS_NULL ( receiver ) ) {
1184- if ( % IsSloppyModeFunction ( f ) ) receiver = UNDEFINED ;
1185- } else if ( ! IS_UNDEFINED ( receiver ) ) {
1186- needs_wrapper = SHOULD_CREATE_WRAPPER ( f , receiver ) ;
1187- }
11881182
11891183 var accumulator = new InternalArray ( ) ;
11901184 var accumulator_length = 0 ;
@@ -1195,8 +1189,7 @@ function InnerArrayFilter(f, receiver, array, length) {
11951189 var element = array [ i ] ;
11961190 // Prepare break slots for debugger step in.
11971191 if ( stepping ) % DebugPrepareStepInIfStepping ( f ) ;
1198- var new_receiver = needs_wrapper ? TO_OBJECT ( receiver ) : receiver ;
1199- if ( % _CallFunction ( new_receiver , element , i , array , f ) ) {
1192+ if ( % _Call ( f , receiver , element , i , array ) ) {
12001193 accumulator [ accumulator_length ++ ] = element ;
12011194 }
12021195 }
@@ -1219,12 +1212,6 @@ function ArrayFilter(f, receiver) {
12191212
12201213function InnerArrayForEach ( f , receiver , array , length ) {
12211214 if ( ! IS_CALLABLE ( f ) ) throw MakeTypeError ( kCalledNonCallable , f ) ;
1222- var needs_wrapper = false ;
1223- if ( IS_NULL ( receiver ) ) {
1224- if ( % IsSloppyModeFunction ( f ) ) receiver = UNDEFINED ;
1225- } else if ( ! IS_UNDEFINED ( receiver ) ) {
1226- needs_wrapper = SHOULD_CREATE_WRAPPER ( f , receiver ) ;
1227- }
12281215
12291216 var is_array = IS_ARRAY ( array ) ;
12301217 var stepping = DEBUG_IS_ACTIVE && % DebugCallbackSupportsStepping ( f ) ;
@@ -1233,8 +1220,7 @@ function InnerArrayForEach(f, receiver, array, length) {
12331220 var element = array [ i ] ;
12341221 // Prepare break slots for debugger step in.
12351222 if ( stepping ) % DebugPrepareStepInIfStepping ( f ) ;
1236- var new_receiver = needs_wrapper ? TO_OBJECT ( receiver ) : receiver ;
1237- % _CallFunction ( new_receiver , element , i , array , f ) ;
1223+ % _Call ( f , receiver , element , i , array ) ;
12381224 }
12391225 }
12401226}
@@ -1252,12 +1238,6 @@ function ArrayForEach(f, receiver) {
12521238
12531239function InnerArraySome ( f , receiver , array , length ) {
12541240 if ( ! IS_CALLABLE ( f ) ) throw MakeTypeError ( kCalledNonCallable , f ) ;
1255- var needs_wrapper = false ;
1256- if ( IS_NULL ( receiver ) ) {
1257- if ( % IsSloppyModeFunction ( f ) ) receiver = UNDEFINED ;
1258- } else if ( ! IS_UNDEFINED ( receiver ) ) {
1259- needs_wrapper = SHOULD_CREATE_WRAPPER ( f , receiver ) ;
1260- }
12611241
12621242 var is_array = IS_ARRAY ( array ) ;
12631243 var stepping = DEBUG_IS_ACTIVE && % DebugCallbackSupportsStepping ( f ) ;
@@ -1266,8 +1246,7 @@ function InnerArraySome(f, receiver, array, length) {
12661246 var element = array [ i ] ;
12671247 // Prepare break slots for debugger step in.
12681248 if ( stepping ) % DebugPrepareStepInIfStepping ( f ) ;
1269- var new_receiver = needs_wrapper ? TO_OBJECT ( receiver ) : receiver ;
1270- if ( % _CallFunction ( new_receiver , element , i , array , f ) ) return true ;
1249+ if ( % _Call ( f , receiver , element , i , array ) ) return true ;
12711250 }
12721251 }
12731252 return false ;
@@ -1289,12 +1268,6 @@ function ArraySome(f, receiver) {
12891268
12901269function InnerArrayEvery ( f , receiver , array , length ) {
12911270 if ( ! IS_CALLABLE ( f ) ) throw MakeTypeError ( kCalledNonCallable , f ) ;
1292- var needs_wrapper = false ;
1293- if ( IS_NULL ( receiver ) ) {
1294- if ( % IsSloppyModeFunction ( f ) ) receiver = UNDEFINED ;
1295- } else if ( ! IS_UNDEFINED ( receiver ) ) {
1296- needs_wrapper = SHOULD_CREATE_WRAPPER ( f , receiver ) ;
1297- }
12981271
12991272 var is_array = IS_ARRAY ( array ) ;
13001273 var stepping = DEBUG_IS_ACTIVE && % DebugCallbackSupportsStepping ( f ) ;
@@ -1303,8 +1276,7 @@ function InnerArrayEvery(f, receiver, array, length) {
13031276 var element = array [ i ] ;
13041277 // Prepare break slots for debugger step in.
13051278 if ( stepping ) % DebugPrepareStepInIfStepping ( f ) ;
1306- var new_receiver = needs_wrapper ? TO_OBJECT ( receiver ) : receiver ;
1307- if ( ! % _CallFunction ( new_receiver , element , i , array , f ) ) return false ;
1279+ if ( ! % _Call ( f , receiver , element , i , array ) ) return false ;
13081280 }
13091281 }
13101282 return true ;
@@ -1323,12 +1295,6 @@ function ArrayEvery(f, receiver) {
13231295
13241296function InnerArrayMap ( f , receiver , array , length ) {
13251297 if ( ! IS_CALLABLE ( f ) ) throw MakeTypeError ( kCalledNonCallable , f ) ;
1326- var needs_wrapper = false ;
1327- if ( IS_NULL ( receiver ) ) {
1328- if ( % IsSloppyModeFunction ( f ) ) receiver = UNDEFINED ;
1329- } else if ( ! IS_UNDEFINED ( receiver ) ) {
1330- needs_wrapper = SHOULD_CREATE_WRAPPER ( f , receiver ) ;
1331- }
13321298
13331299 var accumulator = new InternalArray ( length ) ;
13341300 var is_array = IS_ARRAY ( array ) ;
@@ -1338,8 +1304,7 @@ function InnerArrayMap(f, receiver, array, length) {
13381304 var element = array [ i ] ;
13391305 // Prepare break slots for debugger step in.
13401306 if ( stepping ) % DebugPrepareStepInIfStepping ( f ) ;
1341- var new_receiver = needs_wrapper ? TO_OBJECT ( receiver ) : receiver ;
1342- accumulator [ i ] = % _CallFunction ( new_receiver , element , i , array , f ) ;
1307+ accumulator [ i ] = % _Call ( f , receiver , element , i , array ) ;
13431308 }
13441309 }
13451310 return accumulator ;
@@ -1508,7 +1473,7 @@ function InnerArrayReduce(callback, current, array, length, argumentsLength) {
15081473 var element = array [ i ] ;
15091474 // Prepare break slots for debugger step in.
15101475 if ( stepping ) % DebugPrepareStepInIfStepping ( callback ) ;
1511- current = % _CallFunction ( UNDEFINED , current , element , i , array , callback ) ;
1476+ current = callback ( current , element , i , array ) ;
15121477 }
15131478 }
15141479 return current ;
@@ -1551,7 +1516,7 @@ function InnerArrayReduceRight(callback, current, array, length,
15511516 var element = array [ i ] ;
15521517 // Prepare break slots for debugger step in.
15531518 if ( stepping ) % DebugPrepareStepInIfStepping ( callback ) ;
1554- current = % _CallFunction ( UNDEFINED , current , element , i , array , callback ) ;
1519+ current = callback ( current , element , i , array ) ;
15551520 }
15561521 }
15571522 return current ;
0 commit comments