From 779023bf080be77f70aa0464f88b3fa7b540ca61 Mon Sep 17 00:00:00 2001 From: "Todd V. Jonker" Date: Wed, 21 Oct 2026 13:27:34 -0700 Subject: [PATCH] Don't cache `BindingSite`s. They are rarely needed; AFAIK it was only ever used by the Eclipse plugin. --- .../main/java/dev/ionfusion/fusion/Binding.java | 2 +- .../java/dev/ionfusion/fusion/FreeBinding.java | 2 +- .../java/dev/ionfusion/fusion/FusionSyntax.java | 2 +- .../dev/ionfusion/fusion/LocalEnvironment.java | 6 ++---- .../dev/ionfusion/fusion/ModuleNamespace.java | 11 +++-------- .../java/dev/ionfusion/fusion/Namespace.java | 17 ++++++----------- 6 files changed, 14 insertions(+), 26 deletions(-) diff --git a/runtime/src/main/java/dev/ionfusion/fusion/Binding.java b/runtime/src/main/java/dev/ionfusion/fusion/Binding.java index 7599bfd4a..59c2152f8 100644 --- a/runtime/src/main/java/dev/ionfusion/fusion/Binding.java +++ b/runtime/src/main/java/dev/ionfusion/fusion/Binding.java @@ -61,7 +61,7 @@ abstract class Binding /** * @return null if {@link FreeBinding}. */ - abstract BindingSite getBindingSite(); + abstract BindingSite bindingSite(); /** * Determines whether this is a {@link FreeBinding} with the given name. diff --git a/runtime/src/main/java/dev/ionfusion/fusion/FreeBinding.java b/runtime/src/main/java/dev/ionfusion/fusion/FreeBinding.java index fd9488d18..9dac9ef54 100644 --- a/runtime/src/main/java/dev/ionfusion/fusion/FreeBinding.java +++ b/runtime/src/main/java/dev/ionfusion/fusion/FreeBinding.java @@ -25,7 +25,7 @@ public BaseSymbol getName() @Override - BindingSite getBindingSite() + BindingSite bindingSite() { return null; } diff --git a/runtime/src/main/java/dev/ionfusion/fusion/FusionSyntax.java b/runtime/src/main/java/dev/ionfusion/fusion/FusionSyntax.java index 1e363019a..58aabdb47 100644 --- a/runtime/src/main/java/dev/ionfusion/fusion/FusionSyntax.java +++ b/runtime/src/main/java/dev/ionfusion/fusion/FusionSyntax.java @@ -166,7 +166,7 @@ static boolean unsafeFreeIdentifierEqual(Evaluator eval, static BindingSite unsafeIdentifierBinding(Evaluator eval, Object id) throws FusionException { - return ((SyntaxSymbol) id).resolve().getBindingSite(); + return ((SyntaxSymbol) id).resolve().bindingSite(); } diff --git a/runtime/src/main/java/dev/ionfusion/fusion/LocalEnvironment.java b/runtime/src/main/java/dev/ionfusion/fusion/LocalEnvironment.java index 9f913f91f..d6d8f88e6 100644 --- a/runtime/src/main/java/dev/ionfusion/fusion/LocalEnvironment.java +++ b/runtime/src/main/java/dev/ionfusion/fusion/LocalEnvironment.java @@ -35,12 +35,10 @@ static final class LocalBinding static final LocalBinding[] EMPTY_ARRAY = new LocalBinding[0]; private final SyntaxSymbol myIdentifier; - private final BindingSite mySite; private LocalBinding(SyntaxSymbol identifier) { myIdentifier = identifier; - mySite = makeLocalBindingSite(identifier.getPosition()); } @Override @@ -50,9 +48,9 @@ BaseSymbol getName() } @Override - BindingSite getBindingSite() + BindingSite bindingSite() { - return mySite; + return makeLocalBindingSite(myIdentifier.getPosition()); } @Override diff --git a/runtime/src/main/java/dev/ionfusion/fusion/ModuleNamespace.java b/runtime/src/main/java/dev/ionfusion/fusion/ModuleNamespace.java index ca14b326e..3d585fc0b 100644 --- a/runtime/src/main/java/dev/ionfusion/fusion/ModuleNamespace.java +++ b/runtime/src/main/java/dev/ionfusion/fusion/ModuleNamespace.java @@ -33,7 +33,6 @@ static abstract class ProvidedBinding { private final BaseSymbol myName; private final ResourcePosition myLoc; - private BindingSite mySite; ProvidedBinding(BaseSymbol name, ResourcePosition sourceLocation) { @@ -45,13 +44,9 @@ static abstract class ProvidedBinding final BaseSymbol getName() { return myName; } @Override - BindingSite getBindingSite() + BindingSite bindingSite() { - if (mySite == null) - { - mySite = makeExportBindingSite(myLoc, inside().getBindingSite()); - } - return mySite; + return makeExportBindingSite(myLoc, inside().bindingSite()); } @Override @@ -99,7 +94,7 @@ static final class DefinedProvidedBinding DefinedProvidedBinding(ModuleDefinedBinding binding) { this(binding.getName(), - binding.getBindingSite().getPosition(), + binding.bindingSite().getPosition(), binding); } diff --git a/runtime/src/main/java/dev/ionfusion/fusion/Namespace.java b/runtime/src/main/java/dev/ionfusion/fusion/Namespace.java index 0d1c1a7b7..749677fb9 100644 --- a/runtime/src/main/java/dev/ionfusion/fusion/Namespace.java +++ b/runtime/src/main/java/dev/ionfusion/fusion/Namespace.java @@ -96,14 +96,14 @@ abstract class NsDefinedBinding { private final BaseSymbol myName; private final String myDebugName; - private final BindingSite mySite; + private final ResourcePosition myPosition; final int myAddress; NsDefinedBinding(SyntaxSymbol identifier, int address) { myName = identifier.getName(); myDebugName = identifier.debugString(); - mySite = makeDefineBindingSite(identifier.getPosition()); + myPosition = identifier.getPosition(); myAddress = address; } @@ -117,9 +117,9 @@ final BaseSymbol getName() } @Override - BindingSite getBindingSite() + BindingSite bindingSite() { - return mySite; + return makeDefineBindingSite(myPosition); } final String getDebugName() @@ -170,7 +170,6 @@ abstract static class RequiredBinding private final String myDebugName; private final ResourcePosition myPosition; private final ProvidedBinding myProvide; - private BindingSite mySite; RequiredBinding(SyntaxSymbol identifier, ProvidedBinding provide) { @@ -188,13 +187,9 @@ final BaseSymbol getName() } @Override - BindingSite getBindingSite() + BindingSite bindingSite() { - if (mySite == null) - { - mySite = makeImportBindingSite(myPosition, myProvide.getBindingSite()); - } - return mySite; + return makeImportBindingSite(myPosition, myProvide.bindingSite()); } final String getDebugName()