diff options
author | Ivan Dubrov <dubrov.ivan@gmail.com> | 2014-06-27 15:35:21 -0700 |
---|---|---|
committer | Ivan Dubrov <dubrov.ivan@gmail.com> | 2014-06-27 15:35:21 -0700 |
commit | d30fd49eae164275af27409cea684d9eb706b206 (patch) | |
tree | 3989376c613925c71f53922484496e6465f629de | |
parent | 311b8a35bb9e7237719b397377c7d37ac1f51a33 (diff) | |
parent | cb42b6bda819e472a8c345a5310ed021e52a6ea7 (diff) | |
download | dcevm-d30fd49eae164275af27409cea684d9eb706b206.tar.gz dcevm-d30fd49eae164275af27409cea684d9eb706b206.zip |
Merge pull request #35 from skybber/master
deopt-incl flag propagated only if in superclass is set to true
-rw-r--r-- | hotspot/.hg/patches/full-jdk7u45-deopt-cp.patch | 21 | ||||
-rw-r--r-- | hotspot/.hg/patches/full-jdk7u51-deopt-cp.patch | 21 |
2 files changed, 22 insertions, 20 deletions
diff --git a/hotspot/.hg/patches/full-jdk7u45-deopt-cp.patch b/hotspot/.hg/patches/full-jdk7u45-deopt-cp.patch index ae6afb1c..eb770b6b 100644 --- a/hotspot/.hg/patches/full-jdk7u45-deopt-cp.patch +++ b/hotspot/.hg/patches/full-jdk7u45-deopt-cp.patch @@ -135,22 +135,23 @@ index 8d76afb..d2d1acc 100644 bool has_dependencies() { return dependencies_size() != 0; } diff --git a/src/share/vm/oops/klass.cpp b/src/share/vm/oops/klass.cpp -index 767588c..6a195ab 100644 +index 767588c..59d9448 100644 --- a/src/share/vm/oops/klass.cpp +++ b/src/share/vm/oops/klass.cpp -@@ -57,7 +57,10 @@ +@@ -57,7 +57,11 @@ void Klass::update_supers_to_newest_version() { - if (super() != NULL) set_super(super()->klass_part()->newest_version()); + if (super() != NULL) { + set_super(super()->klass_part()->newest_version()); -+ set_deoptimization_incl(super()->klass_part()->is_deoptimization_incl()); ++ if (super()->klass_part()->is_deoptimization_incl()) ++ set_deoptimization_incl(true); + } for (uint i=0; i<primary_super_limit(); i++) { klassOop cur = _primary_supers[i]; -@@ -183,6 +186,7 @@ +@@ -183,6 +187,7 @@ kl->set_redefinition_flags(Klass::NoRedefinition); kl->set_redefining(false); @@ -158,21 +159,21 @@ index 767588c..6a195ab 100644 kl->set_new_version(NULL); kl->set_old_version(NULL); kl->set_redefinition_index(-1); -@@ -256,6 +260,9 @@ +@@ -256,6 +261,8 @@ if (FastSuperclassLimit == 0) { // None of the other machinery matters. set_super(k); -+ if (k != NULL) { -+ set_deoptimization_incl(k->klass_part()->is_deoptimization_incl()); -+ } ++ if (k != NULL && k->klass_part()->is_deoptimization_incl()) ++ set_deoptimization_incl(true); return; } if (k == NULL) { -@@ -267,6 +274,7 @@ +@@ -267,6 +274,8 @@ "initialize this only once to a non-trivial value"); set_super(k); Klass* sup = k->klass_part(); -+ set_deoptimization_incl(sup->is_deoptimization_incl()); ++ if (sup->is_deoptimization_incl()) ++ set_deoptimization_incl(true); int sup_depth = sup->super_depth(); juint my_depth = MIN2(sup_depth + 1, (int)primary_super_limit()); if (!can_be_primary_super_slow()) diff --git a/hotspot/.hg/patches/full-jdk7u51-deopt-cp.patch b/hotspot/.hg/patches/full-jdk7u51-deopt-cp.patch index ae6afb1c..eb770b6b 100644 --- a/hotspot/.hg/patches/full-jdk7u51-deopt-cp.patch +++ b/hotspot/.hg/patches/full-jdk7u51-deopt-cp.patch @@ -135,22 +135,23 @@ index 8d76afb..d2d1acc 100644 bool has_dependencies() { return dependencies_size() != 0; } diff --git a/src/share/vm/oops/klass.cpp b/src/share/vm/oops/klass.cpp -index 767588c..6a195ab 100644 +index 767588c..59d9448 100644 --- a/src/share/vm/oops/klass.cpp +++ b/src/share/vm/oops/klass.cpp -@@ -57,7 +57,10 @@ +@@ -57,7 +57,11 @@ void Klass::update_supers_to_newest_version() { - if (super() != NULL) set_super(super()->klass_part()->newest_version()); + if (super() != NULL) { + set_super(super()->klass_part()->newest_version()); -+ set_deoptimization_incl(super()->klass_part()->is_deoptimization_incl()); ++ if (super()->klass_part()->is_deoptimization_incl()) ++ set_deoptimization_incl(true); + } for (uint i=0; i<primary_super_limit(); i++) { klassOop cur = _primary_supers[i]; -@@ -183,6 +186,7 @@ +@@ -183,6 +187,7 @@ kl->set_redefinition_flags(Klass::NoRedefinition); kl->set_redefining(false); @@ -158,21 +159,21 @@ index 767588c..6a195ab 100644 kl->set_new_version(NULL); kl->set_old_version(NULL); kl->set_redefinition_index(-1); -@@ -256,6 +260,9 @@ +@@ -256,6 +261,8 @@ if (FastSuperclassLimit == 0) { // None of the other machinery matters. set_super(k); -+ if (k != NULL) { -+ set_deoptimization_incl(k->klass_part()->is_deoptimization_incl()); -+ } ++ if (k != NULL && k->klass_part()->is_deoptimization_incl()) ++ set_deoptimization_incl(true); return; } if (k == NULL) { -@@ -267,6 +274,7 @@ +@@ -267,6 +274,8 @@ "initialize this only once to a non-trivial value"); set_super(k); Klass* sup = k->klass_part(); -+ set_deoptimization_incl(sup->is_deoptimization_incl()); ++ if (sup->is_deoptimization_incl()) ++ set_deoptimization_incl(true); int sup_depth = sup->super_depth(); juint my_depth = MIN2(sup_depth + 1, (int)primary_super_limit()); if (!can_be_primary_super_slow()) |