8024070: C2 needs some form of type speculation

Record unused type profile information with type system, propagate and use it.

Reviewed-by: kvn, twisti
This commit is contained in:
Roland Westrelin 2013-10-23 12:40:23 +02:00
parent ceb177b16f
commit 1b5bd82335
22 changed files with 1429 additions and 144 deletions

View file

@ -100,6 +100,10 @@ public:
return valid_ciklass(type(i));
}
bool maybe_null(int i) const {
return was_null_seen(type(i));
}
#ifndef PRODUCT
void print_data_on(outputStream* st) const;
#endif
@ -113,6 +117,10 @@ public:
return valid_ciklass(type());
}
bool maybe_null() const {
return was_null_seen(type());
}
#ifndef PRODUCT
void print_data_on(outputStream* st) const;
#endif
@ -154,6 +162,14 @@ public:
return ret()->valid_type();
}
bool argument_maybe_null(int i) const {
return args()->maybe_null(i);
}
bool return_maybe_null() const {
return ret()->maybe_null();
}
#ifndef PRODUCT
void print_data_on(outputStream* st) const;
#endif
@ -260,6 +276,14 @@ public:
return ret()->valid_type();
}
bool argument_maybe_null(int i) const {
return args()->maybe_null(i);
}
bool return_maybe_null() const {
return ret()->maybe_null();
}
#ifndef PRODUCT
void print_data_on(outputStream* st) const;
#endif
@ -305,6 +329,10 @@ public:
return parameters()->valid_type(i);
}
bool parameter_maybe_null(int i) const {
return parameters()->maybe_null(i);
}
#ifndef PRODUCT
void print_data_on(outputStream* st) const;
#endif