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