private void processAddObjectWorklist() { while (!addObjectWorklist.isEmpty()) { AddObjectData data = addObjectWorklist.pop(); addObject(data.original, data.immutableFromParent, data.reason); } }
private void addConstantToHeap(Constant constant) { Object obj = SubstrateObjectConstant.asObject(constant); if (!imageHeap.getMetaAccess().lookupJavaType(obj.getClass()).getWrapped().isInstantiated()) { throw shouldNotReachHere("Non-instantiated type referenced by a compiled method: " + obj.getClass().getName()); } imageHeap.addObject(obj, false, constantReasons.get(constant)); }
private void addStaticFields() { addObject(StaticFieldsSupport.getStaticObjectFields(), false, "staticObjectFields"); addObject(StaticFieldsSupport.getStaticPrimitiveFields(), false, "staticPrimitiveFields"); /* * We only have empty holder arrays for the static fields, so we need to add static object * fields manually. */ for (HostedField field : getUniverse().getFields()) { if (Modifier.isStatic(field.getModifiers()) && field.hasLocation() && field.getType().getStorageKind() == JavaKind.Object) { assert field.isWritten() || MaterializedConstantFields.singleton().contains(field.wrapped); addObject(readObjectField(field, null), false, field); } } }
@SuppressWarnings("try") public void addInitialObjects() { addObjectsPhase.allow(); internStringsPhase.allow(); addObject(StaticFieldsSupport.getStaticPrimitiveFields(), false, "primitive static fields"); addStaticFields(); }