| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --trace-ic --logfile=test/mjsunit/tools/trace-ic-test.log |
| // Flags: --allow-natives-syntax |
| |
| // The idea behind this test is to make sure we do not crash when using the |
| // --trace-ic flag. |
| |
| |
| (function testLoadIC() { |
| function loadIC(obj) { |
| return obj.field; |
| } |
| |
| %EnsureFeedbackVectorForFunction(loadIC); |
| |
| var obj = {field: 'hello'}; |
| loadIC(obj); |
| loadIC(obj); |
| loadIC(obj); |
| })(); |
| |
| (function testStoreIC() { |
| function storeIC(obj, value) { |
| return obj.field = value; |
| } |
| |
| %EnsureFeedbackVectorForFunction(storeIC); |
| |
| var obj = {field: 'hello'}; |
| storeIC(obj, 'world'); |
| storeIC(obj, 'world'); |
| storeIC(obj, 'world'); |
| })(); |
| |
| (function testKeyedLoadIC() { |
| function keyedLoadIC(obj, field) { |
| return obj[field]; |
| } |
| |
| %EnsureFeedbackVectorForFunction(keyedLoadIC); |
| |
| var obj = {field: 'hello'}; |
| keyedLoadIC(obj, 'field'); |
| keyedLoadIC(obj, 'field'); |
| keyedLoadIC(obj, 'field'); |
| })(); |
| |
| (function testKeyedStoreIC() { |
| function keyedStoreIC(obj, field, value) { |
| return obj[field] = value; |
| } |
| |
| %EnsureFeedbackVectorForFunction(keyedStoreIC); |
| |
| var obj = {field: 'hello'}; |
| keyedStoreIC(obj, 'field', 'world'); |
| keyedStoreIC(obj, 'field', 'world'); |
| keyedStoreIC(obj, 'field', 'world'); |
| })(); |