< prev index next >

src/share/vm/opto/memnode.cpp

Print this page

        

*** 41,50 **** --- 41,51 ---- #include "opto/mulnode.hpp" #include "opto/narrowptrnode.hpp" #include "opto/phaseX.hpp" #include "opto/regmask.hpp" #include "utilities/copy.hpp" + #include "utilities/vmError.hpp" // Portions of code courtesy of Clifford Click // Optimization - Graph Style
*** 711,721 **** const TypePtr* MemNode::calculate_adr_type(const Type* t, const TypePtr* cross_check) { if (t == Type::TOP) return NULL; // does not touch memory any more? #ifdef PRODUCT cross_check = NULL; #else ! if (!VerifyAliases || is_error_reported() || Node::in_dump()) cross_check = NULL; #endif const TypePtr* tp = t->isa_ptr(); if (tp == NULL) { assert(cross_check == NULL || cross_check == TypePtr::BOTTOM, "expected memory type must be wide"); return TypePtr::BOTTOM; // touches lots of memory --- 712,722 ---- const TypePtr* MemNode::calculate_adr_type(const Type* t, const TypePtr* cross_check) { if (t == Type::TOP) return NULL; // does not touch memory any more? #ifdef PRODUCT cross_check = NULL; #else ! if (!VerifyAliases || VMError::is_error_reported() || Node::in_dump()) cross_check = NULL; #endif const TypePtr* tp = t->isa_ptr(); if (tp == NULL) { assert(cross_check == NULL || cross_check == TypePtr::BOTTOM, "expected memory type must be wide"); return TypePtr::BOTTOM; // touches lots of memory
*** 4384,4394 **** } // verify a narrow slice (either incoming or outgoing) static void verify_memory_slice(const MergeMemNode* m, int alias_idx, Node* n) { if (!VerifyAliases) return; // don't bother to verify unless requested ! if (is_error_reported()) return; // muzzle asserts when debugging an error if (Node::in_dump()) return; // muzzle asserts when printing assert(alias_idx >= Compile::AliasIdxRaw, "must not disturb base_memory or sentinel"); assert(n != NULL, ""); // Elide intervening MergeMem's while (n->is_MergeMem()) { --- 4385,4395 ---- } // verify a narrow slice (either incoming or outgoing) static void verify_memory_slice(const MergeMemNode* m, int alias_idx, Node* n) { if (!VerifyAliases) return; // don't bother to verify unless requested ! if (VMError::is_error_reported()) return; // muzzle asserts when debugging an error if (Node::in_dump()) return; // muzzle asserts when printing assert(alias_idx >= Compile::AliasIdxRaw, "must not disturb base_memory or sentinel"); assert(n != NULL, ""); // Elide intervening MergeMem's while (n->is_MergeMem()) {
*** 4445,4455 **** // AliasLevel == 0 if we are organizing the memory states manually. // See verify_memory_slice for comments on TypeRawPtr::BOTTOM. } else { // make sure the stored slice is sane #ifdef ASSERT ! if (is_error_reported() || Node::in_dump()) { } else if (might_be_same(n, base_memory())) { // Give it a pass: It is a mostly harmless repetition of the base. // This can arise normally from node subsumption during optimization. } else { verify_memory_slice(this, alias_idx, n); --- 4446,4456 ---- // AliasLevel == 0 if we are organizing the memory states manually. // See verify_memory_slice for comments on TypeRawPtr::BOTTOM. } else { // make sure the stored slice is sane #ifdef ASSERT ! if (VMError::is_error_reported() || Node::in_dump()) { } else if (might_be_same(n, base_memory())) { // Give it a pass: It is a mostly harmless repetition of the base. // This can arise normally from node subsumption during optimization. } else { verify_memory_slice(this, alias_idx, n);
< prev index next >