Mercurial > hg > graal-jvmci-8
diff src/share/vm/adlc/formssel.cpp @ 1541:b5fdf39b9749
6953576: bottom_type for matched AddPNodes doesn't always agree with ideal
Reviewed-by: kvn
author | never |
---|---|
date | Tue, 18 May 2010 23:58:32 -0700 |
parents | d7f654633cfe |
children | c18cbe5936b8 |
line wrap: on
line diff
--- a/src/share/vm/adlc/formssel.cpp Tue May 18 13:45:03 2010 -0700 +++ b/src/share/vm/adlc/formssel.cpp Tue May 18 23:58:32 2010 -0700 @@ -735,7 +735,7 @@ // This instruction captures the machine-independent bottom_type // Expected use is for pointer vs oop determination for LoadP -bool InstructForm::captures_bottom_type() const { +bool InstructForm::captures_bottom_type(FormDict &globals) const { if( _matrule && _matrule->_rChild && (!strcmp(_matrule->_rChild->_opType,"CastPP") || // new result type !strcmp(_matrule->_rChild->_opType,"CastX2P") || // new result type @@ -748,6 +748,8 @@ else if ( is_ideal_load() == Form::idealP ) return true; else if ( is_ideal_store() != Form::none ) return true; + if (needs_base_oop_edge(globals)) return true; + return false; } @@ -1061,7 +1063,7 @@ // Base class for this instruction, MachNode except for calls -const char *InstructForm::mach_base_class() const { +const char *InstructForm::mach_base_class(FormDict &globals) const { if( is_ideal_call() == Form::JAVA_STATIC ) { return "MachCallStaticJavaNode"; } @@ -1092,7 +1094,7 @@ else if (is_ideal_nop()) { return "MachNopNode"; } - else if (captures_bottom_type()) { + else if (captures_bottom_type(globals)) { return "MachTypeNode"; } else { return "MachNode";