1/* 2 * Copyright (c) 2023 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:storeicbyname 18 * @tc.desc:test storeicbyname 19 * @tc.type: FUNC 20 * @tc.require: issueI7UTOA 21 */ 22 23const arr = []; 24for (let i = 0; i < 200; i++) { 25 26} 27for (let i = 0; i < 100; i++) { 28 arr.length = 1025; 29} 30print("test successful !!!"); 31for (let i = 0; i < 100; i++) { 32 const v77 = {}; 33 v77.__proto__ = null; 34} 35print("test set __proto__ null successful") 36 37let bad_proto = { 38 get __proto__(){ 39 40 } 41} 42let obj = {}; 43obj.__proto__ = bad_proto; 44print("test set bad_proto successful!"); 45 46let obj1 = {}; 47Object.defineProperty(obj1, 'foo', { 48 set: function(value) { 49 Object.defineProperty(this, 'bar', { 50 get: function() { 51 return this._bar; 52 }, 53 set: function(value) { 54 this._bar = value; 55 }, 56 }); 57 } 58}); 59 60obj.foo = 'some value'; 61for (let i = 0; i < 20; i++) { 62 obj.bar = 'new value'; 63} 64print("test accessor ic successful!"); 65 66{ 67 let o = {}; 68 o["a"] = String.prototype; 69 for (let i = 0; i < 2; i++) { 70 let o1; 71 if (o1) { 72 o["a"]= o1; 73 } else { 74 o1 = o["a"]; 75 } 76 for (let j = 0; j < 50; j++) { 77 let o2 = new Object(-63); 78 if (o2) { 79 o["a"] = o2; 80 } else { 81 o2 = o["a"]; 82 } 83 let o3 = o1.valueOf(); 84 if (o3) { 85 o["a"] = o3; 86 } else { 87 o3 = o["a"]; 88 } 89 // o3 is Number when i = 0 and o3 is Int when i = 1 90 try { 91 o3.x = "telu"; 92 } catch(e) {} 93 } 94 } 95 print("test store_ic_by_name success"); 96}