aspect UpdateRemoteAttributeCollectionsFrontend { protected void ASTNode.updateRemoteAttributeCollectionsBackend() { } protected void InterfaceDecl.updateRemoteAttributeCollectionsBackend() { super.updateRemoteAttributeCollectionsBackend(); ConstantPool cp = constantPool(); // force building of symbol table cp.addClass(constantPoolName()); cp.addClass("java/lang/Object"); for(int i = 0; i < getNumSuperInterfaceId(); i++) { cp.addClass(getSuperInterfaceId(i).type().constantPoolName()); } for(Iterator iter = bcFields().iterator(); iter.hasNext(); ) { FieldDeclaration field = (FieldDeclaration) iter.next(); cp.addUtf8(field.name()); cp.addUtf8(field.type().typeDescriptor()); field.attributes(); } for(Iterator iter = bcMethods().iterator(); iter.hasNext(); ) { Object obj = iter.next(); if(obj instanceof MethodDecl) { MethodDecl m = (MethodDecl) obj; cp.addUtf8(m.getIdDecl().getID()); // name() cp.addUtf8(m.descName()); m.attributes(); } } attributes(); } protected void ClassDecl.updateRemoteAttributeCollectionsBackend() { super.updateRemoteAttributeCollectionsBackend(); } protected void ClassInstanceDot.updateRemoteAttributeCollectionsBackend() { super.updateRemoteAttributeCollectionsBackend(); // touch accessorIndex go force creation of private constructorAccessor ClassInstanceExpr c = (ClassInstanceExpr)getRight(); if(c.decl().isPrivate() && c.type() != hostType()) { c.decl().accessorIndex(); } } protected void ClassInstanceExpr.updateRemoteAttributeCollectionsBackend() { super.updateRemoteAttributeCollectionsBackend(); // touch accessorIndex go force creation of private constructorAccessor if(decl().isPrivate() && type() != hostType()) { decl().accessorIndex(); } } }