use of st.gravel.support.compiler.jvm.JVMVariable in project gravel by gravel-st.
the class JVMBlockCompiler method createInit.
public JVMMethod createInit() {
final List<JVMInstruction>[] _instructions;
final Load[] _read0;
final JVMLocalDeclaration[] _locals;
_instructions = new List[1];
_read0 = new Load[1];
_instructions[0] = new java.util.ArrayList();
_read0[0] = Load.factory.index_type_(0, _block.ownerType());
for (int _temp1 = 0; _temp1 < _block.copiedVariables().length; _temp1++) {
final int _i = _temp1 + 1;
final JVMVariable _elem = _block.copiedVariables()[_temp1];
_instructions[0].add(_read0[0]);
_instructions[0].add(Load.factory.index_type_(_i, _elem.type()));
_instructions[0].add(PutField.factory.ownerType_name_type_(_block.ownerType(), _elem.varName(), _elem.type()));
}
_instructions[0].add(_read0[0]);
_instructions[0].add(InvokeSpecial.factory.init_voidArguments_(this.superType(), new JVMType[] {}));
_instructions[0].add(Return.factory.basicNew());
_locals = st.gravel.support.jvm.ArrayExtensions.copyWithFirst_(st.gravel.support.jvm.ArrayExtensions.keysAndValuesCollect_(_block.copiedVariables(), new st.gravel.support.jvm.Block2<JVMLocalDeclaration, Integer, JVMVariable>() {
@Override
public JVMLocalDeclaration value_value_(final Integer _i, final JVMVariable _var) {
return (JVMLocalDeclaration) _var.asLocalDeclaration_(_i);
}
}), JVMLocalDeclaration.factory.blockSelf());
return JVMMethod.factory.name_locals_instructions_isStatic_signature_("<init>", _locals, _instructions[0].toArray(new JVMInstruction[_instructions[0].size()]), false, _block.initSignature());
}
Aggregations