void setStaticFinalFields(Frame frame) { frame.fieldValues.forEach((mi, expr) -> { FieldDefinition fd = fields.get(mi); if(fd != null && fd.isStatic() && (fd.isFinal() || (fd.isPrivate() || fd.isPackagePrivate()) && initializedInCtor.contains(fd))) { values.put(mi, expr); } }); }
void mergeConstructor(MethodDefinition md, Frame frame, FrameContext fc) { ctorFields.put(new MemberInfo(md), frame.fieldValues); frame.fieldValues.forEach((mi, expr) -> { FieldDefinition fd = fields.get(mi); if (fd != null && !fd.isStatic() && (fd.isFinal() || (fd.isPrivate() || fd.isPackagePrivate()) && initializedInCtor.contains(fd))) { // TODO: better merging values.merge(mi, expr, (e1, e2) -> SourceAnnotator.makePhiNode(e1, e2, fc)); } }); }
private static boolean isSwitchMapField(final FieldReference field) { if (field == null) { return false; } final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field : field.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType()); }
private static boolean isSwitchMapField(final FieldReference field) { if (field == null) { return false; } final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field : field.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType()); }
private static boolean isSwitchMapField(final FieldReference field) { if (field == null) { return false; } final FieldDefinition definition = field instanceof FieldDefinition ? (FieldDefinition) field : field.resolve(); return definition != null && definition.isSynthetic() && definition.isStatic() && definition.isPrivate() && StringUtilities.startsWith(definition.getName(), "$SWITCH_TABLE$") && MetadataResolver.areEquivalent(BuiltinTypes.Integer.makeArrayType(), definition.getFieldType()); }
private FieldDefinition getField(Expression expr, MethodDefinition md) { if (!md.isStatic() && expr.getCode() == AstCode.PutField) { FieldDefinition fd = ((FieldReference) expr.getOperand()).resolve(); if (fd != null && !fd.isSynthetic() && (fd.isPrivate() || fd.isPackagePrivate() || fd.isProtected())) { if (md.isProtected() && fd.isProtected()) return null; Expression self = Exprs.getChild(expr, 0); if (!Exprs.isThis(self)) return null; return fd; } } if (expr.getCode() == AstCode.PutStatic) { FieldDefinition fd = ((FieldReference) expr.getOperand()).resolve(); if (fd != null && !fd.isSynthetic() && (fd.isPrivate() || fd.isPackagePrivate())) { return fd; } } return null; }
if(fieldRecord != null && (td.isPublic() || td.isProtected()) && (fd.isPrivate() || fd.isPackagePrivate())) { MethodLocation expose = fieldRecord.expose; if(fieldRecord.mutable && expose != null && (expose.md.isPublic() || expose.md.isProtected())) {