// 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;
}

var o = {x: 10, y:20};
var o1 = {x:10, y:20, z:30};

%PrepareFunctionForOptimization(load);
// polymorphic with same handler
load(o);
load(o1);

%OptimizeFunctionOnNextCall(load);
load(o);
load(o1);
assertOptimized(load);

var o2 = {y: 10, x:20};
// deopts but stays optimized
load(o2);
assertOptimized(load);

// deopts and discard code on wrong handler
load(o2);
assertUnoptimized(load);
