Граф коммитов

58909 Коммитов

Автор SHA1 Сообщение Дата
Yusuke Endoh 882179a0ec tool/mk_builtin_loader.rb: check if op is an array or not
The insn array includes not only an array but also some literal objects.
2019-11-08 23:29:50 +09:00
Nobuyoshi Nakada 11e21f1982
Make prefix static 2019-11-08 23:00:36 +09:00
Nobuyoshi Nakada ff2d99406d
Update builtin include files 2019-11-08 22:31:44 +09:00
Nobuyoshi Nakada 7acf7a4f90
Add VPATH to rbinc rule for nmake 2019-11-08 18:49:18 +09:00
卜部昌平 e02b819482 delete cc->aux.inc_sp
Nobody uses it.
2019-11-08 16:38:06 +09:00
Nobuyoshi Nakada 2e29b65109
Add file mode to generated files [ci skip] 2019-11-08 16:37:42 +09:00
Nobuyoshi Nakada 99b1c19be4
builtin.h must be included *AFTER* vm_core.h 2019-11-08 16:31:57 +09:00
Nobuyoshi Nakada 20971799f2
Renamed `load_*.inc` as `*.rbinc` to utilize a suffix rule 2019-11-08 16:30:28 +09:00
aycabta 6e72b72881 Suppress "shadowing outer local variable" warning in 2.5 2019-11-08 16:18:36 +09:00
Koichi Sasada 83c563cfa4 cstr -> bytes
rb_iseq_ibf_load_cstr() accepts bytes, but not NUL-terminate
C string. To make it clear, rename it to _bytes.
2019-11-08 16:16:25 +09:00
Koichi Sasada 0b29662606 fix line break code (fix to LF) 2019-11-08 15:32:01 +09:00
Koichi Sasada 054cb6d389 forget to add gc.rb 2019-11-08 15:29:59 +09:00
Koichi Sasada 8fa41971c2 use builtins for GC.
Define a part of GC in gc.rb.
2019-11-08 15:29:02 +09:00
Koichi Sasada 2eb02dfd3b Stop compiling if type mismatch was found.
If there is a type mismatch between expected builtin function type
and actual function type, C compiler shows warning.

For example, `__builtin_func(1, 2)` expects
`func(rb_ec_t*, VALUE self, VALUE p1, VALUE p2)` function definition.

However, it is easy to overlook "warning" messages. So this patch
changes to stop compiling as an error if there is a mismatch.
2019-11-08 15:29:02 +09:00
Nobuyoshi Nakada 0ad0a8ff58
builtin.h must be included *AFTER* vm_core.h 2019-11-08 14:26:21 +09:00
Nobuyoshi Nakada 61cff5c51c
Removed BOM [ci skip] 2019-11-08 13:21:29 +09:00
Kazuki Tsujimoto cfccd59cb1
Fix typo 2019-11-08 12:44:31 +09:00
卜部昌平 90fc555258 name the result of calccall
This is a pure refactoring for better understanding of what is
happening here.  Should change nothing but readability.
2019-11-08 12:09:01 +09:00
Kazuki Tsujimoto d4da74ea78
Define Struct#deconstruct_keys 2019-11-08 11:37:46 +09:00
卜部昌平 7661150109 revival of __func__
dad2abc69f deleted __func__ but ruby
already use this feature under RUBY_FUNCTION_NAME_STRING macro.
Use it.
2019-11-08 11:12:01 +09:00
卜部昌平 a1a08ac9aa describe vm_cache_check_for_class_serial [ci skip]
Added comments describing what it is.  Requested by ko1.
2019-11-08 10:31:06 +09:00
Koichi Sasada eaa011ffdb Change requirements of BASERUBY.
"BASERUBY: Ruby 1.9.3" test on Travis-CI checks builds on Ruby 1.9.3.
However this version is too old and 46acd0075d requires Ruby 2.2 and
later.
2019-11-08 10:10:37 +09:00
Koichi Sasada 365557f111 Define IO#read/write_nonblock with builtins.
IO#read/write_nonblock methods are defined in prelude.rb with
special private method __read/write_nonblock to reduce keyword
parameters overhead. We can move them into io.rb with builtin
functions.
2019-11-08 10:03:19 +09:00
Koichi Sasada dad2abc69f do not use __func__.
Microsoft Visual Studio 12.0 doesn't support it.
2019-11-08 10:03:19 +09:00
Koichi Sasada 08ff9edb53 fix line break code (fix to LF) 2019-11-08 09:30:11 +09:00
Koichi Sasada 46b9ca6c54 fix type 2019-11-08 09:26:16 +09:00
git 4c00b9e8eb * remove trailing spaces. [ci skip] 2019-11-08 09:09:47 +09:00
Koichi Sasada a47d058ebf use builtin for RubyVM::AbstractSyntaxTree.
Define RubyVM::AbstractSyntaxTree in ast.rb
with __builtin functions.
2019-11-08 09:09:29 +09:00
Koichi Sasada e2a45cb984 use builtin for TracePoint.
Define TracePoint in trace_point.rb and use __builtin_ syntax.
2019-11-08 09:09:29 +09:00
Koichi Sasada 46acd0075d support builtin features with Ruby and C.
Support loading builtin features written in Ruby, which implement
with C builtin functions.
[Feature #16254]

Several features:

(1) Load .rb file at boottime with native binary.

Now, prelude.rb is loaded at boottime. However, this file is contained
into the interpreter as a text format and we need to compile it.
This patch contains a feature to load from binary format.

(2) __builtin_func() in Ruby call func() written in C.

In Ruby file, we can write `__builtin_func()` like method call.
However this is not a method call, but special syntax to call
a function `func()` written in C. C functions should be defined
in a file (same compile unit) which load this .rb file.

Functions (`func` in above example) should be defined with
  (a) 1st parameter: rb_execution_context_t *ec
  (b) rest parameters (0 to 15).
  (c) VALUE return type.
This is very similar requirements for functions used by
rb_define_method(), however `rb_execution_context_t *ec`
is new requirement.

(3) automatic C code generation from .rb files.

tool/mk_builtin_loader.rb creates a C code to load .rb files
needed by miniruby and ruby command. This script is run by
BASERUBY, so *.rb should be written in BASERUBY compatbile
syntax. This script load a .rb file and find all of __builtin_
prefix method calls, and generate a part of C code to export
functions.

tool/mk_builtin_binary.rb creates a C code which contains
binary compiled Ruby files needed by ruby command.
2019-11-08 09:09:29 +09:00
Aaron Patterson dddf5afb79
Add a counter for compaction
Keep track of the number of times the compactor ran.  I would like to
use this as a way to keep track of inline cache reference updates.
2019-11-07 12:46:14 -08:00
git 597ec43543 * 2019-11-08 [ci skip] 2019-11-08 02:31:29 +09:00
John Hawthorn b99833baec
Use a monotonically increasing number for object_id
This changes object_id from being based on the objects location in
memory (or a nearby memory location in the case of a conflict) to be
based on an always increasing number.

This number is a Ruby Integer which allows it to overflow the size of a
pointer without issue (very unlikely to happen in real programs
especially on 64-bit, but a nice guarantee).

This changes obj_to_id_tbl and id_to_obj_tbl to both be maps of Ruby
objects to Ruby objects (previously they were Ruby object to C integer)
which simplifies updating them after compaction as we can run them
through gc_update_table_refs.

Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2019-11-07 09:31:07 -08:00
Nobuyoshi Nakada d62abc47c8
Suppress unused variable warning 2019-11-07 23:33:45 +09:00
NARUSE, Yui 6aa80d5583 Use FIX2LONG instead of FIX2INT like 26843cbcd0 2019-11-07 18:53:51 +09:00
NARUSE, Yui 26843cbcd0 Use FIX2LONG to avoid unexpected exception
Though it won't happen in the real world in this context, FIX2INT may
raise an exception and it cause to generate extra code.
2019-11-07 18:50:35 +09:00
卜部昌平 d45a013a1a extend rb_call_cache
Prior to this changeset, majority of inline cache mishits resulted
into the same method entry when rb_callable_method_entry() resolves
a method search.  Let's not call the function at the first place on
such situations.

In doing so we extend the struct rb_call_cache from 44 bytes (in
case of 64 bit machine) to 64 bytes, and fill the gap with
secondary class serial(s).  Call cache's class serials now behavies
as a LRU cache.

Calculating -------------------------------------
                           ours         2.7         2.6
vm2_poly_same_method     2.339M      1.744M      1.369M i/s - 6.000M times in 2.565086s 3.441329s 4.381386s

Comparison:
             vm2_poly_same_method
                ours:   2339103.0 i/s
                 2.7:   1743512.3 i/s - 1.34x  slower
                 2.6:   1369429.8 i/s - 1.71x  slower
2019-11-07 17:41:30 +09:00
Hiroshi SHIBATA 3c252651e1
Fixed test failure related Net::Protocol 2019-11-07 17:09:22 +09:00
Hiroshi SHIBATA c916f9600b
SMTP is not module 2019-11-07 16:44:38 +09:00
Hiroshi SHIBATA fc85bdeb77
Promote cgi to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA 223d3c460a
Promote net-smtp to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA eb0b13596d
Promote net-pop to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA 77c94e0dd8
Promote benchmark to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA 1159dbf305
Promote delegate to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA 3b0bd34001
Promote pstore to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA 6797c3e371
Promote getoptlong to default gems 2019-11-07 16:36:14 +09:00
Hiroshi SHIBATA 478f6e2b34
Fixed an Errno::ENOENT with non-test libraries 2019-11-07 16:36:13 +09:00
Kazuki Tsujimoto a396bef8d8
Disallow duplicated pattern variable 2019-11-07 15:40:35 +09:00
Kazuki Tsujimoto 1e620c67af
Add missing semicolon 2019-11-07 13:20:11 +09:00
Aaron Patterson d0d743ad45
Remove duplicate code
These functions are the same, so remove one.

Co-authored-by: John Hawthorn <john@hawthorn.email>
2019-11-06 16:31:55 -08:00