Package org.openquark.cal.internal.serialization.RecordInputStream

Examples of org.openquark.cal.internal.serialization.RecordInputStream.RecordHeaderInfo


     * @param msgLogger the logger to which to log deserialization messages.
     * @return a Scope instance.
     * @throws IOException
     */
    static final Scope load (RecordInputStream s, ModuleName moduleName, CompilerMessageLogger msgLogger) throws IOException {
        RecordHeaderInfo rhi = s.findRecord(ModuleSerializationTags.SCOPE);
        if (rhi == null) {
            throw new IOException ("Unable to find Scope record header.");
        }
        DeserializationHelper.checkSerializationSchema(rhi.getSchema(), serializationSchema, moduleName, "Scope", msgLogger);
       
        byte ordinalValue = s.readByte();
        s.skipRestOfRecord();
       
        switch (ordinalValue)
View Full Code Here


     * @throws IOException
     */
    static final ForeignFunctionInfo load (final RecordInputStream s, final ModuleName moduleName, final ClassLoader foreignClassLoader, final CompilerMessageLogger msgLogger) throws IOException {
       
        // Load the record header and determine which actual class we are loading.
        final RecordHeaderInfo rhi = s.findRecord(SERIALIZATION_RECORD_TAGS);
        if (rhi == null) {
            throw new IOException ("Unable to find record header for ForeignFunctionInfo.");
        }
      
        switch(rhi.getRecordTag()) {
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_INVOCATION:
            {
                return Invocation.loadInvocation(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
   
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_CAST:
            {
                return Cast.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_INSTANCE_OF:
            {
                return InstanceOf.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_NULL_LITERAL:
            {
                return NullLiteral.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_NULL_CHECK:
            {
                return NullCheck.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_NEW_ARRAY:
            {
                return NewArray.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_LENGTH_ARRAY:
            {
                return LengthArray.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_SUBSCRIPT_ARRAY:
            {
                return SubscriptArray.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_UPDATE_ARRAY:
            {
                return UpdateArray.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }           
   
            case ModuleSerializationTags.FOREIGN_FUNCTION_INFO_CLASS_LITERAL:
            {
                return ClassLiteral.load(s, rhi.getSchema(), moduleName, foreignClassLoader, msgLogger);
            }
           
            default:
            {
                throw new IOException("Unexpected record tag " + rhi.getRecordTag() + " encountered loading ForeignFunctionInfo.");
            }
        }   
    }
View Full Code Here

         * @return an instance of Kind
         * @throws IOException
         */
        static final JavaKind load (final RecordInputStream s, final ModuleName moduleName, final CompilerMessageLogger msgLogger) throws IOException {
            // Look for Record header.
            final RecordHeaderInfo rhi = s.findRecord(ModuleSerializationTags.FOREIGN_FUNCTION_INFO_JAVA_KIND);
            if(rhi == null) {
               throw new IOException("Unable to find ForeignFunctionInfo.JavaKind record header.");
            }
            DeserializationHelper.checkSerializationSchema(rhi.getSchema(), serializationSchema, moduleName, "ForeignFunctionInfo.JavaKind", msgLogger);

            final byte ordinalValue = s.readByte();
            s.skipRestOfRecord();

            switch (ordinalValue) {
View Full Code Here

     * @return an instance of ClassMethod.
     * @throws IOException
     */
    static final ClassMethod load (RecordInputStream s, ModuleTypeInfo mti, CompilerMessageLogger msgLogger) throws IOException {
        // Look for Record header.
        RecordHeaderInfo rhi = s.findRecord(ModuleSerializationTags.CLASS_METHOD);
        if(rhi == null) {
           throw new IOException("Unable to find ClassMethod record header.");
        }
        DeserializationHelper.checkSerializationSchema(rhi.getSchema(), serializationSchema, mti.getModuleName(), "ClassMethod", msgLogger);

        ClassMethod cm = new ClassMethod();
        try {
            cm.read(s, mti, msgLogger);
        } catch (IOException e) {
View Full Code Here

     * @param visitedTypeExpr
     * @param msgLogger the logger to which to log deserialization messages.
     * @return an instance of RecordVar.
     */
    static RecordVar load (RecordInputStream s, ModuleTypeInfo mti, Map<Short, TypeExpr> visitedTypeExpr, Map<Short, RecordVar> visitedRecordVar, CompilerMessageLogger msgLogger) throws IOException {
        RecordHeaderInfo rhi = s.findRecord(RECORD_VAR_RECORD_TAGS);
        if (rhi == null) {
            throw new IOException("Unable to find RecordVar record header.");
        }
       
        switch(rhi.getRecordTag()) {
           
            case ModuleSerializationTags.ALREADY_VISITED_RECORD_VAR:
            {
                DeserializationHelper.checkSerializationSchema(rhi.getSchema(), alreadyVisitedRecordVarSerializationSchema, mti.getModuleName(), "RecordVar", msgLogger);

                // Read the key and do the lookup.
                short id = s.readShortCompressed();
                RecordVar recordVar = visitedRecordVar.get(new Short(id));
                if (recordVar == null) {
                    throw new IOException ("Unable to resolve previously encountered RecordVar instance in RecordVar.");
                }
                s.skipRestOfRecord();
                return recordVar;
            }
       
            case ModuleSerializationTags.RECORD_VAR:
            {
                DeserializationHelper.checkSerializationSchema(rhi.getSchema(), serializationSchema, mti.getModuleName(), "RecordVar", msgLogger);
       
                byte flags = s.readByte();
               
                // Short-circuit for the special NO_FIELDS case
                if((flags & (HAS_LACKS_FIELD_CONSTRAINTS | HAS_TYPE_CLASS_CONSTRAINTS)) == 0) {
                    s.skipRestOfRecord();
                    visitedRecordVar.put(new Short((short)visitedRecordVar.size()), NO_FIELDS);
                    return NO_FIELDS;
                }
               
                RecordVar rv = new RecordVar();
                visitedRecordVar.put(new Short((short)visitedRecordVar.size()), rv);
               
                RecordType instance = null;
                if ((flags & HAS_NON_NULL_INSTANCE) > 0) {
                    instance = (RecordType)TypeExpr.load(s, mti, visitedTypeExpr, visitedRecordVar, msgLogger);
                }
               
                Set<FieldName> lacksFieldSet = null;
                if ((flags & HAS_LACKS_FIELD_CONSTRAINTS) > 0) {
                    int nLacksFields = s.readShortCompressed();
                    if (nLacksFields > 0) {
                        lacksFieldSet = new HashSet<FieldName>();
                        for (int i = 0; i < nLacksFields; ++i) {
                            FieldName fn = FieldNameIO.load(s, mti.getModuleName(), msgLogger);
                            lacksFieldSet.add(fn);
                        }
                    } else {
                        lacksFieldSet = NO_LACKS_FIELDS;
                    }
                }
               
                SortedSet<TypeClass> typeClassConstraintSet = TypeClass.NO_CLASS_CONSTRAINTS;
                if((flags & HAS_TYPE_CLASS_CONSTRAINTS) > 0) {
                    int nTC = s.readShortCompressed();
                    if (nTC > 0) {
                        typeClassConstraintSet = TypeClass.makeNewClassConstraintSet();
                        for (int i = 0; i < nTC; ++i) {
                            QualifiedName qn = s.readQualifiedName();
                            TypeClass tc = mti.getReachableTypeClass(qn);
                            // This could be a type from a non-direct dependee module.
                            if (tc == null) {
                                IOException ioe = new IOException("Unable to resolve TypeClass " + qn + " while loading RecordVar.");
                                throw ioe;
                            }
                            typeClassConstraintSet.add(tc);
                        }
                    }
                }
               
                rv.lacksFieldsSet = lacksFieldSet;
                rv.typeClassConstraintSet = typeClassConstraintSet;
               
                if (instance != null) {
                    rv.setInstance(instance);
                }
               
                rv.preferredName = s.readUTF();                                                            
               
                s.skipRestOfRecord();
               
                return rv;
            }
           
            default:
            {
                throw new IOException("Unexpected record tag " + rhi.getRecordTag() + " found when looking for RecordVar.");
            }
        }
       
    }
View Full Code Here

     * @param msgLogger the logger to which to log deserialization messages.
     * @throws IOException
     */
    private final void read (RecordInputStream s, ModuleTypeInfo mti, CompilerMessageLogger msgLogger) throws IOException {
        // Look for Record header.
        RecordHeaderInfo rhi = s.findRecord(ModuleSerializationTags.FUNCTION_ENTITY);
        if (rhi == null) {
            throw new IOException("Unable to find Function record header.");
        }
        DeserializationHelper.checkSerializationSchema(rhi.getSchema(), serializationSchema, mti.getModuleName(), "Function", msgLogger);
       
        // Read the EnvironmentEntity content
        super.readContent(s, mti, msgLogger);
       
        nestingLevel = s.readShortCompressed();
View Full Code Here

     * @return an instance of ClassInstance.
     * @throws IOException
     */
    static final ClassInstance load (RecordInputStream s, ModuleTypeInfo mti, CompilerMessageLogger msgLogger) throws IOException {
        // Look for Record header.
        RecordHeaderInfo rhi = s.findRecord(ModuleSerializationTags.CLASS_INSTANCE);
        if (rhi == null) {
           throw new IOException("Unable to find ClassInstance record header.");
        }
        DeserializationHelper.checkSerializationSchema(rhi.getSchema(), serializationSchema, mti.getModuleName(), "ClassInstance", msgLogger);

        ModuleName moduleName = s.readModuleName();

        InstanceStyle instanceStyle = InstanceStyle.load(s, msgLogger);
       
View Full Code Here

TOP

Related Classes of org.openquark.cal.internal.serialization.RecordInputStream.RecordHeaderInfo

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.