*
* @return the expression value.
*/
private Value evalImpl(Env env, boolean isRef, boolean isCopy)
{
AbstractFunction fun = env.findFunction(_name);
if (fun == null) {
env.error(getLocationLine(), L.l("'{0}' is an unknown function.", _name));
return NullValue.NULL;
}
Value []args = fun.evalArguments(env, this, _args);
env.pushCall(this, NullValue.NULL, args);
// XXX: qa/1d14 Value oldThis = env.setThis(UnsetValue.NULL);
try {
env.checkTimeout();
if (isRef)
return fun.callRef(env, args);
else if (isCopy)
return fun.callCopy(env, args);
else
return fun.call(env, args);
//} catch (Exception e) {
// throw QuercusException.create(e, env.getStackTrace());
} finally {
env.popCall();
// XXX: qa/1d14 env.setThis(oldThis);