Skip to content

Commit

Permalink
Merge branch '__rultor'
Browse files Browse the repository at this point in the history
  • Loading branch information
rultor committed Apr 10, 2024
2 parents f7b2792 + af0cd0a commit 6d4be87
Show file tree
Hide file tree
Showing 31 changed files with 125 additions and 81 deletions.
2 changes: 1 addition & 1 deletion eo-runtime/src/main/eo/org/eolang/go.eo
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
# Backward jump.
error > backward
[]
&.^.@ > value
&.^.^.to &.^.body > value
&.^.^.id > id

# Forward jump.
Expand Down
3 changes: 2 additions & 1 deletion eo-runtime/src/main/eo/org/eolang/malloc.eo
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,9 @@

# Pointer to allocated block in memory.
# Here `id` is identifier of pointer, `size` is length of the block.
[id size] > memory-block-pointer
[id] > memory-block-pointer
$ > pointer
^.size > size

# Read `bytes` from the block in memory by the pointer.
[] > read /bytes
Expand Down
3 changes: 2 additions & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOcage$EOnew.java
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
if (this.forma == null) {
this.forma = phi.forma();
} else if (!this.forma.equals(phi.forma())) {
Expand All @@ -147,6 +147,7 @@ public void put(final Phi phi) {
}
}
EOcage$EOnew.CAGES.put(this.locator, phi);
return true;
}

@Override
Expand Down
3 changes: 1 addition & 2 deletions eo-runtime/src/main/java/EOorg/EOeolang/EOmalloc$EO蠁.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,8 @@ public Phi lambda() {
final int identifier = Heaps.INSTANCE.get().malloc(
this, new Dataized(size).take(Long.class).intValue()
);
final Phi pointer = this.take(Attr.SIGMA).take("memory-block-pointer").copy();
final Phi pointer = this.take(Attr.RHO).take("memory-block-pointer").copy();
pointer.put("id", new Data.ToPhi((long) identifier));
pointer.put("size", size);
return pointer;
}
}
12 changes: 8 additions & 4 deletions eo-runtime/src/main/java/EOorg/EOeolang/EOtry.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,17 @@ public Phi take(final String name) {
}

@Override
public void put(final int pos, final Phi object) {
this.func.accept(phi -> phi.put(pos, object));
public boolean put(final int pos, final Phi object) {
return new TryReturn<Boolean>(
this.body, this.ctch, this.last
).apply(phi -> phi.put(pos, object));
}

@Override
public void put(final String name, final Phi object) {
this.func.accept(phi -> phi.put(name, object));
public boolean put(final String name, final Phi object) {
return new TryReturn<Boolean>(
this.body, this.ctch, this.last
).apply(phi -> phi.put(name, object));
}

@Override
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtComposite.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
throw new ExReadOnly(
"You can't overwrite lambda expression"
);
Expand Down
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtEnvelope.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
this.origin.put(phi);
public boolean put(final Phi phi) {
return this.origin.put(phi);
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtFixed.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public Phi get() {
}

@Override
public void put(final Phi src) {
// ignore it
public boolean put(final Phi src) {
return false;
}
}
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtFormed.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
throw new ExReadOnly(
"Formed attribute is read only"
);
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtGetOnly.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
throw new IllegalStateException(
"Should never happen"
);
Expand Down
5 changes: 3 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtLogged.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,10 @@ public Phi get() {
}

@Override
public void put(final Phi src) {
public boolean put(final Phi src) {
this.log.info(String.format(" %s.put()...\n", this.owner));
this.origin.put(src);
final boolean ret = this.origin.put(src);
this.log.info(String.format(" %s.put()!\n", this.owner));
return ret;
}
}
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtNamed.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,9 @@ public Phi get() {
}

@Override
public void put(final Phi src) {
public boolean put(final Phi src) {
try {
this.origin.put(src);
return this.origin.put(src);
} catch (final ExReadOnly ex) {
throw new ExReadOnly(this.label(), ex);
} catch (final ExFailure ex) {
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/org/eolang/AtOnce.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
throw new ExReadOnly(
String.format(
"You can't overwrite '%s'",
Expand Down
7 changes: 6 additions & 1 deletion eo-runtime/src/main/java/org/eolang/AtRho.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,15 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
final boolean ret;
if (this.rho.get() == null) {
this.rho.set(phi);
ret = true;
} else {
ret = false;
}
return ret;
}

@Override
Expand Down
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/AtSafe.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,9 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
try {
this.origin.put(phi);
return this.origin.put(phi);
} catch (final ExFailure ex) {
throw new EOerror.ExError(
new Data.ToPhi(EOerror.message(ex))
Expand Down
15 changes: 9 additions & 6 deletions eo-runtime/src/main/java/org/eolang/AtSetRho.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
package org.eolang;

/**
* Attribute that tries to set \rho to retrieved object.
* Attribute does not set \rho if retrieved object is \rho or \sigma.
* Since every \rho attribute of {@link Phi} is {@link AtRho} it won't be
* reset because {@link AtRho} ignores all puts except first.
* The attribute tries to copy object and set \rho to it.
* If the name of the attribute is {@link Attr#RHO} or {@link Attr#SIGMA} - just object is
* returned.
*
* @since 0.36.0
*/
final class AtSetRho extends AtEnvelope {
Expand All @@ -52,9 +52,12 @@ final class AtSetRho extends AtEnvelope {
super(
new AtGetOnly(
() -> {
final Phi ret = attr.get();
Phi ret = attr.get();
if (!name.equals(Attr.RHO) && !name.equals(Attr.SIGMA)) {
ret.put(Attr.RHO, rho);
final Phi copy = ret.copy();
if (copy.put(Attr.RHO, rho)) {
ret = copy;
}
}
return ret;
}
Expand Down
3 changes: 2 additions & 1 deletion eo-runtime/src/main/java/org/eolang/AtVoid.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,15 @@ public Phi get() {
}

@Override
public void put(final Phi phi) {
public boolean put(final Phi phi) {
if (this.object.get() == null) {
this.object.set(phi);
} else {
throw new ExReadOnly(
"This void attribute is already set, can't reset"
);
}
return true;
}

}
4 changes: 2 additions & 2 deletions eo-runtime/src/main/java/org/eolang/Attr.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public interface Attr extends Term {
* Put a new object in.
*
* @param phi The object to put
* @return Was attribute set
*/
void put(Phi phi);

boolean put(Phi phi);
}
8 changes: 4 additions & 4 deletions eo-runtime/src/main/java/org/eolang/Data.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,13 @@ public Phi take(final String name) {
}

@Override
public void put(final int pos, final Phi obj) {
this.object.put(pos, obj);
public boolean put(final int pos, final Phi obj) {
return this.object.put(pos, obj);
}

@Override
public void put(final String name, final Phi obj) {
this.object.put(name, obj);
public boolean put(final String name, final Phi obj) {
return this.object.put(name, obj);
}

@Override
Expand Down
8 changes: 4 additions & 4 deletions eo-runtime/src/main/java/org/eolang/PhConst.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,13 @@ public Phi take(final String name) {
}

@Override
public void put(final int pos, final Phi object) {
this.primitive().put(pos, object);
public boolean put(final int pos, final Phi object) {
return this.primitive().put(pos, object);
}

@Override
public void put(final String name, final Phi object) {
this.primitive().put(name, object);
public boolean put(final String name, final Phi object) {
return this.primitive().put(name, object);
}

@Override
Expand Down
10 changes: 5 additions & 5 deletions eo-runtime/src/main/java/org/eolang/PhDefault.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,12 +195,12 @@ public final Phi copy() {
}

@Override
public void put(final int pos, final Phi object) {
this.put(this.attr(pos), object);
public boolean put(final int pos, final Phi object) {
return this.put(this.attr(pos), object);
}

@Override
public void put(final String name, final Phi object) {
public boolean put(final String name, final Phi object) {
if (!this.attrs.containsKey(name)) {
throw new ExUnset(
String.format(
Expand All @@ -209,7 +209,7 @@ public void put(final String name, final Phi object) {
)
);
}
new AtSafe(this.named(this.attrs.get(name), name)).put(object);
return new AtSafe(this.named(this.attrs.get(name), name)).put(object);
}

@Override
Expand All @@ -220,7 +220,7 @@ public Phi take(final String name) {
object = new AtSafe(
this.named(
new AtSetRho(
new AtCopied(this.attrs.get(name), name),
this.attrs.get(name),
this,
name
),
Expand Down
8 changes: 4 additions & 4 deletions eo-runtime/src/main/java/org/eolang/PhLocated.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,13 @@ public Phi take(final String name) {
}

@Override
public void put(final int pos, final Phi object) {
this.origin.put(pos, object);
public boolean put(final int pos, final Phi object) {
return this.origin.put(pos, object);
}

@Override
public void put(final String name, final Phi object) {
this.origin.put(name, object);
public boolean put(final String name, final Phi object) {
return this.origin.put(name, object);
}

@Override
Expand Down
10 changes: 6 additions & 4 deletions eo-runtime/src/main/java/org/eolang/PhLogged.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,19 @@ public Phi take(final String name) {
}

@Override
public void put(final int pos, final Phi object) {
public boolean put(final int pos, final Phi object) {
System.out.printf("%d.put(%d, %d)...\n", this.hashCode(), pos, object.hashCode());
this.origin.put(pos, object);
final boolean ret = this.origin.put(pos, object);
System.out.printf("%d.put(%d, %d)!\n", this.hashCode(), pos, object.hashCode());
return ret;
}

@Override
public void put(final String name, final Phi object) {
public boolean put(final String name, final Phi object) {
System.out.printf("%d.put(\"%s\", %d)...\n", this.hashCode(), name, object.hashCode());
this.origin.put(name, object);
final boolean ret = this.origin.put(name, object);
System.out.printf("%d.put(\"%s\", %d)!\n", this.hashCode(), name, object.hashCode());
return ret;
}

@Override
Expand Down
8 changes: 4 additions & 4 deletions eo-runtime/src/main/java/org/eolang/PhNamed.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,13 @@ public Phi take(final String nme) {
}

@Override
public void put(final int pos, final Phi object) {
this.origin.put(pos, object);
public boolean put(final int pos, final Phi object) {
return this.origin.put(pos, object);
}

@Override
public void put(final String nme, final Phi object) {
this.origin.put(nme, object);
public boolean put(final String nme, final Phi object) {
return this.origin.put(nme, object);
}

@Override
Expand Down
8 changes: 4 additions & 4 deletions eo-runtime/src/main/java/org/eolang/PhOnce.java
Original file line number Diff line number Diff line change
Expand Up @@ -111,13 +111,13 @@ public Phi take(final String name) {
}

@Override
public void put(final int pos, final Phi obj) {
this.object.get().put(pos, obj);
public boolean put(final int pos, final Phi obj) {
return this.object.get().put(pos, obj);
}

@Override
public void put(final String name, final Phi obj) {
this.object.get().put(name, obj);
public boolean put(final String name, final Phi obj) {
return this.object.get().put(name, obj);
}

@Override
Expand Down
Loading

0 comments on commit 6d4be87

Please sign in to comment.