mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 03:24:38 +02:00
8019247: SIGSEGV in compiled method c8e.e.t_.getArray(Ljava/lang/Class;)[Ljava/lang/Object
Undo recent changes (and add more comments) in Ideal_allocation(). Reviewed-by: roland
This commit is contained in:
parent
7936ee54bf
commit
fc1302ea95
1 changed files with 8 additions and 3 deletions
|
@ -3332,9 +3332,14 @@ AllocateNode* AllocateNode::Ideal_allocation(Node* ptr, PhaseTransform* phase) {
|
||||||
if (ptr == NULL) { // reduce dumb test in callers
|
if (ptr == NULL) { // reduce dumb test in callers
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ptr = ptr->uncast(); // strip a raw-to-oop cast
|
if (ptr->is_CheckCastPP()) { // strip only one raw-to-oop cast
|
||||||
if (ptr == NULL) return NULL;
|
ptr = ptr->in(1);
|
||||||
|
if (ptr == NULL) return NULL;
|
||||||
|
}
|
||||||
|
// Return NULL for allocations with several casts:
|
||||||
|
// j.l.reflect.Array.newInstance(jobject, jint)
|
||||||
|
// Object.clone()
|
||||||
|
// to keep more precise type from last cast.
|
||||||
if (ptr->is_Proj()) {
|
if (ptr->is_Proj()) {
|
||||||
Node* allo = ptr->in(0);
|
Node* allo = ptr->in(0);
|
||||||
if (allo != NULL && allo->is_Allocate()) {
|
if (allo != NULL && allo->is_Allocate()) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue