Mercurial > hg > truffle
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); |