// 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. var count = 0; function load(a) { var prop = { toString: function() { count++; return 'z'; } }; a[prop] ^= 1; } function f(null_or_undefined) { // Turn the LoadIC megamorphic load({a0:1, z:2}); load({a1:1, z:2}); load({a2:1, z:2}); load({a3:1, z:2}); load({a4:1, z:2}); // Now try null to check if generic IC handles this correctly. // It shouldn't call prop.toString. load(null_or_undefined); } try { f(null); } catch(error) { assertInstanceof(error, TypeError); assertSame(10, count); } try { count = 0; f(undefined); } catch(error) { assertInstanceof(error, TypeError); assertSame(10, count); }