1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

integer.rbinc: do not generate C functions

This changeset changes for instance Integer#integer? from:

    == disasm: #<ISeq:to_i@<internal:integer>:66 (66,2)-(69,5)> (catch: FALSE)
    0000 opt_invokebuiltin_delegate_leave       <builtin!_bi7/0>, 0       (68)[LiCa]
    0003 leave                                                            (69)[Re]

to:

    == disasm: #<ISeq:to_i@<internal:integer>:66 (66,2)-(69,5)> (catch: FALSE)
    0000 putself                                                          (68)[LiCa]
    0001 leave                                                            (69)[Re]

which is of course faster.
This commit is contained in:
卜部昌平 2020-07-02 09:44:23 +09:00
parent 49029811d9
commit bf3f03c925
Notes: git 2020-07-02 14:35:09 +09:00

View file

@ -23,8 +23,7 @@ class Integer
# #
# Since +int+ is already an Integer, this always returns +true+. # Since +int+ is already an Integer, this always returns +true+.
def integer? def integer?
Primitive.attr! 'inline' return true
Primitive.cexpr! 'Qtrue'
end end
def magnitude def magnitude
@ -53,8 +52,7 @@ class Integer
# #
# For example, <code>?a.ord</code> returns 97 both in 1.8 and 1.9. # For example, <code>?a.ord</code> returns 97 both in 1.8 and 1.9.
def ord def ord
Primitive.attr! 'inline' return self
Primitive.cexpr! 'self'
end end
# call-seq: # call-seq:
@ -64,8 +62,7 @@ class Integer
# #
# #to_int is an alias for #to_i. # #to_int is an alias for #to_i.
def to_i def to_i
Primitive.attr! 'inline' return self
Primitive.cexpr! 'self'
end end
# call-seq: # call-seq:
@ -73,8 +70,7 @@ class Integer
# #
# Since +int+ is already an Integer, returns +self+. # Since +int+ is already an Integer, returns +self+.
def to_int def to_int
Primitive.attr! 'inline' return self
Primitive.cexpr! 'self'
end end
# call-seq: # call-seq: