mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 08:14:09 -08:00
wasm gc: fix failing tests
This commit is contained in:
parent
e966690284
commit
0897a1bbd5
|
@ -25,6 +25,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import org.mozilla.javascript.CompilerEnvirons;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.ast.AstRoot;
|
||||
|
@ -109,6 +110,7 @@ class JSClassProcessor {
|
|||
private IncrementalDependencyRegistration incrementalCache;
|
||||
private JSImportAnnotationCache annotationCache;
|
||||
private ClassReader objectClass;
|
||||
private Predicate<String> classFilter = n -> true;
|
||||
|
||||
JSClassProcessor(ClassReaderSource classSource, JSTypeHelper typeHelper, JSBodyRepository repository,
|
||||
Diagnostics diagnostics, IncrementalDependencyRegistration incrementalCache, boolean strict) {
|
||||
|
@ -123,6 +125,10 @@ class JSClassProcessor {
|
|||
annotationCache = new JSImportAnnotationCache(classSource, diagnostics);
|
||||
}
|
||||
|
||||
public void setClassFilter(Predicate<String> classFilter) {
|
||||
this.classFilter = classFilter;
|
||||
}
|
||||
|
||||
public ClassReaderSource getClassSource() {
|
||||
return classSource;
|
||||
}
|
||||
|
@ -760,6 +766,9 @@ class JSClassProcessor {
|
|||
|
||||
private boolean processJSBodyInvocation(MethodReader method, CallLocation callLocation, InvokeInstruction invoke,
|
||||
MethodHolder methodToProcess) {
|
||||
if (!classFilter.test(method.getOwnerName())) {
|
||||
return false;
|
||||
}
|
||||
boolean[] byRefParams = new boolean[method.parameterCount()];
|
||||
validateSignature(method, callLocation, byRefParams);
|
||||
if (invoke.getInstance() != null) {
|
||||
|
|
|
@ -39,7 +39,8 @@ public class JSOPlugin implements TeaVMPlugin {
|
|||
|
||||
JSBodyRepository repository = new JSBodyRepository();
|
||||
host.registerService(JSBodyRepository.class, repository);
|
||||
host.add(new JSObjectClassTransformer(repository));
|
||||
var classTransformer = new JSObjectClassTransformer(repository);
|
||||
host.add(classTransformer);
|
||||
JSDependencyListener dependencyListener = new JSDependencyListener(repository);
|
||||
host.add(dependencyListener);
|
||||
host.add(new JSExceptionsDependencyListener());
|
||||
|
@ -59,6 +60,7 @@ public class JSOPlugin implements TeaVMPlugin {
|
|||
}
|
||||
|
||||
if (wasmGCHost != null) {
|
||||
classTransformer.setClassFilter(n -> !n.startsWith("java."));
|
||||
WasmGCJso.install(host, wasmGCHost, repository);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import org.teavm.diagnostics.Diagnostics;
|
||||
import org.teavm.jso.JSClass;
|
||||
import org.teavm.jso.JSExport;
|
||||
|
@ -59,11 +60,16 @@ class JSObjectClassTransformer implements ClassHolderTransformer {
|
|||
private JSTypeHelper typeHelper;
|
||||
private ClassHierarchy hierarchy;
|
||||
private Map<String, ExposedClass> exposedClasses = new HashMap<>();
|
||||
private Predicate<String> classFilter = n -> true;
|
||||
|
||||
JSObjectClassTransformer(JSBodyRepository repository) {
|
||||
this.repository = repository;
|
||||
}
|
||||
|
||||
void setClassFilter(Predicate<String> classFilter) {
|
||||
this.classFilter = classFilter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transformClass(ClassHolder cls, ClassHolderTransformerContext context) {
|
||||
this.hierarchy = context.getHierarchy();
|
||||
|
@ -71,6 +77,7 @@ class JSObjectClassTransformer implements ClassHolderTransformer {
|
|||
typeHelper = new JSTypeHelper(hierarchy.getClassSource());
|
||||
processor = new JSClassProcessor(hierarchy.getClassSource(), typeHelper, repository,
|
||||
context.getDiagnostics(), context.getIncrementalCache(), context.isStrict());
|
||||
processor.setClassFilter(classFilter);
|
||||
}
|
||||
processor.processClass(cls);
|
||||
if (typeHelper.isJavaScriptClass(cls.getName())) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user