Skip to content

Commit 9f9ef6f

Browse files
committed
[GR-19768] Update Truffle/Sulong import.
PullRequest: fastr/2515
2 parents 6746faa + 0ce3748 commit 9f9ef6f

26 files changed

+136
-110
lines changed

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/DatePOSIXFunctions.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,15 @@
3737
import java.time.LocalDate;
3838
import java.time.LocalDateTime;
3939
import java.time.LocalTime;
40+
import java.time.Month;
4041
import java.time.ZoneId;
4142
import java.time.ZoneOffset;
4243
import java.time.ZonedDateTime;
43-
import java.time.chrono.Chronology;
4444
import java.time.chrono.ChronoLocalDate;
4545
import java.time.chrono.ChronoLocalDateTime;
4646
import java.time.chrono.ChronoPeriod;
4747
import java.time.chrono.ChronoZonedDateTime;
48+
import java.time.chrono.Chronology;
4849
import java.time.chrono.Era;
4950
import java.time.chrono.IsoChronology;
5051
import java.time.format.DateTimeFormatter;
@@ -68,8 +69,7 @@
6869
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
6970
import com.oracle.truffle.api.dsl.Cached;
7071
import com.oracle.truffle.api.dsl.Specialization;
71-
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
72-
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.SetClassAttributeNode;
72+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
7373
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
7474
import com.oracle.truffle.r.runtime.RError;
7575
import com.oracle.truffle.r.runtime.RError.Message;
@@ -79,13 +79,13 @@
7979
import com.oracle.truffle.r.runtime.context.RContext;
8080
import com.oracle.truffle.r.runtime.data.RDataFactory;
8181
import com.oracle.truffle.r.runtime.data.RDoubleVector;
82-
import com.oracle.truffle.r.runtime.data.RList;
8382
import com.oracle.truffle.r.runtime.data.RIntVector;
84-
import com.oracle.truffle.r.runtime.data.model.RAbstractListVector;
83+
import com.oracle.truffle.r.runtime.data.RList;
8584
import com.oracle.truffle.r.runtime.data.RStringVector;
85+
import com.oracle.truffle.r.runtime.data.model.RAbstractListVector;
8686
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
87-
88-
import java.time.Month;
87+
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
88+
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.SetClassAttributeNode;
8989

9090
// from GnuR datatime.c
9191

@@ -814,7 +814,7 @@ private static int max(int... values) {
814814
}
815815

816816
private static String getTimeZomeFromAttribute(RAbstractListVector x) {
817-
Object attr = x.getAttributes().get("tzone");
817+
Object attr = DynamicObjectLibrary.getUncached().getOrDefault(x.getAttributes(), "tzone", "");
818818
RAbstractVector vector = (RAbstractVector) RRuntime.asAbstractVector(attr);
819819
if (vector.getLength() == 0) {
820820
return "";

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Identical.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,9 @@
3838
import com.oracle.truffle.api.interop.TruffleObject;
3939
import com.oracle.truffle.api.library.CachedLibrary;
4040
import com.oracle.truffle.api.object.DynamicObject;
41+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
4142
import com.oracle.truffle.api.profiles.ConditionProfile;
4243
import com.oracle.truffle.api.profiles.ValueProfile;
43-
import com.oracle.truffle.r.runtime.data.VectorDataLibrary;
44-
import com.oracle.truffle.r.runtime.data.nodes.attributes.GetAttributeNode;
45-
import com.oracle.truffle.r.runtime.data.nodes.attributes.IterableAttributeNode;
46-
import com.oracle.truffle.r.runtime.data.nodes.attributes.IterableAttributeNodeGen;
47-
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetRowNamesAttributeNode;
4844
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
4945
import com.oracle.truffle.r.nodes.builtin.base.IdenticalFactory.IdenticalInternalNodeGen;
5046
import com.oracle.truffle.r.runtime.DSLConfig;
@@ -63,8 +59,13 @@
6359
import com.oracle.truffle.r.runtime.data.RS4Object;
6460
import com.oracle.truffle.r.runtime.data.RSymbol;
6561
import com.oracle.truffle.r.runtime.data.RTypes;
62+
import com.oracle.truffle.r.runtime.data.VectorDataLibrary;
6663
import com.oracle.truffle.r.runtime.data.model.RAbstractListBaseVector;
6764
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
65+
import com.oracle.truffle.r.runtime.data.nodes.attributes.GetAttributeNode;
66+
import com.oracle.truffle.r.runtime.data.nodes.attributes.IterableAttributeNode;
67+
import com.oracle.truffle.r.runtime.data.nodes.attributes.IterableAttributeNodeGen;
68+
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetRowNamesAttributeNode;
6869
import com.oracle.truffle.r.runtime.env.REnvironment;
6970
import com.oracle.truffle.r.runtime.nodes.IdenticalVisitor;
7071
import com.oracle.truffle.r.runtime.nodes.RBaseNode;
@@ -155,7 +156,7 @@ private byte identicalAttrInternal(boolean numEq, boolean singleNA, boolean attr
155156
Iterator<RAttributesLayout.RAttribute> xIter = attrIterNodeX.execute(xAttributes).iterator();
156157
while (xIter.hasNext()) {
157158
RAttributesLayout.RAttribute xAttr = xIter.next();
158-
Object yValue = yAttributes.get(xAttr.getName());
159+
Object yValue = DynamicObjectLibrary.getUncached().getOrDefault(yAttributes, xAttr.getName(), null);
159160
if (yValue == null) {
160161
return RRuntime.LOGICAL_FALSE;
161162
}
@@ -168,7 +169,7 @@ private byte identicalAttrInternal(boolean numEq, boolean singleNA, boolean attr
168169
Iterator<RAttributesLayout.RAttribute> yIter = attrIterNodeY.execute(yAttributes).iterator();
169170
while (xIter.hasNext()) {
170171
RAttributesLayout.RAttribute yAttr = yIter.next();
171-
if (!xAttributes.containsKey(yAttr.getName())) {
172+
if (!DynamicObjectLibrary.getUncached().containsKey(xAttributes, yAttr.getName())) {
172173
return RRuntime.LOGICAL_FALSE;
173174
}
174175
}

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Inspect.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
3636
import com.oracle.truffle.api.dsl.Specialization;
3737
import com.oracle.truffle.api.object.DynamicObject;
38+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
3839
import com.oracle.truffle.r.runtime.data.nodes.attributes.GetAttributesNode;
3940
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions;
4041
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
@@ -251,7 +252,7 @@ private void inspectTree(StringBuilder sb, int indent, String label, Object obj,
251252
sb.append("ATTRIB:\n");
252253
for (Object key : attrs.getShape().getKeys()) {
253254
inspectTree(sb, indent + 2, "KEY: ", key, deep - 1, pvec);
254-
inspectTree(sb, indent + 2, "VALUE: ", attrs.get(key), deep - 1, pvec);
255+
inspectTree(sb, indent + 2, "VALUE: ", DynamicObjectLibrary.getUncached().getOrDefault(attrs, key, null), deep - 1, pvec);
255256
}
256257
}
257258
}

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/WriteTable.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
2929
import com.oracle.truffle.api.dsl.Specialization;
30+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
3031
import com.oracle.truffle.r.nodes.builtin.CastBuilder.Predef;
3132
import com.oracle.truffle.r.nodes.builtin.RExternalBuiltinNode;
3233
import com.oracle.truffle.r.nodes.builtin.base.printer.ComplexVectorPrinter;
@@ -39,15 +40,15 @@
3940
import com.oracle.truffle.r.runtime.conn.RConnection;
4041
import com.oracle.truffle.r.runtime.data.RAttributable;
4142
import com.oracle.truffle.r.runtime.data.RComplex;
43+
import com.oracle.truffle.r.runtime.data.RComplexVector;
4244
import com.oracle.truffle.r.runtime.data.RDoubleVector;
45+
import com.oracle.truffle.r.runtime.data.RIntVector;
46+
import com.oracle.truffle.r.runtime.data.RLogicalVector;
4347
import com.oracle.truffle.r.runtime.data.RNull;
4448
import com.oracle.truffle.r.runtime.data.RRaw;
49+
import com.oracle.truffle.r.runtime.data.RRawVector;
4550
import com.oracle.truffle.r.runtime.data.RStringVector;
46-
import com.oracle.truffle.r.runtime.data.RComplexVector;
4751
import com.oracle.truffle.r.runtime.data.model.RAbstractContainer;
48-
import com.oracle.truffle.r.runtime.data.RIntVector;
49-
import com.oracle.truffle.r.runtime.data.RLogicalVector;
50-
import com.oracle.truffle.r.runtime.data.RRawVector;
5152
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
5253

5354
//Transcribed from GnuR, library/utils/src/io.c
@@ -150,7 +151,7 @@ private static void executeDataFrame(RConnection con, RAbstractVector x, int nr,
150151
throw new IllegalArgumentException("corrupt data frame -- length of column " + (j + 1) + " does not not match nrows");
151152
}
152153
if (isFactor(xj)) {
153-
levels[j] = (RStringVector) xj.getAttributes().get("levels");
154+
levels[j] = (RStringVector) DynamicObjectLibrary.getUncached().getOrDefault(xj.getAttributes(), "levels", null);
154155
}
155156
} else {
156157
if (nr != 1) {

com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RChannel.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -22,17 +22,22 @@
2222
*/
2323
package com.oracle.truffle.r.runtime;
2424

25+
import static com.oracle.truffle.r.runtime.context.FastROptions.ChannelReceiveTimeout;
26+
import static com.oracle.truffle.r.runtime.env.frame.REnvTruffleFrameAccess.getStringIdentifiersAndValues;
27+
2528
import java.io.IOException;
29+
import java.util.ArrayList;
30+
import java.util.List;
2631
import java.util.concurrent.ArrayBlockingQueue;
2732
import java.util.concurrent.Semaphore;
33+
import java.util.concurrent.TimeUnit;
2834

2935
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
3036
import com.oracle.truffle.api.RootCallTarget;
3137
import com.oracle.truffle.api.frame.FrameDescriptor;
3238
import com.oracle.truffle.api.frame.MaterializedFrame;
3339
import com.oracle.truffle.api.object.DynamicObject;
34-
import static com.oracle.truffle.r.runtime.context.FastROptions.ChannelReceiveTimeout;
35-
40+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
3641
import com.oracle.truffle.r.runtime.builtins.RBuiltinDescriptor;
3742
import com.oracle.truffle.r.runtime.conn.RConnection;
3843
import com.oracle.truffle.r.runtime.context.FastROptions;
@@ -42,20 +47,16 @@
4247
import com.oracle.truffle.r.runtime.data.RAttributesLayout;
4348
import com.oracle.truffle.r.runtime.data.RDataFactory;
4449
import com.oracle.truffle.r.runtime.data.RFunction;
45-
import com.oracle.truffle.r.runtime.data.RPairList;
4650
import com.oracle.truffle.r.runtime.data.RList;
4751
import com.oracle.truffle.r.runtime.data.RNull;
52+
import com.oracle.truffle.r.runtime.data.RPairList;
4853
import com.oracle.truffle.r.runtime.data.RPromise;
4954
import com.oracle.truffle.r.runtime.data.RPromise.PromiseState;
5055
import com.oracle.truffle.r.runtime.data.RSharingAttributeStorage;
5156
import com.oracle.truffle.r.runtime.data.RUnboundValue;
5257
import com.oracle.truffle.r.runtime.env.REnvironment;
5358
import com.oracle.truffle.r.runtime.env.frame.FrameSlotChangeMonitor;
54-
import static com.oracle.truffle.r.runtime.env.frame.REnvTruffleFrameAccess.getStringIdentifiersAndValues;
5559
import com.oracle.truffle.r.runtime.nodes.RSyntaxElement;
56-
import java.util.ArrayList;
57-
import java.util.List;
58-
import java.util.concurrent.TimeUnit;
5960

6061
/**
6162
* Implementation of a channel abstraction used for communication between parallel contexts in
@@ -635,7 +636,7 @@ private DynamicObject createShareableSlow(DynamicObject attr, boolean forceCopy)
635636
// create a shallow copy if not already created
636637
newAttr = RAttributesLayout.copy(attr);
637638
}
638-
newAttr.define(a.getName(), newVal);
639+
DynamicObjectLibrary.getUncached().put(newAttr, a.getName(), newVal);
639640
}
640641
}
641642

com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RAttributable.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -22,14 +22,16 @@
2222
*/
2323
package com.oracle.truffle.r.runtime.data;
2424

25+
import java.util.Iterator;
26+
2527
import com.oracle.truffle.api.CompilerAsserts;
2628
import com.oracle.truffle.api.object.DynamicObject;
29+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
2730
import com.oracle.truffle.api.object.HiddenKey;
2831
import com.oracle.truffle.r.runtime.RError;
2932
import com.oracle.truffle.r.runtime.RRuntime;
3033
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
3134
import com.oracle.truffle.r.runtime.env.REnvironment;
32-
import java.util.Iterator;
3335

3436
/**
3537
* Denotes an R type that can have associated attributes, e.g. {@link REnvironment}
@@ -77,7 +79,7 @@ public final void initAttributes(DynamicObject newAttributes) {
7779
public final Object getAttr(String name) {
7880
CompilerAsserts.neverPartOfCompilation();
7981
DynamicObject attr = getAttributes();
80-
return attr == null ? null : attr.get(name);
82+
return attr == null ? null : DynamicObjectLibrary.getUncached().getOrDefault(attr, name, null);
8183
}
8284

8385
/**
@@ -94,14 +96,14 @@ public void setAttr(String name, Object value) {
9496
* attribute, can't be overridden.
9597
*/
9698
protected final void putAttribute(String name, Object value) {
97-
initAttributes().define(name, value);
99+
DynamicObjectLibrary.getUncached().put(initAttributes(), name, value);
98100
}
99101

100102
public void removeAttr(String name) {
101103
CompilerAsserts.neverPartOfCompilation();
102104
DynamicObject attrs = getAttributes();
103105
if (attrs != null) {
104-
attrs.delete(name);
106+
DynamicObjectLibrary.getUncached().removeKey(attrs, name);
105107
if (attrs.getShape().getPropertyCount() == 0) {
106108
initAttributes(null);
107109
}
@@ -139,7 +141,7 @@ public RAttributable setClassAttr(RStringVector classAttr) {
139141
return setClassAttrInternal(this, classAttr);
140142
}
141143

142-
protected static final RAttributable setClassAttrInternal(RAttributable attributable, RStringVector classAttr) {
144+
protected static RAttributable setClassAttrInternal(RAttributable attributable, RStringVector classAttr) {
143145
if (attributable.attributes == null && classAttr != null && classAttr.getLength() != 0) {
144146
attributable.initAttributes();
145147
}
@@ -154,16 +156,16 @@ protected static final RAttributable setClassAttrInternal(RAttributable attribut
154156
}
155157
}
156158
}
157-
attributable.initAttributes().define(RRuntime.CLASS_ATTR_KEY, classAttr);
159+
DynamicObjectLibrary.getUncached().put(attributable.initAttributes(), RRuntime.CLASS_ATTR_KEY, classAttr);
158160
}
159161
return attributable;
160162
}
161163

162164
protected final void removeAttributeMapping(String key) {
163-
if (this.attributes != null) {
164-
this.attributes.delete(key);
165-
if (this.attributes.getShape().getPropertyCount() == 0) {
166-
this.attributes = null;
165+
if (attributes != null) {
166+
DynamicObjectLibrary.getUncached().removeKey(attributes, key);
167+
if (attributes.getShape().getPropertyCount() == 0) {
168+
attributes = null;
167169
}
168170
}
169171
}

com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RAttributesLayout.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -30,6 +30,7 @@
3030
import com.oracle.truffle.api.CompilerDirectives.ValueType;
3131
import com.oracle.truffle.api.object.DynamicObject;
3232
import com.oracle.truffle.api.object.DynamicObjectFactory;
33+
import com.oracle.truffle.api.object.DynamicObjectLibrary;
3334
import com.oracle.truffle.api.object.Layout;
3435
import com.oracle.truffle.api.object.ObjectType;
3536
import com.oracle.truffle.api.object.Property;
@@ -148,20 +149,17 @@ public static RAttributeIterable asIterable(DynamicObject attrs, AttrsLayout att
148149
@TruffleBoundary
149150
public static DynamicObject copy(DynamicObject attrs) {
150151
assert isRAttributes(attrs);
151-
152-
DynamicObject result = attrs.copy(attrs.getShape());
152+
DynamicObject result = attrs.getShape().newInstance();
153153
Shape shape = result.getShape();
154-
Property prop = shape.getLastProperty();
155-
while (prop != null) {
156-
Object value = result.get(prop.getKey());
154+
for (Object key : shape.getKeys()) {
155+
Object value = DynamicObjectLibrary.getUncached().getOrDefault(attrs, key, null);
156+
DynamicObjectLibrary.getUncached().put(result, key, value);
157157
if (RSharingAttributeStorage.isShareable(value)) {
158158
// There is no simple way to determine the correct reference count here and since
159159
// the value will end up in two attributes collections, it will end up being shared
160160
// most likely anyway.
161161
((RSharingAttributeStorage) value).makeSharedPermanent();
162162
}
163-
shape = shape.getParent();
164-
prop = shape.getLastProperty();
165163
}
166164
return result;
167165
}
@@ -171,7 +169,7 @@ public static void clear(DynamicObject attrs) {
171169
assert isRAttributes(attrs);
172170

173171
for (Property p : attrs.getShape().getProperties()) {
174-
attrs.delete(p.getKey());
172+
DynamicObjectLibrary.getUncached().removeKey(attrs, p.getKey());
175173
}
176174
}
177175

com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RPairList.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.oracle.truffle.api.library.ExportMessage.Ignore;
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.profiles.BranchProfile;
4344
import com.oracle.truffle.api.profiles.ConditionProfile;
4445
import com.oracle.truffle.api.profiles.LoopConditionProfile;
@@ -302,7 +303,7 @@ public static Object asPairList(RAbstractContainer vector, SEXPTYPE type) {
302303
RAttributesLayout.RAttribute attr = iter.next();
303304
String attrName = attr.getName();
304305
if (!(attrName.equals(RRuntime.NAMES_ATTR_KEY) || attrName.equals(RRuntime.DIM_ATTR_KEY) || attrName.equals(RRuntime.DIMNAMES_ATTR_KEY))) {
305-
resultAttrs.define(attrName, attr.getValue());
306+
DynamicObjectLibrary.getUncached().put(resultAttrs, attrName, attr.getValue());
306307
}
307308
}
308309
}
@@ -401,7 +402,7 @@ public RList toRList() {
401402
RAttributesLayout.RAttribute attr = iter.next();
402403
String attrName = attr.getName();
403404
if (!(attrName.equals(RRuntime.NAMES_ATTR_KEY) || attrName.equals(RRuntime.DIM_ATTR_KEY) || attrName.equals(RRuntime.DIMNAMES_ATTR_KEY))) {
404-
resultAttrs.define(attrName, attr.getValue());
405+
DynamicObjectLibrary.getUncached().put(resultAttrs, attrName, attr.getValue());
405406
}
406407
}
407408
}

0 commit comments

Comments
 (0)