1 /*
2 * Copyright (c) 2005, 2009, 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.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 //-----------------------------------------------------------------------------
26 //----------------------------IdealKit-----------------------------------------
27 // Set of utilities for creating control flow and scalar SSA data flow.
28 // Control:
29 // if_then(left, relop, right)
30 // else_ (optional)
31 // end_if
32 // loop(iv variable, initial, relop, limit)
33 // - sets iv to initial for first trip
34 // - exits when relation on limit is true
35 // - the values of initial and limit should be loop invariant
36 // - no increment, must be explicitly coded
37 // - final value of iv is available after end_loop (until dead())
38 // end_loop
39 // make_label(number of gotos)
40 // goto_(label)
41 // bind(label)
42 // Data:
43 // ConI(integer constant) - create an integer constant
44 // set(variable, value) - assignment
211 int adr_idx,
212 bool require_atomic_access = false);
213
214 // Store a card mark ordered after store_oop
215 Node* storeCM(Node* ctl,
216 Node* adr,
217 Node* val,
218 Node* oop_store,
219 int oop_adr_idx,
220 BasicType bt,
221 int adr_idx);
222
223 // Trivial call
224 void make_leaf_call(const TypeFunc *slow_call_type,
225 address slow_call,
226 const char *leaf_name,
227 Node* parm0,
228 Node* parm1 = NULL,
229 Node* parm2 = NULL);
230 };
|
1 /*
2 * Copyright (c) 2005, 2010, 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.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_OPTO_IDEALKIT_HPP
26 #define SHARE_VM_OPTO_IDEALKIT_HPP
27
28 #include "opto/addnode.hpp"
29 #include "opto/cfgnode.hpp"
30 #include "opto/connode.hpp"
31 #include "opto/divnode.hpp"
32 #include "opto/mulnode.hpp"
33 #include "opto/phaseX.hpp"
34 #include "opto/subnode.hpp"
35 #include "opto/type.hpp"
36
37 //-----------------------------------------------------------------------------
38 //----------------------------IdealKit-----------------------------------------
39 // Set of utilities for creating control flow and scalar SSA data flow.
40 // Control:
41 // if_then(left, relop, right)
42 // else_ (optional)
43 // end_if
44 // loop(iv variable, initial, relop, limit)
45 // - sets iv to initial for first trip
46 // - exits when relation on limit is true
47 // - the values of initial and limit should be loop invariant
48 // - no increment, must be explicitly coded
49 // - final value of iv is available after end_loop (until dead())
50 // end_loop
51 // make_label(number of gotos)
52 // goto_(label)
53 // bind(label)
54 // Data:
55 // ConI(integer constant) - create an integer constant
56 // set(variable, value) - assignment
223 int adr_idx,
224 bool require_atomic_access = false);
225
226 // Store a card mark ordered after store_oop
227 Node* storeCM(Node* ctl,
228 Node* adr,
229 Node* val,
230 Node* oop_store,
231 int oop_adr_idx,
232 BasicType bt,
233 int adr_idx);
234
235 // Trivial call
236 void make_leaf_call(const TypeFunc *slow_call_type,
237 address slow_call,
238 const char *leaf_name,
239 Node* parm0,
240 Node* parm1 = NULL,
241 Node* parm2 = NULL);
242 };
243
244 #endif // SHARE_VM_OPTO_IDEALKIT_HPP
|