• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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