1/** 2 * Copyright (c) 2021-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 16import { 17 evaluateNumber, 18 ExampleClass, 19 ClassWithEmptyConstructor 20} from "module" 21 22% (@integral_primitives + @float_primitives).each do |primitive| 23//! CHECKER jscall<%= primitive.getName.capitalize %> JIT 24//! RUN force_jit: true, entry: "jscall<%= primitive.getName.capitalize %>", options: "--compiler-regex=ETSGLOBAL::jscall<%= primitive.getName.capitalize %>" 25//! METHOD "jscall<%= primitive.getName.capitalize %>" 26//! PASS_AFTER "IrBuilder" 27//! INST_NOT /CallStatic.*jscall::invoke/ 28//! INST "Intrinsic.JSRuntimeGetValueDouble" 29 30//! CHECKER jsnewGetProperty<%= primitive.getName.capitalize %> JIT 31//! RUN force_jit: true, entry: "jsnewGetProperty<%= primitive.getName.capitalize %>", options: "--compiler-regex=ETSGLOBAL::jsnewGetProperty<%= primitive.getName.capitalize %>" 32//! METHOD "jsnewGetProperty<%= primitive.getName.capitalize %>" 33//! PASS_AFTER "IrBuilder" 34//! INST_NOT /CallStatic.*jsnew::invoke/ 35//! INST_COUNT "Intrinsic.JSRuntimeGetPropertyDouble", 2 36//! INST_NOT "Intrinsic.JSRuntimeGetPropertyJSValue" 37//! INST_NOT "Intrinsic.JSRuntimeGetValueDouble" 38 39//! CHECKER jsnewSetProperty<%= primitive.getName.capitalize %> JIT 40//! RUN force_jit: true, entry: "jsnewSetProperty<%= primitive.getName.capitalize %>", options: "--compiler-regex=ETSGLOBAL::jsnewSetProperty<%= primitive.getName.capitalize %>" 41//! METHOD "jsnewSetProperty<%= primitive.getName.capitalize %>" 42//! PASS_AFTER "IrBuilder" 43//! INST_NOT /CallStatic.*jsnew::invoke/ 44//! INST_COUNT "Intrinsic.JSRuntimeSetPropertyDouble", 2 45//! INST_COUNT "Intrinsic.JSRuntimeGetPropertyDouble", 2 46//! INST_NOT "Intrinsic.JSRuntimeGetPropertyJSValue" 47 48//! CHECKER jscallStaticMethod<%= primitive.getName.capitalize %> JIT 49//! RUN force_jit: true, entry: "jscallStaticMethod<%= primitive.getName.capitalize() %>", options: "--compiler-regex=ETSGLOBAL::jscallStaticMethod<%= primitive.getName.capitalize %>" 50//! METHOD "jscallStaticMethod<%= primitive.getName.capitalize() %>" 51//! PASS_AFTER "IrBuilder" 52//! INST_NOT /CallStatic.*jsnew::invoke/ 53//! INST_NOT /CallStatic.*jscall::invoke/ 54//! INST "Intrinsic.JSRuntimeGetValueDouble" 55 56% end 57 58% @integral_primitives.each do |primitive| 59function jscall<%= primitive.getName.capitalize() %>(): int { 60 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 61 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 62 let res = evaluateNumber(v0, v1) as double; 63 if (res == <%= primitive.getSum() %>) { 64 return 0; 65 } else { 66 return 1; 67 } 68} 69 70function jsnewGetProperty<%= primitive.getName.capitalize() %>(): int { 71 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 72 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 73 let res_obj = new ExampleClass(v0, v1); 74 let res_get_v0 = res_obj.v0 as double; 75 let res_get_v1 = res_obj.v1 as double; 76 77 if (res_get_v0 == v0 && res_get_v1 == v1) { 78 return 0; 79 } else { 80 return 1; 81 } 82} 83 84function jsnewSetProperty<%= primitive.getName.capitalize() %>(): int { 85 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 86 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 87 let res_obj = new ClassWithEmptyConstructor(); 88 res_obj.v0 = v0; 89 res_obj.v1 = v1; 90 91 let check_js = res_obj.verifyProperties(v0, v1) as int; 92 console.println(check_js); 93 if (check_js == 1) { 94 return 1; 95 } 96 97 let res_get_v0 = res_obj.v0 as double; 98 let res_get_v1 = res_obj.v1 as double; 99 100 if (res_get_v0 == v0 && res_get_v1 == v1) { 101 return 0; 102 } else { 103 return 1; 104 } 105} 106 107function jscallStaticMethod<%= primitive.getName.capitalize() %>(): int { 108 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 109 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 110 let res = ExampleClass.evaluateNumber(v0, v1) as double; 111 if (res == <%= primitive.getSum() %>) { 112 return 0; 113 } else { 114 return 1; 115 } 116} 117 118% end 119 120% @float_primitives.each do |primitive| 121function jscall<%= primitive.getName.capitalize() %>(): int { 122 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 123 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 124 let res = ExampleClass.evaluateNumber(v0, v1) as double; 125 if (abs(res - <%= primitive.getSum() %>) < 0.000001) { 126 return 0; 127 } else { 128 return 1; 129 } 130} 131 132function jsnewGetProperty<%= primitive.getName.capitalize() %>(): int { 133 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 134 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 135 let res_obj = new ExampleClass(v0, v1); 136 let res_get_v0 = res_obj.v0 as double; 137 let res_get_v1 = res_obj.v1 as double; 138 139 if (abs(res_get_v0 - v0) < 0.000001 && abs(res_get_v1 - v1) < 0.000001) { 140 return 0; 141 } else { 142 return 1; 143 } 144} 145 146function jsnewSetProperty<%= primitive.getName.capitalize() %>(): int { 147 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 148 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 149 let res_obj = new ClassWithEmptyConstructor(); 150 res_obj.v0 = v0; 151 res_obj.v1 = v1; 152 let res_get_v0 = res_obj.v0 as double; 153 let res_get_v1 = res_obj.v1 as double; 154 155 if (res_get_v0 == v0 && res_get_v1 == v1) { 156 return 0; 157 } else { 158 return 1; 159 } 160} 161 162function jscallStaticMethod<%= primitive.getName.capitalize() %>(): int { 163 let v0: <%= primitive.getName %> = <%= primitive.getMin() %>; 164 let v1: <%= primitive.getName %> = <%= primitive.getMax() %>; 165 let res = ExampleClass.evaluateNumber(v0, v1) as double; 166 if (abs(res - <%= primitive.getSum() %>) < 0.000001) { 167 return 0; 168 } else { 169 return 1; 170 } 171} 172 173% end 174