memnode.cpp revision 4330
1472N/A * or visit www.oracle.com if you need additional information or have any
1879N/A#include "precompiled.hpp"
1879N/A#include "classfile/systemDictionary.hpp"
1879N/A#include "compiler/compileLog.hpp"
1879N/A#include "memory/allocation.inline.hpp"
1879N/A#include "oops/objArrayKlass.hpp"
1879N/A#include "opto/addnode.hpp"
1879N/A#include "opto/cfgnode.hpp"
1879N/A#include "opto/compile.hpp"
1879N/A#include "opto/connode.hpp"
1879N/A#include "opto/loopnode.hpp"
1879N/A#include "opto/machnode.hpp"
1879N/A#include "opto/matcher.hpp"
1879N/A#include "opto/memnode.hpp"
1879N/A#include "opto/mulnode.hpp"
1879N/A#include "opto/phaseX.hpp"
1879N/A#include "opto/regmask.hpp"
74N/Astatic Node *step_through_mergemem(PhaseGVN *phase, MergeMemNode *mmem, const TypePtr *tp, const TypePtr *adr_check, outputStream *st);
0N/Aextern void print_alias_types();
74N/ANode *MemNode::optimize_simple_memory_chain(Node *mchain, const TypePtr *t_adr, PhaseGVN *phase) {
74N/A assert(phase->C->get_alias_index(t) == phase->C->get_alias_index(t_adr), "correct memory chain");
64N/Astatic Node *step_through_mergemem(PhaseGVN *phase, MergeMemNode *mmem, const TypePtr *tp, const TypePtr *adr_check, outputStream *st) {
64N/A consistent = true;
64N/A if( !consistent ) {
119N/A bool only_dominating_controls = false;
119N/A only_dominating_controls = true;
119N/A only_dominating_controls = true;
119N/A return only_dominating_controls;
0N/A bool known_identical = false;
0N/A bool known_independent = false;
0N/A known_identical = true;
0N/A known_independent = true;
0N/A known_independent = true;
0N/A if (known_independent) {
0N/A if (known_identical) {
0N/A assert(cross_check == NULL || cross_check == TypePtr::BOTTOM, "expected memory type must be wide");
0N/A if( n->is_ConstraintCast() ){