// Copyright 2018 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.

module array {
  extern macro GenerateFastArrayShift(Context, Object): Object labels Slow;
  extern builtin ArrayShift(Context, JSFunction, Object, int32): void;

  // https://tc39.github.io/ecma262/#sec-array.prototype.shift
  javascript builtin ArrayPrototypeShift(
      context: Context, receiver: Object, ...arguments): Object {
    try {
      return GenerateFastArrayShift(context, receiver) otherwise Slow;
    }
    label Slow {
      // TODO(szuend): Move checks if FastElementsAccessor::shift can be used
      //               from the C++ builtin here.
      tail ArrayShift(
          context, LoadTargetFromFrame(), Undefined,
          convert<int32>(arguments.length));
    }

    // TODO(szuend): Implement baseline Array.p.shift that replaces JS fallback.
  }
}
