Split ModuleWriter in ModuleWrite and ModuleGenerator

This commit is contained in:
Volker Berlin 2018-06-01 19:44:40 +02:00
parent 50648d74a1
commit dea54b631c
5 changed files with 1172 additions and 1108 deletions

View File

@ -30,6 +30,7 @@ import javax.annotation.Nonnull;
import de.inetsoftware.classparser.ClassFile;
import de.inetsoftware.jwebassembly.binary.BinaryModuleWriter;
import de.inetsoftware.jwebassembly.module.ModuleGenerator;
import de.inetsoftware.jwebassembly.module.ModuleWriter;
import de.inetsoftware.jwebassembly.text.TextModuleWriter;
@ -157,14 +158,15 @@ public class JWebAssembly {
* if any conversion error occurs
*/
private void compile( ModuleWriter writer ) throws IOException, WasmException {
ModuleGenerator generator = new ModuleGenerator( writer );
for( URL url : classFiles ) {
ClassFile classFile = new ClassFile( new BufferedInputStream( url.openStream() ) );
writer.prepare( classFile );
generator.prepare( classFile );
}
writer.prepareFinish();
generator.prepareFinish();
for( URL url : classFiles ) {
ClassFile classFile = new ClassFile( new BufferedInputStream( url.openStream() ) );
writer.write( classFile );
generator.write( classFile );
}
}
}

View File

@ -277,9 +277,7 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
* {@inheritDoc}
*/
@Override
protected void writeMethodSignature( MethodInfo method ) throws IOException, WasmException {
super.writeMethodSignature( method );
protected void writeMethodParamFinish() throws IOException {
int typeId = functionTypes.indexOf( functionType );
if( typeId < 0 ) {
typeId = functionTypes.size();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -106,6 +106,12 @@ public class TextModuleWriter extends ModuleWriter {
output.append( " (" ).append( kind ).append( ' ' ).append( valueType.toString() ).append( ')' );
}
/**
* {@inheritDoc}
*/
@Override
protected void writeMethodParamFinish() throws IOException {}
/**
* {@inheritDoc}
*/