annotate graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/Specialization.java @ 16762:ea9903f9684f

Truffle-DSL: added some javadoc
author Christian Humer <christian.humer@gmail.com>
date Mon, 11 Aug 2014 15:57:47 +0200
parents 80f9446d4c81
children 3a37116ef37f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
1 /*
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
2 * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved.
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
4 *
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
11279
494b818b527c Adding "Classpath" exception to the classes in the com.oracle.truffle.api and the com.oracle.truffle.api.dsl package.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 11195
diff changeset
7 * published by the Free Software Foundation. Oracle designates this
494b818b527c Adding "Classpath" exception to the classes in the com.oracle.truffle.api and the com.oracle.truffle.api.dsl package.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 11195
diff changeset
8 * particular file as subject to the "Classpath" exception as provided
494b818b527c Adding "Classpath" exception to the classes in the com.oracle.truffle.api and the com.oracle.truffle.api.dsl package.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents: 11195
diff changeset
9 * by Oracle in the LICENSE file that accompanied this code.
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
10 *
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
11 * This code is distributed in the hope that it will be useful, but WITHOUT
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
14 * version 2 for more details (a copy is included in the LICENSE file that
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
15 * accompanied this code).
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
16 *
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License version
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
18 * 2 along with this work; if not, write to the Free Software Foundation,
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
20 *
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
22 * or visit www.oracle.com if you need additional information or have any
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
23 * questions.
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
24 */
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
25 package com.oracle.truffle.api.dsl;
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
26
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
27 import java.lang.annotation.*;
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
28
10825
081eac3646d5 Truffle-DSL: Made specializations reflectable at runtime.
Christian Humer <christian.humer@gmail.com>
parents: 10597
diff changeset
29 @Retention(RetentionPolicy.RUNTIME)
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
30 @Target({ElementType.METHOD})
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
31 public @interface Specialization {
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
32
16762
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
33 /**
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
34 * @deprecated do not use anymore. Will get removed in the next release.
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
35 */
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
36 @Deprecated int DEFAULT_ORDER = -1;
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
37
16762
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
38 /**
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
39 * The order has no effect anymore. The declaration order specialization methods is used
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
40 * instead.
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
41 *
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
42 * @deprecated use declaration order instead. Will get removed in the next release.
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
43 */
16749
80f9446d4c81 Truffle-DSL: deprecated order and added insertBefore and contains attributes to the Specialization annotation.
Christian Humer <christian.humer@gmail.com>
parents: 11279
diff changeset
44 @Deprecated
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
45 int order() default DEFAULT_ORDER;
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
46
16762
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
47 /**
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
48 * Inserts this and all specializations that are declared after this specialization before a
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
49 * specialization in the superclass. By default all specializations of the subclass are appended
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
50 * to the specializations of the superclass.
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
51 */
16749
80f9446d4c81 Truffle-DSL: deprecated order and added insertBefore and contains attributes to the Specialization annotation.
Christian Humer <christian.humer@gmail.com>
parents: 11279
diff changeset
52 String insertBefore() default "";
80f9446d4c81 Truffle-DSL: deprecated order and added insertBefore and contains attributes to the Specialization annotation.
Christian Humer <christian.humer@gmail.com>
parents: 11279
diff changeset
53
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
54 Class<? extends Throwable>[] rewriteOn() default {};
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
55
16762
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
56 /**
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
57 * The contains attribute declares all specializations that are contained by this
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
58 * specialization. A containing specialization must be strictly generic as the contained
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
59 * specialization.
ea9903f9684f Truffle-DSL: added some javadoc
Christian Humer <christian.humer@gmail.com>
parents: 16749
diff changeset
60 */
16749
80f9446d4c81 Truffle-DSL: deprecated order and added insertBefore and contains attributes to the Specialization annotation.
Christian Humer <christian.humer@gmail.com>
parents: 11279
diff changeset
61 String[] contains() default {};
80f9446d4c81 Truffle-DSL: deprecated order and added insertBefore and contains attributes to the Specialization annotation.
Christian Humer <christian.humer@gmail.com>
parents: 11279
diff changeset
62
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
63 String[] guards() default {};
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
64
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
65 /**
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
66 * Defines the assumptions to check for this specialization. When the specialization method is
11195
4f52b08bd2f9 Truffle-DSL: Implemented specialization grouping for generic cases.
Christian Humer <christian.humer@gmail.com>
parents: 10825
diff changeset
67 * invoked it is guaranteed that these assumptions still hold. It is not guaranteed that they
4f52b08bd2f9 Truffle-DSL: Implemented specialization grouping for generic cases.
Christian Humer <christian.humer@gmail.com>
parents: 10825
diff changeset
68 * are checked before the {@link #guards()} methods. They may be checked before after or in
4f52b08bd2f9 Truffle-DSL: Implemented specialization grouping for generic cases.
Christian Humer <christian.humer@gmail.com>
parents: 10825
diff changeset
69 * between {@link #guards()}. To declare assumptions use the {@link NodeAssumptions} annotation
4f52b08bd2f9 Truffle-DSL: Implemented specialization grouping for generic cases.
Christian Humer <christian.humer@gmail.com>
parents: 10825
diff changeset
70 * at class level.
10597
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
71 */
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
72 String[] assumptions() default {};
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
73
79041ab43660 Truffle-DSL: API-change: Renamed truffle.api.codegen to truffle.api.dsl for all projects and packages.
Christian Humer <christian.humer@gmail.com>
parents:
diff changeset
74 }