Cross Reference: callGenerator.hpp
xref
: /
openjdk7
/
hotspot
/
src
/
share
/
vm
/
opto
/
callGenerator.hpp
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
0
N/A
/*
2677
N/A
* Copyright (c) 2000, 2011, Oracle
and
/
or
its affiliates. All rights reserved.
0
N/A
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0
N/A
*
0
N/A
* This code is free software; you can redistribute it
and
/
or
modify it
0
N/A
* under the terms of the GNU General Public License version 2 only, as
0
N/A
* published by the Free Software Foundation.
0
N/A
*
0
N/A
* This code is distributed in the hope that it will be useful, but WITHOUT
0
N/A
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0
N/A
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0
N/A
* version 2 for more details (a copy is included in the LICENSE file that
0
N/A
* accompanied this code).
0
N/A
*
0
N/A
* You should have received a copy of the GNU General Public License version
0
N/A
* 2 along with this work; if not, write to the Free Software Foundation,
0
N/A
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0
N/A
*
1472
N/A
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
1472
N/A
* or visit
www.oracle.c
om if you need additional information or have any
1472
N/A
* questions.
0
N/A
*
0
N/A
*/
0
N/A
1879
N/A
#
ifndef
SHARE_VM_OPTO_CALLGENERATOR_HPP
1879
N/A
#
define
SHARE_VM_OPTO_CALLGENERATOR_HPP
1879
N/A
3932
N/A
#
include
"
compiler
/
compileBroker.hpp
"
1879
N/A
#
include
"
opto
/
callnode.hpp
"
1879
N/A
#
include
"
opto
/
compile.hpp
"
1879
N/A
#
include
"
opto
/
type.hpp
"
1879
N/A
#
include
"
runtime
/
deoptimization.hpp
"
1879
N/A
0
N/A
//---------------------------CallGenerator-------------------------------------
0
N/A
// The subclasses of this class handle generation of ideal nodes for
0
N/A
// call sites and method entry points.
0
N/A
0
N/A
class
CallGenerator
:
public
ResourceObj
{
0
N/A
public
:
0
N/A
enum
{
0
N/A
xxxunusedxxx
0
N/A
};
0
N/A
0
N/A
private
:
0
N/A
ciMethod
*
_method
;
// The method being called.
0
N/A
0
N/A
protected
:
3932
N/A
CallGenerator
(
ciMethod
*
method
) :
_method
(
method
) {}
0
N/A
0
N/A
public
:
0
N/A
// Accessors
0
N/A
ciMethod
*
method
()
const
{
return
_method
; }
0
N/A
0
N/A
// is_inline: At least some code implementing the method is copied here.
0
N/A
virtual
bool
is_inline
()
const
{
return
false
; }
0
N/A
// is_intrinsic: There's a method-specific way of generating the inline code.
0
N/A
virtual
bool
is_intrinsic
()
const
{
return
false
; }
0
N/A
// is_parse: Bytecodes implementing the specific method are copied here.
0
N/A
virtual
bool
is_parse
()
const
{
return
false
; }
0
N/A
// is_virtual: The call uses the receiver type to select or check the method.
0
N/A
virtual
bool
is_virtual
()
const
{
return
false
; }
0
N/A
// is_deferred: The decision whether to inline or not is deferred.
0
N/A
virtual
bool
is_deferred
()
const
{
return
false
; }
0
N/A
// is_predicted: Uses an explicit check against a predicted type.
0
N/A
virtual
bool
is_predicted
()
const
{
return
false
; }
0
N/A
// is_trap: Does not return to the caller. (E.g., uncommon trap.)
0
N/A
virtual
bool
is_trap
()
const
{
return
false
; }
0
N/A
1080
N/A
// is_late_inline: supports conversion of call into an inline
1080
N/A
virtual
bool
is_late_inline
()
const
{
return
false
; }
4132
N/A
// same but for method handle calls
4132
N/A
virtual
bool
is_mh_late_inline
()
const
{
return
false
; }
4132
N/A
4132
N/A
// for method handle calls: have we tried inlinining the call already?
4132
N/A
virtual
bool
already_attempted
()
const
{
ShouldNotReachHere
();
return
false
; }
4132
N/A
1080
N/A
// Replace the call with an inline version of the code
1080
N/A
virtual
void
do_late_inline
() {
ShouldNotReachHere
(); }
1080
N/A
1080
N/A
virtual
CallStaticJavaNode
*
call_node
()
const
{
ShouldNotReachHere
();
return
NULL
; }
1080
N/A
0
N/A
// Note: It is possible for a CG to be both inline and virtual.
0
N/A
// (The hashCode intrinsic does a vtable check and an inlined fast path.)
0
N/A
0
N/A
// Utilities:
0
N/A
const
TypeFunc
*
tf
()
const
;
0
N/A
0
N/A
// The given jvms has state and arguments for a call to my method.
0
N/A
// Edges after jvms->argoff() carry all (pre-popped) argument values.
0
N/A
//
0
N/A
// Update the map with state and return values (if any) and return it.
0
N/A
// The return values (0, 1, or 2) must be pushed on the map's stack,
0
N/A
// and the sp of the jvms incremented accordingly.
0
N/A
//
0
N/A
// The jvms is returned on success. Alternatively, a copy of the
0
N/A
// given jvms, suitably updated, may be returned, in which case the
0
N/A
// caller should discard the original jvms.
0
N/A
//
0
N/A
// The non-Parm edges of the returned map will contain updated global state,
0
N/A
// and one or two edges before jvms->sp() will carry any return values.
0
N/A
// Other map edges may contain locals or monitors, and should not
0
N/A
// be changed in meaning.
0
N/A
//
0
N/A
// If the call traps, the returned map must have a control edge of top.
0
N/A
// If the call can throw, the returned map must report has_exceptions().
0
N/A
//
0
N/A
// If the result is NULL, it means that this CallGenerator was unable
0
N/A
// to handle the given call, and another CallGenerator should be consulted.
0
N/A
virtual
JVMState
*
generate
(
JVMState
*
jvms
) = 0;
0
N/A
0
N/A
// How to generate a call site that is inlined:
0
N/A
static
CallGenerator
*
for_inline
(
ciMethod
* m,
float
expected_uses
= -
1
);
0
N/A
// How to generate code for an on-stack replacement handler.
0
N/A
static
CallGenerator
*
for_osr
(
ciMethod
* m,
int
osr_bci
);
0
N/A
0
N/A
// How to generate vanilla out-of-line call sites:
1080
N/A
<
Error!
Full Search
Definition
Symbol
File Path
History
In Project(s)
select all
invert selection
ast
bind-9.11.3
bind-9.6-ESV-R11
dovecot
ec
forgerock
gkrellm-k10addon
glassfish
glassfish-3.1.2
glassfish.hg
hets
httpd
illumos-gate
inkscape
javamail
k10sensor
libmicro
lucene-3.6.0
lxc
ontohub
opengrok
opengrok-jel
opengrok-sun
openjdk7
osnet-11
owl-s
pkg
scfdot
sendmail
solaris-desktop
solaris-userland
solaris-userland-s11u3
solaris-x11-s11
solaris-x11-s12
sssd
sssd-io
systemd
vbox
yui3
Search
Clear
Help
There was an error!
null
java.lang.NullPointerException