| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
If a terminating ractor has child threads, then kill all child
threads.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The timer function used on windows system set timer interrupt
flag of current main ractor's executing ec and thread can detect
the end of time slice. However, to set all ec->interrupt_flag for
all running ractors, it is requires to synchronize with other ractors.
However, timer thread can not acquire the ractor-wide lock because
of some limitation.
To solve this issue, this patch introduces USE_VM_CLOCK compile option
to introduce rb_vm_t::clock. This clock will be incremented by the
timer thread and each thread can check the incrementing by comparison
with previous checked clock. At last, on windows platform this patch
introduces some overhead, but I think there is no critical performance
issue because of this modification.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
https://github.com/ruby/racc/commit/2cb3055a73
|
|
|
|
| |
https://github.com/ruby/racc/commit/cf37713895
|
|
|
|
| |
https://github.com/ruby/racc/commit/7c881cd548
|
|
|
|
| |
- ext/win32/lib/win32/sspi.rb: Use fiddle (win32/importer) instead of Win32API
|
| |
|
| |
|
| |
|
|
|
|
|
| |
iv_index_tbl_newsize() usually returns iv_index_tbl->num_entries
because ivup->iv_extended is usually false.
|
|
|
|
|
|
|
|
|
| |
Racc calls `Array#sort!` to build a state transition table. As
`Array#sort!` is not a stable sort, the output may differ depending upon
the environment.
This changeset makes the sort stable manually, and updates all
expectation files.
|
|
|
|
|
|
|
| |
This benchmark demonstrates the performance of setting an instance
variable when the type of object is constantly changing. This benchmark
should give us an idea of the performance of ivar setting in a
polymorphic environment
|
|
|
|
|
|
| |
This commit adds a debug counter for the case where the inline cache
*missed* but the ivar index table has an entry for that ivar. This is a
case where a polymorphic cache could help
|
|
|
|
|
| |
If the ivar index table exists, we can avoid the slowest path for
setting ivars.
|
|
|
|
|
| |
rb_vm_add_root_module() is enough to make sure the object become a GC
root.
|
| |
|
| |
|
| |
|
|
|
| |
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
|
|
|
|
|
|
|
| |
iv tables cannot shrink. If the inline cache was ever set, then there
must be an entry for the instance variable in the iv table. Just set
the iv list on the object to be equal to the iv index table size, then
set the iv.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the inline cache is written, the iv table will contain an entry for
the instance variable. If we get an inline cache hit, then we know the
iv table must contain a value for the index written to the inline cache.
If the index in the inline cache is larger than the list on the object,
but *smaller* than the iv index table on the class, then we can just
eagerly allocate the iv list to be the same size as the iv index table.
This avoids duplicate work of checking frozen as well as looking up the
index for the particular instance variable name.
|
| |
|
| |
|
| |
|
|
|
|
| |
* Now that it works correctly.
|
| |
|
| |
|
| |
|
|
|
|
| |
duration is nil.
|
|
|
|
|
|
| |
When a scheduler is present, it's entirely possible for
`th->keeping_mutexes` to be updated while enumerating the waitq. Therefore
it must be fetched only during the removal operation.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Now that it should work correctly, test that every address returned
by Socket.ip_address_list is resolvable.
Socket works with IPv6 link local addresses, and ipaddr now does
as well, so I think resolv should support them.
Fixes [Bug #17112]
|
| |
|
|
|
|
|
|
|
|
|
| |
Once a response for a given DNS request has been received (which
requires a matching message id), the [sender, message_id] pair
should be removed from the list of valid senders. This makes it
so duplicate responses from the same sender are ignored.
Fixes [Bug #12838]
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
T_DATA objects can refer unshareable objects and they should be
copied recursively, however there is no way to replace with copied
unshareable objects. However, if a T_DATA object refers only
shareable objects, there is no need to replace. So this kind of
T_DATA object (such as Time, Dir, File::Status and so on) can be
sent by Ractor.send.
|
| |
|
| |
|