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.classparser.ClassFile;
import de.inetsoftware.jwebassembly.binary.BinaryModuleWriter; import de.inetsoftware.jwebassembly.binary.BinaryModuleWriter;
import de.inetsoftware.jwebassembly.module.ModuleGenerator;
import de.inetsoftware.jwebassembly.module.ModuleWriter; import de.inetsoftware.jwebassembly.module.ModuleWriter;
import de.inetsoftware.jwebassembly.text.TextModuleWriter; import de.inetsoftware.jwebassembly.text.TextModuleWriter;
@ -157,14 +158,15 @@ public class JWebAssembly {
* if any conversion error occurs * if any conversion error occurs
*/ */
private void compile( ModuleWriter writer ) throws IOException, WasmException { private void compile( ModuleWriter writer ) throws IOException, WasmException {
ModuleGenerator generator = new ModuleGenerator( writer );
for( URL url : classFiles ) { for( URL url : classFiles ) {
ClassFile classFile = new ClassFile( new BufferedInputStream( url.openStream() ) ); ClassFile classFile = new ClassFile( new BufferedInputStream( url.openStream() ) );
writer.prepare( classFile ); generator.prepare( classFile );
} }
writer.prepareFinish(); generator.prepareFinish();
for( URL url : classFiles ) { for( URL url : classFiles ) {
ClassFile classFile = new ClassFile( new BufferedInputStream( url.openStream() ) ); 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} * {@inheritDoc}
*/ */
@Override @Override
protected void writeMethodSignature( MethodInfo method ) throws IOException, WasmException { protected void writeMethodParamFinish() throws IOException {
super.writeMethodSignature( method );
int typeId = functionTypes.indexOf( functionType ); int typeId = functionTypes.indexOf( functionType );
if( typeId < 0 ) { if( typeId < 0 ) {
typeId = functionTypes.size(); 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( ')' ); output.append( " (" ).append( kind ).append( ' ' ).append( valueType.toString() ).append( ')' );
} }
/**
* {@inheritDoc}
*/
@Override
protected void writeMethodParamFinish() throws IOException {}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */