// Copyright 2020 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: --allow-natives-syntax --turboprop --turboprop-dynamic-map-checks --opt
// Flags: --no-always-opt

function load(obj){
  return obj.x;
}

%PrepareFunctionForOptimization(load);
obj = {};
obj.x = 1;

//get mono feedback
load(obj);
load(obj);

// optimize as mono
%OptimizeFunctionOnNextCall(load);
load(obj);
assertOptimized(load);
load(obj);

// transition to poly - should retain optimized code
obj.y = 2;
load(obj);
assertOptimized(load);
load(obj);

// transition to more polymorphic
obj.z = 3;
load(obj);
obj.q =4;
load(obj);

// transition to megamorphic
assertOptimized(load);
obj.r = 5;
load(obj);
obj.s = 6;
load(obj);
assertUnoptimized(load);
load(obj);
