diff --git a/src/hotspot/share/gc/parallel/psCardTable.cpp b/src/hotspot/share/gc/parallel/psCardTable.cpp
index 4d63cdb9a3f3a..06fd02b0da81e 100644
--- a/src/hotspot/share/gc/parallel/psCardTable.cpp
+++ b/src/hotspot/share/gc/parallel/psCardTable.cpp
@@ -95,29 +95,6 @@ class CheckForUnmarkedObjects : public ObjectClosure {
   }
 };
 
-// Checks for precise marking of oops as newgen.
-class CheckForPreciseMarks : public BasicOopIterateClosure {
- private:
-  PSYoungGen*  _young_gen;
-  PSCardTable* _card_table;
-
- protected:
-  template <class T> void do_oop_work(T* p) {
-    oop obj = RawAccess<IS_NOT_NULL>::oop_load(p);
-    if (_young_gen->is_in_reserved(obj)) {
-      assert(_card_table->addr_is_marked_precise(p), "Found unmarked precise oop");
-      _card_table->set_card_newgen(p);
-    }
-  }
-
- public:
-  CheckForPreciseMarks(PSYoungGen* young_gen, PSCardTable* card_table) :
-    _young_gen(young_gen), _card_table(card_table) { }
-
-  virtual void do_oop(oop* p)       { CheckForPreciseMarks::do_oop_work(p); }
-  virtual void do_oop(narrowOop* p) { CheckForPreciseMarks::do_oop_work(p); }
-};
-
 static void prefetch_write(void *p) {
   if (PrefetchScanIntervalInBytes >= 0) {
     Prefetch::write(p, PrefetchScanIntervalInBytes);
@@ -410,29 +387,6 @@ void PSCardTable::verify_all_young_refs_imprecise() {
   old_gen->object_iterate(&check);
 }
 
-// This should be called immediately after a scavenge, before mutators resume.
-void PSCardTable::verify_all_young_refs_precise() {
-  ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
-  PSOldGen* old_gen = heap->old_gen();
-
-  CheckForPreciseMarks check(heap->young_gen(), this);
-
-  old_gen->oop_iterate(&check);
-
-  verify_all_young_refs_precise_helper(old_gen->object_space()->used_region());
-}
-
-void PSCardTable::verify_all_young_refs_precise_helper(MemRegion mr) {
-  CardValue* bot = byte_for(mr.start());
-  CardValue* top = byte_for(mr.end());
-  while (bot <= top) {
-    assert(*bot == clean_card || *bot == verify_card, "Found unwanted or unknown card mark");
-    if (*bot == verify_card)
-      *bot = youngergen_card;
-    bot++;
-  }
-}
-
 bool PSCardTable::addr_is_marked_imprecise(void *addr) {
   CardValue* p = byte_for(addr);
   CardValue val = *p;
@@ -451,28 +405,6 @@ bool PSCardTable::addr_is_marked_imprecise(void *addr) {
   return false;
 }
 
-// Also includes verify_card
-bool PSCardTable::addr_is_marked_precise(void *addr) {
-  CardValue* p = byte_for(addr);
-  CardValue val = *p;
-
-  if (card_is_newgen(val))
-    return true;
-
-  if (card_is_verify(val))
-    return true;
-
-  if (card_is_clean(val))
-    return false;
-
-  if (card_is_dirty(val))
-    return false;
-
-  assert(false, "Found unhandled card mark type");
-
-  return false;
-}
-
 bool PSCardTable::is_in_young(const void* p) const {
   return ParallelScavengeHeap::heap()->is_in_young(p);
 }
diff --git a/src/hotspot/share/gc/parallel/psCardTable.hpp b/src/hotspot/share/gc/parallel/psCardTable.hpp
index b0634d5c0b084..b34d5961d6cae 100644
--- a/src/hotspot/share/gc/parallel/psCardTable.hpp
+++ b/src/hotspot/share/gc/parallel/psCardTable.hpp
@@ -63,8 +63,6 @@ class PSCardTable: public CardTable {
                      HeapWord* const start,
                      HeapWord* const end);
 
-  void verify_all_young_refs_precise_helper(MemRegion mr);
-
   enum ExtendedCardValue {
     youngergen_card   = CT_MR_BS_last_reserved + 1,
     verify_card       = CT_MR_BS_last_reserved + 5
@@ -93,7 +91,6 @@ class PSCardTable: public CardTable {
                                   uint n_stripes);
 
   bool addr_is_marked_imprecise(void *addr);
-  bool addr_is_marked_precise(void *addr);
 
   void set_card_newgen(void* addr)   { CardValue* p = byte_for(addr); *p = verify_card; }
 
@@ -120,7 +117,6 @@ class PSCardTable: public CardTable {
 
   // Verification
   void verify_all_young_refs_imprecise();
-  void verify_all_young_refs_precise();
 };
 
 #endif // SHARE_GC_PARALLEL_PSCARDTABLE_HPP
diff --git a/src/hotspot/share/gc/parallel/psScavenge.cpp b/src/hotspot/share/gc/parallel/psScavenge.cpp
index 5354d9257b9fe..2f114e1e2cecc 100644
--- a/src/hotspot/share/gc/parallel/psScavenge.cpp
+++ b/src/hotspot/share/gc/parallel/psScavenge.cpp
@@ -643,11 +643,7 @@ bool PSScavenge::invoke_no_policy() {
       old_gen->verify_object_start_array();
     }
 
-    // Verify all old -> young cards are now precise
     if (VerifyRememberedSets) {
-      // Precise verification will give false positives. Until this is fixed,
-      // use imprecise verification.
-      // heap->card_table()->verify_all_young_refs_precise();
       heap->card_table()->verify_all_young_refs_imprecise();
     }