comparison src/share/vm/opto/memnode.hpp @ 8116:6931f425c517

8007294: ReduceFieldZeroing doesn't check for dependent load and can lead to incorrect execution Summary: InitializeNode::can_capture_store() must check that the captured store doesn't overwrite a memory location that is loaded before the store. Reviewed-by: kvn
author roland
date Mon, 25 Feb 2013 14:13:04 +0100
parents b30b3c2a0cf2
children 6f3fd5150b67
comparison
equal deleted inserted replaced
8097:be1fbee20765 8116:6931f425c517
1070 bool stores_are_sane(PhaseTransform* phase); 1070 bool stores_are_sane(PhaseTransform* phase);
1071 #endif //ASSERT 1071 #endif //ASSERT
1072 1072
1073 // See if this store can be captured; return offset where it initializes. 1073 // See if this store can be captured; return offset where it initializes.
1074 // Return 0 if the store cannot be moved (any sort of problem). 1074 // Return 0 if the store cannot be moved (any sort of problem).
1075 intptr_t can_capture_store(StoreNode* st, PhaseTransform* phase); 1075 intptr_t can_capture_store(StoreNode* st, PhaseTransform* phase, bool can_reshape);
1076 1076
1077 // Capture another store; reformat it to write my internal raw memory. 1077 // Capture another store; reformat it to write my internal raw memory.
1078 // Return the captured copy, else NULL if there is some sort of problem. 1078 // Return the captured copy, else NULL if there is some sort of problem.
1079 Node* capture_store(StoreNode* st, intptr_t start, PhaseTransform* phase); 1079 Node* capture_store(StoreNode* st, intptr_t start, PhaseTransform* phase, bool can_reshape);
1080 1080
1081 // Find captured store which corresponds to the range [start..start+size). 1081 // Find captured store which corresponds to the range [start..start+size).
1082 // Return my own memory projection (meaning the initial zero bits) 1082 // Return my own memory projection (meaning the initial zero bits)
1083 // if there is no such store. Return NULL if there is a problem. 1083 // if there is no such store. Return NULL if there is a problem.
1084 Node* find_captured_store(intptr_t start, int size_in_bytes, PhaseTransform* phase); 1084 Node* find_captured_store(intptr_t start, int size_in_bytes, PhaseTransform* phase);