Mercurial > hg > graal-compiler
comparison src/share/vm/oops/generateOopMap.cpp @ 3865:9f12ede5571a
Merge
author | jcoomes |
---|---|
date | Fri, 19 Aug 2011 14:08:18 -0700 |
parents | 6a991dcb52bb 52e4ba46751f |
children | 8150fa46d2ed |
comparison
equal
deleted
inserted
replaced
3858:de147f62e695 | 3865:9f12ede5571a |
---|---|
961 | 961 |
962 // Now that we have a bound on the depth of the monitor stack, we can | 962 // Now that we have a bound on the depth of the monitor stack, we can |
963 // initialize the CellTypeState-related information. | 963 // initialize the CellTypeState-related information. |
964 init_state(); | 964 init_state(); |
965 | 965 |
966 // We allocate space for all state-vectors for all basicblocks in one huge chuck. | 966 // We allocate space for all state-vectors for all basicblocks in one huge |
967 // Then in the next part of the code, we set a pointer in each _basic_block that | 967 // chunk. Then in the next part of the code, we set a pointer in each |
968 // points to each piece. | 968 // _basic_block that points to each piece. |
969 CellTypeState *basicBlockState = NEW_RESOURCE_ARRAY(CellTypeState, bbNo * _state_len); | 969 |
970 // The product of bbNo and _state_len can get large if there are lots of | |
971 // basic blocks and stack/locals/monitors. Need to check to make sure | |
972 // we don't overflow the capacity of a pointer. | |
973 if ((unsigned)bbNo > UINTPTR_MAX / sizeof(CellTypeState) / _state_len) { | |
974 report_error("The amount of memory required to analyze this method " | |
975 "exceeds addressable range"); | |
976 return; | |
977 } | |
978 | |
979 CellTypeState *basicBlockState = | |
980 NEW_RESOURCE_ARRAY(CellTypeState, bbNo * _state_len); | |
970 memset(basicBlockState, 0, bbNo * _state_len * sizeof(CellTypeState)); | 981 memset(basicBlockState, 0, bbNo * _state_len * sizeof(CellTypeState)); |
971 | 982 |
972 // Make a pass over the basicblocks and assign their state vectors. | 983 // Make a pass over the basicblocks and assign their state vectors. |
973 for (int blockNum=0; blockNum < bbNo; blockNum++) { | 984 for (int blockNum=0; blockNum < bbNo; blockNum++) { |
974 BasicBlock *bb = _basic_blocks + blockNum; | 985 BasicBlock *bb = _basic_blocks + blockNum; |