/*
 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package jdk.internal.vm.annotation;

import java.lang.annotation.*;

A method or constructor may be annotated as "force inline" if the standard inlining metrics are to be ignored when the HotSpot VM inlines the method or constructor.

This annotation must be used sparingly. It is useful when the only reasonable alternative is to bind the name of a specific method or constructor into the HotSpot VM for special handling by the inlining policy. This annotation must not be relied on as an alternative to avoid tuning the VM's inlining policy. In a few cases, it may act as a temporary workaround until the profiling and inlining performed by the HotSpot VM is sufficiently improved.

Implementation Note: This annotation only takes effect for methods or constructors of classes loaded by the boot loader. Annotations on methods or constructors of classes loaded outside of the boot loader are ignored.
/** * A method or constructor may be annotated as "force inline" if the standard * inlining metrics are to be ignored when the HotSpot VM inlines the method * or constructor. * <p> * This annotation must be used sparingly. It is useful when the only * reasonable alternative is to bind the name of a specific method or * constructor into the HotSpot VM for special handling by the inlining policy. * This annotation must not be relied on as an alternative to avoid tuning the * VM's inlining policy. In a few cases, it may act as a temporary workaround * until the profiling and inlining performed by the HotSpot VM is sufficiently * improved. * * @implNote * This annotation only takes effect for methods or constructors of classes * loaded by the boot loader. Annotations on methods or constructors of classes * loaded outside of the boot loader are ignored. */
@Target({ElementType.METHOD, ElementType.CONSTRUCTOR}) @Retention(RetentionPolicy.RUNTIME) public @interface ForceInline { }