diff --git a/common/src/backend/java/dev/engine_room/flywheel/backend/compile/core/FailedCompilation.java b/common/src/backend/java/dev/engine_room/flywheel/backend/compile/core/FailedCompilation.java index 9ff6facd0..20f3b3012 100644 --- a/common/src/backend/java/dev/engine_room/flywheel/backend/compile/core/FailedCompilation.java +++ b/common/src/backend/java/dev/engine_room/flywheel/backend/compile/core/FailedCompilation.java @@ -8,6 +8,8 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.jetbrains.annotations.Nullable; + import dev.engine_room.flywheel.backend.glsl.SourceFile; import dev.engine_room.flywheel.backend.glsl.SourceLines; import dev.engine_room.flywheel.backend.glsl.error.ConsoleColors; @@ -56,18 +58,22 @@ public class FailedCompilation { return; } - Matcher matcher; + try { + Matcher matcher; - matcher = PATTERN_ONE.matcher(s); - if (matcher.find()) { - out.accept(interpretPattern1(matcher)); - return; - } + matcher = PATTERN_ONE.matcher(s); + if (matcher.find()) { + out.accept(interpretPattern1(matcher)); + return; + } - matcher = PATTERN_TWO.matcher(s); - if (matcher.find()) { - out.accept(interpretPattern2(matcher)); - return; + matcher = PATTERN_TWO.matcher(s); + if (matcher.find()) { + out.accept(interpretPattern2(matcher)); + return; + } + } catch (Throwable ignored) { + // noop, if parsing/span matching fails somehow lets just emit the raw error string. } out.accept(ErrorBuilder.create() @@ -114,15 +120,10 @@ public class FailedCompilation { .pointAt(span, 1); } - private ErrorBuilder interpretWithSpan(ErrorLevel errorLevel, int fileId, int lineNo, String span, String msg) { + private ErrorBuilder interpretWithSpan(ErrorLevel errorLevel, int fileId, int lineNo, @Nullable String span, String msg) { var sourceFile = files.get(fileId - 1); - Span errorSpan; - if (span != null) { - errorSpan = sourceFile.getLineSpanMatching(lineNo, span); - } else { - errorSpan = sourceFile.getLineSpanNoWhitespace(lineNo); - } + Span errorSpan = sourceFile.getLineSpanMatching(lineNo, span); return ErrorBuilder.create() .header(errorLevel, msg) diff --git a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java index 499825bbb..2670ba777 100644 --- a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java +++ b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/indirect/IndirectInstancer.java @@ -374,9 +374,12 @@ public class IndirectInstancer extends AbstractInstancer contentsChanged.clear(); } + @Override public void parallelUpdate() { var pages = this.pages.get(); + mergeablePages.clear(pages.length, mergeablePages.currentCapacity() + 1); + int page = 0; while (mergeablePages.cardinality() > 1) { page = mergeablePages.nextSetBit(page); diff --git a/gradle.properties b/gradle.properties index bbefc03c2..270df3fd2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ mod_homepage = https://github.com/Engine-Room/Flywheel # Flywheel metadata flywheel_id=flywheel flywheel_name=Flywheel -flywheel_version=1.0.0 +flywheel_version=1.0.1-beta flywheel_description=An overhauled entity and block entity rendering API. # Vanillin metadata vanillin_id=vanillin