169 // in the CodeCache they are defined virtual here) |
169 // in the CodeCache they are defined virtual here) |
170 public boolean isZombie() { return false; } |
170 public boolean isZombie() { return false; } |
171 public boolean isLockedByVM() { return false; } |
171 public boolean isLockedByVM() { return false; } |
172 |
172 |
173 /** OopMap for frame; can return null if none available */ |
173 /** OopMap for frame; can return null if none available */ |
174 public OopMapSet getOopMaps() { |
174 public ImmutableOopMapSet getOopMaps() { |
175 Address oopMapsAddr = oopMapsField.getValue(addr); |
175 Address oopMapsAddr = oopMapsField.getValue(addr); |
176 if (oopMapsAddr == null) { |
176 if (oopMapsAddr == null) { |
177 return null; |
177 return null; |
178 } |
178 } |
179 return new OopMapSet(oopMapsAddr); |
179 return new ImmutableOopMapSet(oopMapsAddr); |
180 } |
180 } |
181 // FIXME: not yet implementable |
181 // FIXME: not yet implementable |
182 // void set_oop_maps(OopMapSet* p); |
182 // void set_oop_maps(ImmutableOopMapSet* p); |
183 |
183 |
184 public OopMap getOopMapForReturnAddress(Address returnAddress, boolean debugging) { |
184 public ImmutableOopMap getOopMapForReturnAddress(Address returnAddress, boolean debugging) { |
185 Address pc = returnAddress; |
185 Address pc = returnAddress; |
186 if (Assert.ASSERTS_ENABLED) { |
186 if (Assert.ASSERTS_ENABLED) { |
187 Assert.that(getOopMaps() != null, "nope"); |
187 Assert.that(getOopMaps() != null, "nope"); |
188 } |
188 } |
189 return getOopMaps().findMapAtOffset(pc.minus(codeBegin()), debugging); |
189 return getOopMaps().findMapAtOffset(pc.minus(codeBegin()), debugging); |