• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16let JSCallee = require('./callee.js');
17
18let actualCallee = {
19    PassVoid : JSCallee.Pass,
20    PassArrays : JSCallee.Pass,
21    PassNumbers : JSCallee.Pass,
22    PassStrings : JSCallee.Pass,
23    GetArray : JSCallee.GetArray,
24    GetString : JSCallee.GetString,
25    GetObject : JSCallee.GetObject,
26    GetNumber : JSCallee.GetNumber
27};
28
29module.exports.initBenchmarks = function initBenchmarks(arkVM)
30{
31    let benchmarks = {
32        voidPasser : voidPasser,
33        numPasser : numPasser,
34        strPasser : strPasser,
35        arrPasser : arrPasser,
36        arrGetter : arrGetter,
37        strGetter : strGetter,
38        objGetter : objGetter,
39        numGetter : numGetter
40    };
41
42    if (arkVM) {
43        actualCallee = arkVM.getClass('Lcallee/STSCallee;');
44    }
45
46    return benchmarks;
47};
48
49function voidPasser(iters) {
50    let PassVoid = actualCallee.PassVoid;
51    for (let i = 0; i < iters; ++i) {
52        PassVoid();
53    }
54}
55
56function strPasser(iters) {
57    let PassStrings = actualCallee.PassStrings;
58    let u0 = 'foo0';
59    let u1 = 'foo1';
60    let u2 = 'foo2';
61    let u3 = 'foo3';
62    let u4 = 'foo4';
63    let u5 = 'foo5';
64    let u6 = 'foo6';
65    let u7 = 'foo7';
66    let u8 = 'foo8';
67    let u9 = 'foo9';
68    for (let i = 0; i < iters; ++i) {
69        PassStrings(u0, u1, u2, u3, u4, u5, u6, u7, u8, u9);
70    }
71}
72
73function numPasser(iters) {
74    let PassNumbers = actualCallee.PassNumbers;
75    let u0 = 0.0;
76    let u1 = 0.1;
77    let u2 = 0.2;
78    let u3 = 0.3;
79    let u4 = 0.4;
80    let u5 = 0.5;
81    let u6 = 0.6;
82    let u7 = 0.7;
83    let u8 = 0.8;
84    let u9 = 0.9;
85    for (let i = 0; i < iters; ++i) {
86        PassNumbers(u0, u1, u2, u3, u4, u5, u6, u7, u8, u9);
87    }
88}
89
90function arrPasser(iters) {
91    let PassArrays = actualCallee.PassArrays;
92    let u0 = [0.0];
93    let u1 = [0.1];
94    let u2 = [0.2];
95    let u3 = [0.3];
96    let u4 = [0.4];
97    let u5 = [0.5];
98    let u6 = [0.6];
99    let u7 = [0.7];
100    let u8 = [0.8];
101    let u9 = [0.9];
102    for (let i = 0; i < iters; ++i) {
103        PassArrays(u0, u1, u2, u3, u4, u5, u6, u7, u8, u9);
104    }
105}
106
107function arrGetter(iters) {
108    let GetArray = actualCallee.GetArray;
109    for (let i = 0; i < iters; ++i) {
110        let r = GetArray();
111    }
112}
113
114function strGetter(iters) {
115    let GetString = actualCallee.GetString;
116    for (let i = 0; i < iters; ++i) {
117        let r = GetString();
118    }
119}
120
121function numGetter(iters) {
122    let GetNumber = actualCallee.GetNumber;
123    for (let i = 0; i < iters; ++i) {
124        let r = GetNumber();
125    }
126}
127
128function objGetter(iters) {
129    let GetObject = actualCallee.GetObject;
130    for (let i = 0; i < iters; ++i) {
131        let r = GetObject();
132    }
133}
134