use of php.runtime.reflection.FunctionEntity in project jphp by jphp-compiler.
the class WrapEnvironment method importFunction.
@Signature(@Arg("functionName"))
public Memory importFunction(Environment env, Memory... args) {
FunctionEntity functionEntity = env.fetchFunction(args[0].toString());
if (functionEntity == null) {
env.exception(Messages.ERR_FUNCTION_NOT_FOUND.fetch(args[0]));
return Memory.NULL;
}
environment.registerFunction(functionEntity);
return Memory.NULL;
}
use of php.runtime.reflection.FunctionEntity in project jphp by jphp-compiler.
the class WrapEnvironment method exportFunction.
@Signature(@Arg("functionName"))
public Memory exportFunction(Environment env, Memory... args) {
FunctionEntity functionEntity = environment.fetchFunction(args[0].toString());
if (functionEntity == null) {
env.exception(Messages.ERR_FUNCTION_NOT_FOUND.fetch(args[0]));
return Memory.NULL;
}
env.registerFunction(functionEntity);
return Memory.NULL;
}
use of php.runtime.reflection.FunctionEntity 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;
}
use of php.runtime.reflection.FunctionEntity 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;
}
use of php.runtime.reflection.FunctionEntity in project jphp by jphp-compiler.
the class ReflectionParameter method getDeclaringFunction.
@Signature
public Memory getDeclaringFunction(Environment env, Memory... args) throws Throwable {
if (cachedFunction != null)
return cachedFunction;
if (functionEntity == null)
return Memory.NULL;
if (functionEntity instanceof FunctionEntity) {
ClassEntity classEntity = env.fetchClass("ReflectionFunction");
ReflectionFunction e = new ReflectionFunction(env, classEntity);
e.setFunctionEntity((FunctionEntity) functionEntity);
return cachedFunction = new ObjectMemory(e);
} else {
ClassEntity classEntity = env.fetchClass("ReflectionMethod");
ReflectionMethod e = new ReflectionMethod(env, classEntity);
e.setEntity((MethodEntity) functionEntity);
return cachedFunction = new ObjectMemory(e);
}
}
Aggregations