package org.develnext.jphp.core.compiler.jvm.statement.expr;
import org.develnext.jphp.core.compiler.jvm.statement.ExpressionStmtCompiler;
import org.develnext.jphp.core.tokenizer.token.stmt.ThrowStmtToken;
import php.runtime.Memory;
import php.runtime.env.Environment;
import php.runtime.env.TraceInfo;
public class ThrowCompiler extends BaseStatementCompiler<ThrowStmtToken> {
public ThrowCompiler(ExpressionStmtCompiler exprCompiler) {
super(exprCompiler);
}
@Override
public void write(ThrowStmtToken token) {
expr.writePushEnv();
expr.writePushTraceInfo(token.getException());
expr.writeExpression(token.getException(), true, false, true);
expr.writePopBoxing();
expr.writeSysDynamicCall(Environment.class, "__throwException", void.class, TraceInfo.class, Memory.class);
}
}