Prepared by: | never on Tue Nov 30 11:47:18 PST 2010 |
---|---|
Workspace: | /export/ws/baseline |
Compare against: | ssh://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot |
Summary of changes: | 63 lines changed: 59 ins; 0 del; 4 mod; 4174 unchg |
Patch of changes: | 7002666.patch |
Author comments: |
7002666: eclipse CDT projects crash with compressed oops Reviewed-by: When emitting the code to zero a newly allocated object C2 attempts to identify space that's already been initialized or extra space that isn't actually part of an instance. The logic for this should only be executed for instances and never for arrays but the logic doesn't explicitly test for arrays. It's normally protected in the array case because the klass is precise and the value of layout_helper will never match zeroes_done since it's always negative for arrays. In this case the newArray is producing something that's typed as Object so the klass input of the allocation says Object and it mistakenly assumes the rest of the array doesn't need zeroing. The fix is to only execute this logic for AllocateNodes. Tested with eclipse and with new test case. |
Legend: |
Modified file Deleted file New file |
Cdiffs
Udiffs
Sdiffs
Frames
Old
New
Patch
Raw
src/share/vm/opto/memnode.cpp
6 lines changed: 2 ins; 0 del; 4 mod; 4174 unchg
------ ------ ------
------
---
New
Patch
Raw
test/compiler/7002666/Test7002666.java
57 lines changed: 57 ins; 0 del; 0 mod; 0 unchg
This code review page was prepared using /never/bin/webrev (vers 23.18-hg-never).