/substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/InternalVMMethod.java

https://github.com/oracle/graal · Java · 55 lines · 16 code · 6 blank · 33 comment · 0 complexity · d53f448246b010d95ace65dbb0bc60a9 MD5 · raw file

  1. /*
  2. * Copyright (c) 2018, 2018, Oracle and/or its affiliates. All rights reserved.
  3. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4. *
  5. * This code is free software; you can redistribute it and/or modify it
  6. * under the terms of the GNU General Public License version 2 only, as
  7. * published by the Free Software Foundation. Oracle designates this
  8. * particular file as subject to the "Classpath" exception as provided
  9. * by Oracle in the LICENSE file that accompanied this code.
  10. *
  11. * This code is distributed in the hope that it will be useful, but WITHOUT
  12. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. * version 2 for more details (a copy is included in the LICENSE file that
  15. * accompanied this code).
  16. *
  17. * You should have received a copy of the GNU General Public License version
  18. * 2 along with this work; if not, write to the Free Software Foundation,
  19. * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20. *
  21. * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22. * or visit www.oracle.com if you need additional information or have any
  23. * questions.
  24. */
  25. package com.oracle.svm.core.jdk;
  26. import java.lang.annotation.Annotation;
  27. import java.lang.annotation.ElementType;
  28. import java.lang.annotation.Retention;
  29. import java.lang.annotation.RetentionPolicy;
  30. import java.lang.annotation.Target;
  31. import org.graalvm.util.DirectAnnotationAccess;
  32. /**
  33. * Annotation for types whose methods must be ignored for certain kinds of stack walks, such as by
  34. * Reflection.getCallerClass(). All methods in the annotated type have the same level of visibility.
  35. */
  36. @Retention(RetentionPolicy.RUNTIME)
  37. @Target(ElementType.TYPE)
  38. public @interface InternalVMMethod {
  39. @InternalVMMethod()
  40. class Holder {
  41. /** Instance of the annotation, useful when the annotation is manually injected. */
  42. public static final InternalVMMethod INSTANCE = DirectAnnotationAccess.getAnnotation(Holder.class, InternalVMMethod.class);
  43. /**
  44. * Array that contains only the instance of the annotation, useful when the annotation is
  45. * manually injected.
  46. */
  47. public static final Annotation[] ARRAY = new Annotation[]{INSTANCE};
  48. }
  49. }