1385 bool stores_are_sane(PhaseTransform* phase); |
1385 bool stores_are_sane(PhaseTransform* phase); |
1386 #endif //ASSERT |
1386 #endif //ASSERT |
1387 |
1387 |
1388 // See if this store can be captured; return offset where it initializes. |
1388 // See if this store can be captured; return offset where it initializes. |
1389 // Return 0 if the store cannot be moved (any sort of problem). |
1389 // Return 0 if the store cannot be moved (any sort of problem). |
1390 intptr_t can_capture_store(StoreNode* st, PhaseTransform* phase, bool can_reshape); |
1390 intptr_t can_capture_store(StoreNode* st, PhaseGVN* phase, bool can_reshape); |
1391 |
1391 |
1392 // Capture another store; reformat it to write my internal raw memory. |
1392 // Capture another store; reformat it to write my internal raw memory. |
1393 // Return the captured copy, else NULL if there is some sort of problem. |
1393 // Return the captured copy, else NULL if there is some sort of problem. |
1394 Node* capture_store(StoreNode* st, intptr_t start, PhaseTransform* phase, bool can_reshape); |
1394 Node* capture_store(StoreNode* st, intptr_t start, PhaseGVN* phase, bool can_reshape); |
1395 |
1395 |
1396 // Find captured store which corresponds to the range [start..start+size). |
1396 // Find captured store which corresponds to the range [start..start+size). |
1397 // Return my own memory projection (meaning the initial zero bits) |
1397 // Return my own memory projection (meaning the initial zero bits) |
1398 // if there is no such store. Return NULL if there is a problem. |
1398 // if there is no such store. Return NULL if there is a problem. |
1399 Node* find_captured_store(intptr_t start, int size_in_bytes, PhaseTransform* phase); |
1399 Node* find_captured_store(intptr_t start, int size_in_bytes, PhaseTransform* phase); |
1412 |
1412 |
1413 static intptr_t get_store_offset(Node* st, PhaseTransform* phase); |
1413 static intptr_t get_store_offset(Node* st, PhaseTransform* phase); |
1414 |
1414 |
1415 Node* make_raw_address(intptr_t offset, PhaseTransform* phase); |
1415 Node* make_raw_address(intptr_t offset, PhaseTransform* phase); |
1416 |
1416 |
1417 bool detect_init_independence(Node* n, int& count); |
1417 bool detect_init_independence(Node* value, PhaseGVN* phase); |
1418 |
1418 |
1419 void coalesce_subword_stores(intptr_t header_size, Node* size_in_bytes, |
1419 void coalesce_subword_stores(intptr_t header_size, Node* size_in_bytes, |
1420 PhaseGVN* phase); |
1420 PhaseGVN* phase); |
1421 |
1421 |
1422 intptr_t find_next_fullword_store(uint i, PhaseGVN* phase); |
1422 intptr_t find_next_fullword_store(uint i, PhaseGVN* phase); |