< prev index next >

src/hotspot/share/compiler/oopMap.cpp

Print this page

715     assert(pair->oopmap_offset() + nr_of_bytes <= set->nr_of_bytes(), "check size + size");
716   }
717 }
718 #endif
719 
720 ImmutableOopMapSet* ImmutableOopMapBuilder::generate_into(address buffer) {
721   DEBUG_ONLY(memset(&buffer[_required-8], 0xff, 8));
722 
723   _new_set = new (buffer) ImmutableOopMapSet(_set, _required);
724   fill(_new_set, _required);
725 
726   DEBUG_ONLY(verify(buffer, _required, _new_set));
727 
728   return _new_set;
729 }
730 
731 ImmutableOopMapSet* ImmutableOopMapBuilder::build() {
732   _required = heap_size();
733 
734   // We need to allocate a chunk big enough to hold the ImmutableOopMapSet and all of its ImmutableOopMaps
735   address buffer = (address) NEW_C_HEAP_ARRAY(unsigned char, _required, mtCode);
736   return generate_into(buffer);
737 }
738 
739 ImmutableOopMapSet* ImmutableOopMapSet::build_from(const OopMapSet* oopmap_set) {
740   ResourceMark mark;
741   ImmutableOopMapBuilder builder(oopmap_set);
742   return builder.build();
743 }
744 
745 
746 //------------------------------DerivedPointerTable---------------------------
747 
748 #if COMPILER2_OR_JVMCI
749 
750 class DerivedPointerTable::Entry : public CHeapObj<mtCompiler> {
751   oop* _location;   // Location of derived pointer, also pointing to base
752   intptr_t _offset; // Offset from base pointer
753   Entry* volatile _next;
754 
755   static Entry* volatile* next_ptr(Entry& entry) { return &entry._next; }

715     assert(pair->oopmap_offset() + nr_of_bytes <= set->nr_of_bytes(), "check size + size");
716   }
717 }
718 #endif
719 
720 ImmutableOopMapSet* ImmutableOopMapBuilder::generate_into(address buffer) {
721   DEBUG_ONLY(memset(&buffer[_required-8], 0xff, 8));
722 
723   _new_set = new (buffer) ImmutableOopMapSet(_set, _required);
724   fill(_new_set, _required);
725 
726   DEBUG_ONLY(verify(buffer, _required, _new_set));
727 
728   return _new_set;
729 }
730 
731 ImmutableOopMapSet* ImmutableOopMapBuilder::build() {
732   _required = heap_size();
733 
734   // We need to allocate a chunk big enough to hold the ImmutableOopMapSet and all of its ImmutableOopMaps
735   address buffer = NEW_C_HEAP_ARRAY(unsigned char, _required, mtCode);
736   return generate_into(buffer);
737 }
738 
739 ImmutableOopMapSet* ImmutableOopMapSet::build_from(const OopMapSet* oopmap_set) {
740   ResourceMark mark;
741   ImmutableOopMapBuilder builder(oopmap_set);
742   return builder.build();
743 }
744 
745 
746 //------------------------------DerivedPointerTable---------------------------
747 
748 #if COMPILER2_OR_JVMCI
749 
750 class DerivedPointerTable::Entry : public CHeapObj<mtCompiler> {
751   oop* _location;   // Location of derived pointer, also pointing to base
752   intptr_t _offset; // Offset from base pointer
753   Entry* volatile _next;
754 
755   static Entry* volatile* next_ptr(Entry& entry) { return &entry._next; }
< prev index next >