// 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'); })();