Search in sources :

Example 6 with DumpException

use of php.runtime.loader.dump.io.DumpException in project jphp by jphp-compiler.

the class ClosureDumper method save.

@Override
public void save(ClosureEntity entity, OutputStream output) throws IOException {
    if (!entity.isLoaded())
        throw new DumpException("Closure not loaded");
    DumpOutputStream data = new DumpOutputStream(output);
    data.writeName(entity.getInternalName());
    data.writeBoolean(entity.isReturnReference());
    methodDumper.save(entity.methodMagicInvoke, output);
    data.writeInt(entity.parameters == null ? 0 : entity.parameters.length);
    if (entity.parameters != null)
        for (ParameterEntity param : entity.parameters) {
            parameterDumper.save(param, output);
        }
    data.writeInt(entity.uses == null ? 0 : entity.uses.length);
    if (entity.uses != null)
        for (ParameterEntity param : entity.uses) {
            parameterDumper.save(param, output);
        }
    if (includeData) {
        data.writeRawData(entity.getData(), Integer.MAX_VALUE);
    } else {
        data.writeRawData(null);
    }
}
Also used : ParameterEntity(php.runtime.reflection.ParameterEntity) DumpException(php.runtime.loader.dump.io.DumpException) DumpOutputStream(php.runtime.loader.dump.io.DumpOutputStream)

Example 7 with DumpException

use of php.runtime.loader.dump.io.DumpException in project jphp by jphp-compiler.

the class FunctionDumper method load.

@Override
public FunctionEntity load(InputStream input) throws IOException {
    DumpInputStream data = new DumpInputStream(input);
    FunctionEntity entity = new FunctionEntity(context);
    entity.setStatic(data.readBoolean());
    entity.setName(data.readName());
    entity.setInternalName(data.readName());
    entity.setReturnReference(data.readBoolean());
    entity.setUsesStackTrace(data.readBoolean());
    entity.setImmutable(data.readBoolean());
    entity.setResult(data.readMemory());
    entity.setEmpty(data.readBoolean());
    entity.setTrace(data.readTrace(context));
    int paramCount = data.readInt();
    if (paramCount < 0)
        throw new DumpException("Invalid param count");
    entity.setParameters(new ParameterEntity[paramCount]);
    for (int i = 0; i < paramCount; i++) {
        ParameterEntity param = parameterDumper.load(input);
        param.setTrace(entity.getTrace());
        entity.getParameters()[i] = param;
    }
    entity.setData(data.readRawData(Integer.MAX_VALUE));
    data.readRawData();
    return entity;
}
Also used : DumpInputStream(php.runtime.loader.dump.io.DumpInputStream) FunctionEntity(php.runtime.reflection.FunctionEntity) ParameterEntity(php.runtime.reflection.ParameterEntity) DumpException(php.runtime.loader.dump.io.DumpException)

Example 8 with DumpException

use of php.runtime.loader.dump.io.DumpException in project jphp by jphp-compiler.

the class ModuleDumper method load.

@Override
public ModuleEntity load(InputStream input) throws IOException {
    DumpInputStream data = new DumpInputStream(input);
    int STAMP = data.readInt();
    if (STAMP != DUMP_STAMP)
        throw new DumpException("Invalid file format");
    int VERSION = data.readInt();
    if (VERSION != DUMP_VERSION)
        throw new DumpException("Invalid dump version - " + VERSION + ", only " + DUMP_VERSION);
    // legacy
    data.readLangMode();
    ModuleEntity entity = new ModuleEntity(context);
    entity.setName(data.readName());
    entity.setInternalName(data.readName());
    entity.setTrace(data.readTrace(context));
    // constants
    int count = data.readInt();
    for (int i = 0; i < count; i++) {
        ConstantEntity el = constantDumper.load(input);
        el.setModule(entity);
        entity.addConstant(el);
    }
    // closures
    count = data.readInt();
    for (int i = 0; i < count; i++) {
        ClosureEntity el = closureDumper.load(input);
        el.setModule(entity);
        entity.addClosure(el);
    }
    count = data.readInt();
    for (int i = 0; i < count; i++) {
        GeneratorEntity el = generatorDumper.load(input);
        el.setModule(entity);
        entity.addGenerator(el);
    }
    // functions
    count = data.readInt();
    for (int i = 0; i < count; i++) {
        FunctionEntity el = functionDumper.load(input);
        el.setModule(entity);
        entity.addFunction(el);
    }
    // classes
    count = data.readInt();
    ClassDumper classDumper = new ClassDumper(context, entity, env, debugInformation);
    for (int i = 0; i < count; i++) {
        ClassEntity el = classDumper.load(input);
        el.setModule(entity);
        entity.addClass(el);
    }
    // byte code
    entity.setData(data.readRawData(Integer.MAX_VALUE));
    data.readRawData(1024 * 1024 * 5);
    return entity;
}
Also used : ClassEntity(php.runtime.reflection.ClassEntity) GeneratorEntity(php.runtime.reflection.helper.GeneratorEntity) DumpInputStream(php.runtime.loader.dump.io.DumpInputStream) FunctionEntity(php.runtime.reflection.FunctionEntity) ClosureEntity(php.runtime.reflection.helper.ClosureEntity) ModuleEntity(php.runtime.reflection.ModuleEntity) DumpException(php.runtime.loader.dump.io.DumpException) ConstantEntity(php.runtime.reflection.ConstantEntity)

Aggregations

DumpException (php.runtime.loader.dump.io.DumpException)8 DumpInputStream (php.runtime.loader.dump.io.DumpInputStream)5 ParameterEntity (php.runtime.reflection.ParameterEntity)5 DumpOutputStream (php.runtime.loader.dump.io.DumpOutputStream)3 FunctionEntity (php.runtime.reflection.FunctionEntity)3 ClosureEntity (php.runtime.reflection.helper.ClosureEntity)3 GeneratorEntity (php.runtime.reflection.helper.GeneratorEntity)3 ClassEntity (php.runtime.reflection.ClassEntity)2 ConstantEntity (php.runtime.reflection.ConstantEntity)2 ArrayList (java.util.ArrayList)1 Closure (php.runtime.lang.Closure)1 DocumentComment (php.runtime.reflection.DocumentComment)1 MethodEntity (php.runtime.reflection.MethodEntity)1 ModuleEntity (php.runtime.reflection.ModuleEntity)1