Skip to content

Commit 1dc57b4

Browse files
committed
Remove Hash#_get_or_undefined
1 parent 3fb6552 commit 1dc57b4

File tree

5 files changed

+11
-8
lines changed

5 files changed

+11
-8
lines changed

lib/truffle/truffle/cext.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,10 @@ def rb_ident_hash_new
903903
{}.compare_by_identity
904904
end
905905

906+
def rb_hash_get_or_undefined(hash, key)
907+
Primitive.hash_get_or_undefined(hash, key)
908+
end
909+
906910
def rb_hash_set_ifnone(hash, value)
907911
hash.default = value
908912
end

spec/tags/truffle/methods_tags.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ fails:Public methods on Float should include positive?
1414
fails:Public methods on Float should include zero?
1515
fails:Public methods on Hash should include any?
1616
fails:Public methods on Hash should not include __store__
17-
fails:Public methods on Hash should not include _get_or_undefined
1817
fails:Public methods on Hash should not include collect
1918
fails:Public methods on Hash should not include map
2019
fails:Public methods on Hash should not include sort

src/main/c/cext/hash.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ VALUE rb_hash_lookup(VALUE hash, VALUE key) {
4848
}
4949

5050
VALUE rb_hash_lookup2(VALUE hash, VALUE key, VALUE default_value) {
51-
VALUE result = RUBY_INVOKE(hash, "_get_or_undefined", key);
51+
VALUE result = RUBY_CEXT_INVOKE("rb_hash_get_or_undefined", hash, key);
5252
if (result == Qundef) {
5353
result = default_value;
5454
}

src/main/java/org/truffleruby/core/hash/HashNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,8 @@ public Object accept(VirtualFrame frame, Object hash, Object key) {
231231

232232
}
233233

234-
@CoreMethod(names = "_get_or_undefined", required = 1)
235-
public abstract static class GetOrUndefinedNode extends CoreMethodArrayArgumentsNode implements BiFunctionNode {
234+
@Primitive(name = "hash_get_or_undefined")
235+
public abstract static class GetOrUndefinedNode extends PrimitiveArrayArgumentsNode implements BiFunctionNode {
236236

237237
@Child private HashLookupOrExecuteDefaultNode lookupNode = HashLookupOrExecuteDefaultNode.create();
238238

src/main/ruby/truffleruby/core/hash.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def eql_op(op, other)
143143

144144
Truffle::ThreadOperations.detect_pair_recursion self, other do
145145
each_pair do |key, value|
146-
other_value = other._get_or_undefined(key)
146+
other_value = Primitive.hash_get_or_undefined(other, key)
147147

148148
# Other doesn't even have this key
149149
return false if Primitive.undefined?(other_value)
@@ -220,7 +220,7 @@ def deconstruct_keys(keys)
220220
end
221221

222222
def fetch(key, default=undefined)
223-
value = _get_or_undefined(key)
223+
value = Primitive.hash_get_or_undefined(self, key)
224224
unless Primitive.undefined?(value)
225225
return value
226226
end
@@ -342,7 +342,7 @@ def select!
342342
def slice(*keys)
343343
res = {}
344344
keys.each do |k|
345-
v = _get_or_undefined(k)
345+
v = Primitive.hash_get_or_undefined(self, k)
346346
res[k] = v unless Primitive.undefined?(v)
347347
end
348348
res
@@ -428,7 +428,7 @@ def inspect
428428
alias_method :to_s, :inspect
429429

430430
def key?(key)
431-
!Primitive.undefined?(_get_or_undefined(key))
431+
!Primitive.undefined?(Primitive.hash_get_or_undefined(self, key))
432432
end
433433
alias_method :has_key?, :key?
434434
alias_method :include?, :key?

0 commit comments

Comments
 (0)