@@ -3,16 +3,13 @@ package kotlinx.benchmark.js
3
3
import kotlinx.benchmark.*
4
4
import kotlinx.benchmark.jsEngineSupport
5
5
6
- @JsName(" Function" )
7
- private external fun functionCtor (params : String , code : String ): (dynamic ) -> Long
8
-
9
6
class JsBuiltInExecutor (
10
7
name : String ,
11
8
@Suppress(" UNUSED_PARAMETER" ) dummy_args : Array <out String >
12
9
) : CommonSuiteExecutor(name, jsEngineSupport.arguments()[0 ]) {
13
10
14
- private val BenchmarkConfiguration .jsUseBridge : Boolean
15
- get() = " true " .equals(advanced[" jsUseBridge" ], ignoreCase = true )
11
+ private val BenchmarkConfiguration .notUseJsBridge : Boolean
12
+ get() = " false " .equals(advanced[" jsUseBridge" ], ignoreCase = true )
16
13
17
14
override fun run (
18
15
runnerConfiguration : RunnerConfiguration ,
@@ -26,16 +23,8 @@ class JsBuiltInExecutor(
26
23
super .run (runnerConfiguration, benchmarks, start, complete)
27
24
}
28
25
29
- private fun createJsMeasurerBridge (originalMeasurer : () -> Long ): () -> Long {
30
- val bridgeObject = object {
31
- fun invoke (): Long = originalMeasurer.invoke()
32
- }
33
- val measurerString = bridgeObject::invoke.toString()
34
- val measurerBody = measurerString.substringAfter(" {" ).substringBeforeLast(" }" )
35
- return {
36
- functionCtor(" \$ boundThis" , measurerBody)(bridgeObject)
37
- }
38
- }
26
+ private fun createJsMeasurerBridge (originalMeasurer : () -> Long ): () -> Long =
27
+ { originalMeasurer() }
39
28
40
29
override fun <T > createIterationMeasurer (
41
30
instance : T ,
@@ -44,6 +33,6 @@ class JsBuiltInExecutor(
44
33
cycles : Int
45
34
): () -> Long {
46
35
val measurer = super .createIterationMeasurer(instance, benchmark, configuration, cycles)
47
- return if (configuration.jsUseBridge) createJsMeasurerBridge( measurer) else measurer
36
+ return if (configuration.notUseJsBridge) measurer else createJsMeasurerBridge( measurer)
48
37
}
49
38
}
0 commit comments