hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
changeset 9997 b75b7939f448
parent 9995 290620c08233
child 10000 5bbb58b0dbb9
equal deleted inserted replaced
9996:3851e45f93e7 9997:b75b7939f448
   444   // * They should both be called without holding the Heap_lock.
   444   // * They should both be called without holding the Heap_lock.
   445   //
   445   //
   446   // * All allocation requests for new TLABs should go to
   446   // * All allocation requests for new TLABs should go to
   447   //   allocate_new_tlab().
   447   //   allocate_new_tlab().
   448   //
   448   //
   449   // * All non-TLAB allocation requests should go to mem_allocate()
   449   // * All non-TLAB allocation requests should go to mem_allocate().
   450   //   and mem_allocate() should never be called with is_tlab == true.
       
   451   //
   450   //
   452   // * If either call cannot satisfy the allocation request using the
   451   // * If either call cannot satisfy the allocation request using the
   453   //   current allocating region, they will try to get a new one. If
   452   //   current allocating region, they will try to get a new one. If
   454   //   this fails, they will attempt to do an evacuation pause and
   453   //   this fails, they will attempt to do an evacuation pause and
   455   //   retry the allocation.
   454   //   retry the allocation.
   465   //   will satisfy them with a special path.
   464   //   will satisfy them with a special path.
   466 
   465 
   467   virtual HeapWord* allocate_new_tlab(size_t word_size);
   466   virtual HeapWord* allocate_new_tlab(size_t word_size);
   468 
   467 
   469   virtual HeapWord* mem_allocate(size_t word_size,
   468   virtual HeapWord* mem_allocate(size_t word_size,
   470                                  bool   is_noref,
       
   471                                  bool   is_tlab, /* expected to be false */
       
   472                                  bool*  gc_overhead_limit_was_exceeded);
   469                                  bool*  gc_overhead_limit_was_exceeded);
   473 
   470 
   474   // The following three methods take a gc_count_before_ret
   471   // The following three methods take a gc_count_before_ret
   475   // parameter which is used to return the GC count if the method
   472   // parameter which is used to return the GC count if the method
   476   // returns NULL. Given that we are required to read the GC count
   473   // returns NULL. Given that we are required to read the GC count
  1302     // At least until perm gen collection is also G1-ified, at
  1299     // At least until perm gen collection is also G1-ified, at
  1303     // which point this should return false.
  1300     // which point this should return false.
  1304     return true;
  1301     return true;
  1305   }
  1302   }
  1306 
  1303 
  1307   // The boundary between a "large" and "small" array of primitives, in
       
  1308   // words.
       
  1309   virtual size_t large_typearray_limit();
       
  1310 
       
  1311   // Returns "true" iff the given word_size is "very large".
  1304   // Returns "true" iff the given word_size is "very large".
  1312   static bool isHumongous(size_t word_size) {
  1305   static bool isHumongous(size_t word_size) {
  1313     // Note this has to be strictly greater-than as the TLABs
  1306     // Note this has to be strictly greater-than as the TLABs
  1314     // are capped at the humongous thresold and we want to
  1307     // are capped at the humongous thresold and we want to
  1315     // ensure that we don't try to allocate a TLAB as
  1308     // ensure that we don't try to allocate a TLAB as