• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022 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
16/*
17 * @tc.name:stubbuilder
18 * @tc.desc:test stubbuilder
19 * @tc.type: FUNC
20 * @tc.require: issueI5NO8G
21 */
22
23/*
24*    ZExtInt8ToPtr(); IntPtr(); Int8(); PtrMul(); Int8LSR(); Int8And(); Store(); Load();
25*    ReadInst4_0(); ReadInst4_1(); GetVregValue(); SetVregValue();
26*/
27                      /**************HandleMovV4V4****************/
28
29{
30    var fun = function(parameter) {
31        return parameter;
32    }
33
34    var call = fun(100);
35    print(call);
36}
37
38/*
39*   ZExtInt16ToPtr(); Int16(); ZExtInt8ToInt16();  Int16LSL(); Int16Add();
40*
41*   ReadInst16_0(); ReadInst16_2(); GetVregValue(); SetVregValue(); ReadInst8_0(); ReadInst8_1(); ReadInst8_2(); ReadInst8_3();
42*/
43                      /**************HandleMovV16V16****************/
44
45{
46    var fun = function(pmt1, pmt2, pmt3, pmt4, pmt5, pmt6, pmt7, pmt8, pmt9, pmt10) {
47        let sum = pmt1 + pmt2 + pmt3 + pmt4 + pmt5 + pmt6 + pmt7 + pmt8 + pmt9 + pmt10;
48        return sum;
49    }
50
51    var call = fun(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
52    print(call);
53}
54
55/*
56*    IntToTaggedPtr(); ZExtInt8ToInt32(); Int32LSL(); Int32(); Int32Add();
57*    ReadInst32_0();
58*/
59                      /**************HandleLdaiImm32****************/
60{
61    var fun = function() {
62        let a = 20;
63        return a;
64    }
65    var iter = fun();
66    print(iter);
67}
68
69/*
70*    SExtInt32ToPtr(); SExtInt1ToInt32();
71*    ReadInstSigned8_0();
72*/
73                      /**************HandleJmpImm8****************/
74{
75    var fun = function() {
76        try {
77            print("foo");
78          } finally {
79            print("bar");
80        }
81    }
82    var iter = fun();
83}
84
85/*
86*    CastInt64ToFloat64(); DoubleToTaggedDoublePtr(); ZExtInt8ToInt64(); Int64(); Int64LSL(); Int64Add();
87*    CastDoubleToInt64(); Int64ToTaggedPtr();
88*    ReadInst64_0(); ReadInst8_7(); ReadInst8_6(); ReadInst8_5(); ReadInst8_4(); ReadInst8_3(); ReadInst8_2(); ReadInst8_1();
89*    ReadInst8_0();
90*/
91                      /**************HandleFldaiImm64****************/
92{
93    {
94        var fun = function() {
95            let a = 2.55;
96            return a;
97        }
98        var iter = fun();
99        print(iter);
100    }
101}
102
103/*
104*    TaggedIsInt(); TaggedCastToInt32(); Int32Equal(); TaggedIsDouble(); TaggedCastToDouble(); Double(); DoubleAdd();
105*    CallRuntime(); Int64And(); Int64Equal(); TaggedCastToInt64(); ChangeInt64ToInt32(); BoolNot(); TaggedIsNumber();
106*    BoolAnd(); ChangeTaggedPointerToInt64(); Int64Sub(); SavePcIfNeeded(); TaggedIsObject(); Argument(); PtrSub();
107*/
108                      /**************HandleIncImm8****************/
109{
110    var fun = function() {
111        let a = 10;
112        return ++a;
113    }
114    var iter = fun();
115    print(iter);
116}
117
118/*
119*    TaggedIsException(); TaggedIsUndefined(); Int32Not(); TruncPtrToInt32(); IntPtrEqual(); CallNGCRuntime(); Equal();
120*    TruncInt64ToInt32();
121*/
122                      /**************HandleSuspendgeneratorV8****************/
123{
124    var fun = function *() {
125        yield 888;
126    }
127
128    let iter = fun();
129    print(iter.next().value);
130}
131
132/*
133*    ZExtInt16ToInt32(); Int16Sub(); TaggedIsHeapObject(); IsBase(); IsJSFunction(); IsConstructor(); IsJSHClass(); GetObjectType();
134*    JSCallDispatch(); ChangeInt32ToIntPtr(); Int16ToTaggedInt(); HasPendingException(); GetMethodFromJSFunction();
135*    Int32LessThanOrEqual(); Int32LSR(); Int32And(); Int32GreaterThanOrEqual(); LoadHClass(); Int32NotEqual(); ZExtInt32ToInt64();
136*    SExtInt16ToInt64(); Int64Or(); Int64NotEqual(); IsJSFunctionBase();
137*
138*/
139                      /**************HandleNewobjrangeImm8Imm8V8****************/
140{
141    class Parent {
142        constructor(name, age) {
143            this.name = name;
144            this.age = age;
145        }
146        sayName() {
147            print(this.name);
148            print(this.age);
149        }
150    };
151    const child = new Parent('echo', 26);
152    child.sayName(); //echo
153}
154
155/*
156*    Int32Sub(); DoubleSub();
157*
158*/
159                      /**************HandleDecImm8****************/
160{
161    var fun = function() {
162        let a = 10;
163        return --a;
164    }
165    var iter = fun();
166    print(iter);
167}
168
169/*
170*    FastStrictEqual(); ChangeInt32ToFloat64(); DoubleIsNAN(); BoolOr(); DoubleEqual(); BothAreString(); IsUtf16String();
171*    ZExtInt1ToInt32(); GetLengthFromString(); GetHashcodeFromString(); CallNGCRuntime(); TaggedIsBigInt();
172*    BothAreString();
173*/
174                      /**************HandleStrictnoteqImm8V8****************/
175{
176    var fun = function(parameter1, parameter2) {
177        if (parameter1 === parameter2) {
178            return parameter2;
179        }
180        return parameter1;
181    }
182    var iter = fun(10n, 5);
183    print(iter);
184}
185
186/*
187*   DoubleToInt(); Int32Xor(); ChangeFloat64ToInt32(); Int64LSR(); Int32LessThan();
188*
189*/
190                      /**************HandleXor2Imm8V8****************/
191{
192    var fun = function(parameter1, parameter2) {
193        if (parameter1 != parameter2) {
194            return parameter1^parameter2;
195        }
196        return parameter2;
197    }
198    var iter = fun(10, 5);
199    print(iter);
200}
201
202/*
203*   Int32ASR();
204*
205*/
206                      /**************HandleAshr2Imm8V8****************/
207{
208    var fun = function(parameter1, parameter2) {
209        if (parameter1 != parameter2) {
210            return parameter1 >> parameter2;
211        }
212        return parameter2;
213    }
214    var iter = fun(10, 1);
215    print(iter);
216}
217
218/*
219*  TaggedIsNumeric();
220*
221*/
222                      /**************HandleTonumericImm8****************/
223{
224    var fun = function() {
225        let parameter = 5n;
226        return parameter++;
227    }
228    var iter = fun();
229    print(iter);
230}
231
232/*
233*  FastMul(); TaggedIsHole(); FastAddSubAndMul(); Int64GreaterThan(); Int64LessThan(); FastBinaryOp();
234*
235*/
236                      /**************HandleMul2Imm8V8****************/
237{
238    var fun = function() {
239        let parameter1 = 5.5;
240        let parameter2 = 2;
241        return parameter1 * parameter2;
242    }
243    var iter = fun();
244    print(iter);
245}
246
247/*
248*  GetPropertyByIndex(); IntToTaggedInt(); TaggedFalse(); Undefined(); IsSpecialIndexedObj(); IsFastTypeArray();
249*  IsSpecialContainer(); GetContainerProperty(); GetElementsArray(); IsDictionaryElement(); GetLengthOfTaggedArray();
250*  Int32UnsignedLessThan(); GetValueFromTaggedArray(); TaggedIsNotHole(); FindElementFromNumberDictionary();
251*  CallGetterHelper(); GetPrototypeFromHClass(); SExtInt32ToInt64(); Int32GreaterThan(); IsAccessor(); JSAPIContainerGet();
252*/
253                      /**************HandleLdobjbyindexImm8Imm16****************/
254{
255    var fun = function() {
256        let array = new Array(2);
257        array[0] = 12;
258        array[1] = 18;
259        return array[1];
260    }
261    var iter = fun();
262    print(iter);
263}
264
265/*
266*  FastEqual(); TaggedIsUndefinedOrNull(); TaggedIsBoolean(); TaggedIsSpecial();
267*
268*/
269                      /**************HandleEqImm8V8****************/
270{
271    var fun = function(parameter1, parameter2) {
272        if (parameter1 == parameter2) {
273            return parameter1;
274        }
275        return parameter2;
276    }
277    var iter = fun(10, 10);
278    print(iter);
279}
280
281/*
282*  FastMod(); Int32Mod(); DoubleIsINF();
283*
284*/
285                      /**************HandleMod2Imm8V8****************/
286{
287    var fun = function(parameter1, parameter2) {
288        let result = parameter1 % parameter2;
289        return result;
290    }
291    var iter = fun(55, 10);
292    print(iter);
293}
294
295/*
296*  FastTypeOf(); GetGlobalConstantString(); TaggedIsTrue(); TaggedIsFalse(); TaggedIsNull(); IsString(); IsSymbol(); IsCallable();
297*  TaggedObjectIsBigInt();  Int32Mul(); Int64Mul();
298*/
299                      /**************HandleTypeofImm8****************/
300{
301    var fun = function(parameter1, parameter2) {
302        let result = parameter1 % parameter2;
303        return typeof(result);
304    }
305    var iter = fun(55, 10);
306    print(iter);
307}
308
309/*
310*  TaggedGetInt(); DoubleLessThan(); TaggedTrue();
311*
312*/
313                      /**************HandleLessImm8V8****************/
314{
315    var fun = function(parameter1, parameter2) {
316        if (parameter1 < parameter2) {
317            return parameter1;
318        };
319        return parameter2;
320    }
321    var iter = fun(55, 11);
322    print(iter);
323}
324
325/*
326*  DoubleLessThanOrEqual();
327*
328*/
329                      /**************HandleLesseqImm8V8****************/
330{
331    var fun = function(parameter1, parameter2) {
332        if (parameter1 <= parameter2) {
333            return parameter1;
334        };
335        return parameter2;
336    }
337    var iter = fun(5, 11);
338    print(iter);
339}
340
341/*
342*  DoubleGreaterThan();
343*
344*/
345                      /**************HandleGreaterImm8V8****************/
346{
347    var fun = function(parameter1, parameter2) {
348        if (parameter1 > parameter2) {
349            return parameter1;
350        };
351        return parameter2;
352    }
353    var iter = fun(5, 11);
354    print(iter);
355}
356
357/*
358*  DoubleGreaterThanOrEqual();
359*
360*/
361                      /**************HandleGreatereqImm8V8****************/
362{
363    var fun = function(parameter1, parameter2) {
364        if (parameter1 >= parameter2) {
365            return parameter1;
366        };
367        return parameter2;
368    }
369    var iter = fun(5, 9);
370    print(iter);
371}
372
373/*
374*  Int32UnsignedGreaterThan(); ChangeUInt32ToFloat64();
375*
376*/
377                      /**************HandleShr2Imm8V8****************/
378{
379    var fun = function(parameter1, parameter2) {
380        if (parameter1 >> parameter2) {
381            return parameter1;
382        };
383        return parameter2;
384    }
385    var iter = fun(5, 1);
386    print(iter);
387}
388
389/*
390*  SetPropertyByIndex(); LoopBegin(); Hole(); SetValueToTaggedArray(); IsExtensible(); Exception();
391*
392*/
393                      /**************HandleStobjbyindexImm8V8Imm16****************/
394{
395    var fun = function() {
396
397        var myarray=new Array();
398        return myarray[0]=66;
399    }
400    var iter = fun();
401    print(iter);
402}
403
404/*
405*  FastDiv(); Int64Xor(); DoubleDiv();
406*
407*/
408                      /**************HandleDiv2Imm8V8****************/
409{
410    var fun = function(parameter1, parameter2) {
411        let result = parameter1 / parameter2;
412        return result;
413    }
414    var iter = fun(55, 10);
415    print(iter);
416}
417
418/*
419*  IsCallableFromBitField(); GetCallFieldFromMethod(); DispatchBuiltins(); IsClassConstructorFromBitField(); ConstructorCheck();
420*  SaveJumpSizeIfNeeded(); TaggedObjectIsEcmaObject();
421*/
422                      /**************HandleNewobjrangeImm8Imm8V8****************/
423{
424    var fun = function() {
425        let func = new Object();
426        func.name = "don";
427        return func.name;
428    }
429    var iter = fun();
430    print(iter);
431}
432
433/*
434*  FastAdd();
435*
436*/
437                      /**************HandleAdd2Imm8V8****************/
438{
439    var fun = function(parameter1, parameter2) {
440
441        return parameter1 + parameter2;
442    }
443    var iter = fun(10, 10);
444    print(iter);
445}
446
447/*
448*  FastSub();
449*
450*/
451                      /**************HandleSub2Imm8V8****************/
452{
453    var fun = function(parameter1, parameter2) {
454
455        return parameter1 - parameter2;
456    }
457    var iter = fun(10, 10);
458    print(iter);
459}
460
461/*
462*  FastToBoolean();
463*
464*/
465                      /**************HandleIsfalse****************/
466{
467    var fun = function(parameter1, parameter2) {
468
469        if ((parameter1 == 0) || (parameter2 > 0)) {
470            return parameter1;
471        }
472        return parameter2;
473    }
474    var iter = fun(1, 10);
475    print(iter);
476}
477
478/*
479*  Null();
480*
481*/
482                      /**************HandleLdnull****************/
483{
484    var fun = function() {
485
486        let par = null;
487        return undefined;
488    }
489    var iter = fun();
490    print(iter);
491}
492
493/*
494*  LoopEnd(); GetPropertiesFromLexicalEnv();
495*
496*/
497                      /**************HandleLdlexvarImm4Imm4****************/
498{
499    function Module() {
500        function f(a) {
501          a = a | 0;
502          a = funTable[a & 0](a | 0) | 0;
503          return a | 0;
504        }
505        function g() {
506          return 2.3;
507        }
508        var funTable = [ g ];
509        return { f:f };
510      }
511    print(Module().f());
512}
513
514/*
515*  Int32Or();
516*
517*/
518                      /**************HandleOr2Imm8V8****************/
519{
520    function Module() {
521        function f(a) {
522          a = a | 0;
523          var b = 0;
524          b = (a + 23) | 0;
525          return b;
526        }
527        return { f:f };
528      }
529      print(Module().f());
530}
531
532/*
533*    PtrAdd(); IntPtrSize();
534*    DispatchWithId();
535*/
536                      /**************HandleThrow****************/
537{
538    var fun = function() {
539        print("boom");
540        throw "boom";
541    }
542    var a = fun();
543}