Skip to content

Commit 1e29461

Browse files
committed
[GR-24874] [GR-24874] [GR-24423] Update Truffle and fix DynamicObject deprecations.
PullRequest: truffleruby/1776
2 parents e9dce4a + fd49721 commit 1e29461

File tree

18 files changed

+67
-121
lines changed

18 files changed

+67
-121
lines changed

lib/cext/include/ruby/encoding.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -251,11 +251,6 @@ int rb_enc_isspace(unsigned char c, rb_encoding *enc);
251251
#endif
252252
#define rb_enc_isdigit(c,enc) ONIGENC_IS_CODE_DIGIT((enc),(c))
253253

254-
#ifdef TRUFFLERUBY
255-
/* This should be moved to onigmo.h when rb_encoding is typedef const OnigEncodingType rb_encoding; */
256-
int rb_tr_enc_mbc_case_fold(rb_encoding *enc, int flag, const UChar** p, const UChar* end, UChar* lower);
257-
#endif
258-
259254
int rb_enc_asciicompat(rb_encoding *enc);
260255

261256
int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);

lib/cext/include/ruby/onigmo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, c
330330
#define ONIGENC_NAME(enc) ((enc)->name)
331331

332332
#ifdef TRUFFLERUBY
333+
int rb_tr_enc_mbc_case_fold(const OnigEncodingType *enc, int flag, const UChar** p, const UChar* end, UChar* lower);
333334
#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \
334335
rb_tr_enc_mbc_case_fold(enc,flag,pp,end,buf)
335336
#else

mx.truffleruby/suite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
{
88
"name": "sulong",
99
"subdir": True,
10-
"version": "3c99069a68f25e0383440ee2e5a1adc041f93ab4",
10+
"version": "4bae4d9fd21504514a29beec8769b49e4a77b39b",
1111
"urls": [
1212
{"url": "https://github.com/oracle/graal.git", "kind": "git"},
1313
{"url": "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind": "binary"},

spec/tags/core/integer/modulo_tags.txt

Lines changed: 0 additions & 2 deletions
This file was deleted.

spec/tags/core/integer/remainder_tags.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/main/java/org/truffleruby/core/CoreLibrary.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.util.concurrent.ConcurrentHashMap;
2424
import java.util.concurrent.ConcurrentMap;
2525

26+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
2627
import org.jcodings.specific.USASCIIEncoding;
2728
import org.jcodings.transcode.EConvFlags;
2829
import org.truffleruby.Layouts;
@@ -515,8 +516,8 @@ public CoreLibrary(RubyContext context) {
515516
symbolClass = defineClass("Symbol");
516517

517518
threadClass = defineClass("Thread");
518-
threadClass.define("@report_on_exception", true);
519-
threadClass.define("@abort_on_exception", false);
519+
DynamicObjectLibrary.getUncached().put(threadClass, "@report_on_exception", true);
520+
DynamicObjectLibrary.getUncached().put(threadClass, "@abort_on_exception", false);
520521
threadFactory = Layouts.THREAD.createThreadShape(threadClass, threadClass);
521522
Layouts.CLASS.setInstanceFactoryUnsafe(threadClass, threadFactory);
522523

src/main/java/org/truffleruby/core/exception/CoreExceptions.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.oracle.truffle.api.interop.UnsupportedTypeException;
4040
import com.oracle.truffle.api.nodes.Node;
4141
import com.oracle.truffle.api.object.DynamicObject;
42+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
4243
import com.oracle.truffle.api.source.SourceSection;
4344

4445
public class CoreExceptions {
@@ -853,7 +854,8 @@ public DynamicObject loadError(String message, String path, Node currentNode) {
853854
// This is a workaround for the rubygems/security.rb file expecting the error path to be openssl
854855
path = "openssl";
855856
}
856-
loadError.define(
857+
DynamicObjectLibrary.getUncached().put(
858+
loadError,
857859
"@path",
858860
StringOperations.createString(context, StringOperations.encodeRope(path, UTF8Encoding.INSTANCE)));
859861
return loadError;
@@ -1142,7 +1144,7 @@ public DynamicObject systemExit(int exitStatus, Node currentNode) {
11421144
DynamicObject exceptionClass = context.getCoreLibrary().systemExitClass;
11431145
final DynamicObject systemExit = ExceptionOperations
11441146
.createRubyException(context, exceptionClass, message, currentNode, null);
1145-
systemExit.define("@status", exitStatus);
1147+
DynamicObjectLibrary.getUncached().put(systemExit, "@status", exitStatus);
11461148
return systemExit;
11471149
}
11481150

src/main/java/org/truffleruby/core/kernel/KernelNodes.java

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@
107107
import org.truffleruby.language.objects.ObjectIVarGetNode;
108108
import org.truffleruby.language.objects.ObjectIVarSetNode;
109109
import org.truffleruby.language.objects.PropagateTaintNode;
110-
import org.truffleruby.language.objects.PropertyFlags;
111110
import org.truffleruby.language.objects.ReadObjectFieldNode;
112111
import org.truffleruby.language.objects.ReadObjectFieldNodeGen;
113112
import org.truffleruby.language.objects.ShapeCachingGuards;
@@ -142,6 +141,7 @@
142141
import com.oracle.truffle.api.nodes.IndirectCallNode;
143142
import com.oracle.truffle.api.nodes.Node;
144143
import com.oracle.truffle.api.object.DynamicObject;
144+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
145145
import com.oracle.truffle.api.object.Property;
146146
import com.oracle.truffle.api.object.Shape;
147147
import com.oracle.truffle.api.profiles.BranchProfile;
@@ -496,7 +496,11 @@ private void copyInstanceVariables(DynamicObject from, DynamicObject to) {
496496
// Concurrency: OK if callers create the object and publish it after copy
497497
// Only copy user-level instance variables, hidden ones are initialized later with #initialize_copy.
498498
for (Property property : getCopiedProperties(from.getShape())) {
499-
to.define(property.getKey(), property.get(from, from.getShape()), property.getFlags());
499+
DynamicObjectLibrary.getUncached().putWithFlags(
500+
to,
501+
property.getKey(),
502+
property.get(from, from.getShape()),
503+
property.getFlags());
500504
}
501505
}
502506

@@ -1010,8 +1014,7 @@ protected boolean isInstanceVariableDefinedSymbolOrNil(RubySymbol object, String
10101014
@Specialization
10111015
protected boolean isInstanceVariableDefined(DynamicObject object, String name) {
10121016
final String ivar = SymbolTable.checkInstanceVariableName(getContext(), name, object, this);
1013-
final Property property = object.getShape().getProperty(ivar);
1014-
return PropertyFlags.isDefined(property);
1017+
return object.getShape().hasProperty(ivar);
10151018
}
10161019

10171020
}
@@ -1072,26 +1075,17 @@ protected Object removeInstanceVariable(DynamicObject object, String name) {
10721075
removeField(object, name);
10731076
}
10741077
} else {
1075-
if (!object.delete(name)) {
1076-
throw new RaiseException(
1077-
getContext(),
1078-
coreExceptions().nameErrorInstanceVariableNotDefined(name, object, this));
1079-
}
1078+
removeField(object, name);
10801079
}
10811080
return value;
10821081
}
10831082

10841083
private void removeField(DynamicObject object, String name) {
1085-
Shape shape = object.getShape();
1086-
Property property = shape.getProperty(name);
1087-
if (!PropertyFlags.isDefined(property)) {
1084+
if (!DynamicObjectLibrary.getUncached().removeKey(object, name)) {
10881085
throw new RaiseException(
10891086
getContext(),
10901087
coreExceptions().nameErrorInstanceVariableNotDefined(name, object, this));
10911088
}
1092-
1093-
Shape newShape = shape.replaceProperty(property, PropertyFlags.asRemoved(property));
1094-
object.setShapeAndGrow(shape, newShape);
10951089
}
10961090
}
10971091

src/main/java/org/truffleruby/core/support/TypeNodes.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,13 @@
3535
import org.truffleruby.core.string.StringNodes;
3636
import org.truffleruby.core.symbol.RubySymbol;
3737
import org.truffleruby.language.NotProvided;
38-
import org.truffleruby.language.library.RubyLibrary;
3938
import org.truffleruby.language.RubyNode;
4039
import org.truffleruby.language.control.RaiseException;
40+
import org.truffleruby.language.library.RubyLibrary;
4141
import org.truffleruby.language.objects.IsANode;
4242
import org.truffleruby.language.objects.LogicalClassNode;
4343
import org.truffleruby.language.objects.ObjectIVarGetNode;
4444
import org.truffleruby.language.objects.ObjectIVarSetNode;
45-
import org.truffleruby.language.objects.PropertyFlags;
4645

4746
import com.oracle.truffle.api.CompilerDirectives;
4847
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
@@ -131,7 +130,7 @@ protected DynamicObject instanceVariables(DynamicObject object) {
131130

132131
for (Property property : shape.getProperties()) {
133132
Object name = property.getKey();
134-
if (PropertyFlags.isDefined(property) && name instanceof String) {
133+
if (name instanceof String) {
135134
names.add((String) name);
136135
}
137136
}
@@ -187,8 +186,7 @@ public abstract static class ObjectIVarIsDefinedNode extends PrimitiveArrayArgum
187186
@Specialization
188187
protected Object ivarIsDefined(DynamicObject object, RubySymbol name) {
189188
final String ivar = name.getString();
190-
final Property property = object.getShape().getProperty(ivar);
191-
return PropertyFlags.isDefined(property);
189+
return object.getShape().hasProperty(ivar);
192190
}
193191

194192
}

src/main/java/org/truffleruby/language/objects/HasFieldNode.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.oracle.truffle.api.dsl.ReportPolymorphism;
2121
import com.oracle.truffle.api.dsl.Specialization;
2222
import com.oracle.truffle.api.object.DynamicObject;
23-
import com.oracle.truffle.api.object.Property;
2423
import com.oracle.truffle.api.object.Shape;
2524

2625
@ReportPolymorphism
@@ -41,8 +40,8 @@ public static HasFieldNode create() {
4140
protected boolean hasFieldCached(DynamicObject receiver, Object name,
4241
@Cached("receiver.getShape()") Shape cachedShape,
4342
@Cached("name") Object cachedName,
44-
@Cached("getProperty(cachedShape, cachedName)") Property cachedProperty) {
45-
return cachedProperty != null;
43+
@Cached("cachedShape.hasProperty(cachedName)") boolean hasProperty) {
44+
return hasProperty;
4645
}
4746

4847
@Specialization(guards = "updateShape(object)")
@@ -54,17 +53,7 @@ protected boolean updateShapeAndHasField(DynamicObject object, Object name) {
5453
@Specialization(replaces = { "hasFieldCached", "updateShapeAndHasField" })
5554
protected boolean hasFieldUncached(DynamicObject receiver, Object name) {
5655
final Shape shape = receiver.getShape();
57-
final Property property = getProperty(shape, name);
58-
return property != null;
59-
}
60-
61-
@TruffleBoundary
62-
public static Property getProperty(Shape shape, Object name) {
63-
Property property = shape.getProperty(name);
64-
if (!PropertyFlags.isDefined(property)) {
65-
return null;
66-
}
67-
return property;
56+
return shape.hasProperty(name);
6857
}
6958

7059
protected int getCacheLimit() {

0 commit comments

Comments
 (0)