Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 77be8e0f3869^
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0e3c56d40c3c
Choose a head ref

Commits on Apr 27, 2017

  1. Copy the full SHA
    77be8e0 View commit details
  2. Copy the full SHA
    c03f49a View commit details
  3. Untag passing Marshal specs.

    headius committed Apr 27, 2017
    Copy the full SHA
    9027e0e View commit details

Commits on Apr 28, 2017

  1. Copy the full SHA
    aac3d9d View commit details
  2. Copy the full SHA
    93e958b View commit details
  3. Copy the full SHA
    9367f58 View commit details
  4. Squashed 'spec/mspec/' changes from 815ee35..8604276

    8604276 Explicitly capture the exception rather than relying on $!
    4ba7a1c Ensure to load a given config file only once
    653a4f2 Return early if $VERBOSE == nil in our Kernel#warn
    c5493b8 Suppress warning for mruby
    f00154f Kernel#warn delegates to Warning.warn in 2.5
    954054c Use Warning.warn and filter warnings on Ruby >= 2.4
    9084b1a Fix failure messages for the complain matcher
    d800cc0 Add a space after the spinner
    2dec262 Remove the :dir option of ruby_exe
    422ec3f Remove unused be_valid_DNS_name helper
    7409884 Remove unused be_computed_by_function matcher
    f6752d2 Use a more precise test for SPEC_TEMP_DIR
    78c25b6 Remove unused #encode helper
    0acde1e Remove unused equal_utf16 matcher
    0e051ef Remove ducktype helpers respond_to, does_not_respond_to, undefine and fake!
    c43b12e Use interpolation
    cbe5276 Build a single instance of the full Ruby version for version guards
    206fb6d Reuse BigEndianGuard for little_endian
    0f302fd Implement as_user with SuperUserGuard
    fb2e2e1 Refactor guards in terms of SpecGuard#run_if and #run_unless
    05f61ba Remove unused SpecGuard#===
    b3e2274 Revert "New feature: automatic alias detection for shared describes"
    3c91dfd Simplify PlatformGuard by replacing .platform? by .os?
    0d4c430 Simplify PlatformGuard.os?
    d764519 Move platform-related guards to PlatformGuard as class methods
    e7e1c8d Simplify SpecGuard#implementation?
    97056be Raise on unknown implementation
    de6a3db Assign SpecGuard @parameters directly
    455b37d Save guards arguments consistently in @parameters
    2d80202 Remove old aliases for --target
    6bc027d Prefer ! to the not keyword
    ac10ab7 Remove unused with_tty guard
    9304394 Remove unused runner_is/runner_is_not guards
    6a3bbba Remove deprecated extended_on guard
    cbb7e27 Remove compliance guards: compliant_on, not_compliant_on, deviates_on
    b3089d3 Remove unused unspecified and specified_on guards
    fc64021 Remove deprecated raise_exception alias
    c1de623 Remove deprecated have_data matcher
    0ba63fe Remove deprecated hash_class and new_hash helpers
    65d20c3 Remove deprecated stasy helper
    99c8814 Remove singleton_class helper, it is standard Ruby
    5cc2cf0 Remove deprecated enumerator_class
    8e8988c Remove unused home_directory helper
    84f5870 Remove unused hostname helper
    5b9f1ed Remove unused method
    aa103d1 Remove unused dev_null helper
    386166f Remove unused #username helper
    1c4a2d3 Use ENV instead of shelling out
    e26e0a3 Remove unused #env helper
    1f64bb5 Fix PlatformGuard.opal?
    488ee67 Use a sensible implementation for the abstract SpecGuard#match?
    ae78872 Remove unused SpecGuard#ruby_version_override
    cc56b44 Remove the --background option
    245a9e8 Test that running mspec-run directly works as expected
    2c30be2 Share common output in run integration specs
    76268e0 Add tool to remove old version guards in ruby/spec
    11cb22f Move require 'etc' to where it is needed
    f64f5ec Use Etc.nprocessors
    42e9c9b Update Ruby versions for Travis
    55568ea Drop support for Ruby < 2.2
    bcfb181 Don't exclude constants from the stdlib in NameMap
    1754624 Pass --unguarded in mkspec to also see specs on other platforms
    14464e1 Allow to generate specs for Etc with mkspec
    3db264b Should fail if any worker failed
    f764643 Add an intergation test for mspec -j
    ba0236c Run no more processes than spec files
    aec10fd Warn about using "" as the end of a version Range
    2d4578b Add a few specs for version Range starting with an empty String
    06cae5a Deprecate ruby_bug without a version Range
    33e7136 Use the helper to hide our own deprecations in tests
    6856ff8 Support a version Range for ruby_bug
    5404094 Rename the config key for -I to :loadpath
    61d2f84 Initialize other config keys in MSpecMain
    
    git-subtree-dir: spec/mspec
    git-subtree-split: 8604276a6cdfd83c85aecfccfe32f6cea8acab8a
    eregon committed Apr 28, 2017
    Copy the full SHA
    f55cff5 View commit details
  5. Copy the full SHA
    7e0e5c2 View commit details
  6. Squashed 'spec/ruby/' changes from 2e2057a..0db663b

    0db663b Fixed Math.log2 for huge Bignums.
    bc52723 Added {Bignum, Fixnum}.bit_length.
    aad92e8 Numeric timezone may not be bad
    1eb3d2f Add specs for rb_define_module
    8e8b5fd Fix SHELL env var passing
    f7ec5b7 Hide $IGNORECASE warnings
    344bd8d Use ruby_exe to reliably spawn a subprocess
    946abd5 Remove spec which only works before MRI 2.4.0
    e6665ae Add a spec for syntax errors in the script file and -e
    497931b Add new method spec with mixed parameter types.
    4042b46 Add large number example to String#% binary number format
    61acec4 Add String#% %p example with string argument
    9a8fd6d Add library specs for the English module
    ed5046a Updated incomplete String#encoding spec.
    279d4e0 Add instance_variable_defined? example testing various types where variable is not defined
    b89895d Fix typo in spec description
    4fefa64 Specs for true and false values being truthy and falsey in C
    1d8bcf0 Add another Time#zone bad zone example
    6af9b04 Add Module#alias_method spec to assert that aliased methods are == to eachother
    b2c2eeb Add Kernel#eval negative line number spec
    5c0bd7b Add BasicObject#instance_eval example with negative line number
    26d35a1 Spec that a splatted Array received in a rest argument is copied
    4a8d694 Only use literal values in the expected value
    4af8050 Add splat example where splatted array is modified by another argument
    1274e6a Add spec to update backtrace array in place
    11db149 It starts to look like something to unescape but it ends prematurely.  Do not expand (nor crash)
    c9e7f56 Allow .jar as extension of provided features
    c1f379e Reduce sleep time in Process.daemon specs
    24282dc Method#curry_spec: Be more explicit with simpler syntax
    ec31710 Move methods used only once closer to their usage
    1f537ff Move fixture closer to its only usage
    ca345d3 Revert "Kerenel#warn no longer splats an array in 2.5 (#382)" (#429)
    7beafc0 Handle warnings in MOdule#attr spec
    b79cf54 Concurrent requires show erroneous circular warnings
    acb27a7 Expect warnings for circular require
    c3256dc Fix commented warning net/http specs
    897e9b4 No need to save/restore $VERBOSE when using the complain matcher
    416ab81 2.5 no longer rescue exceptions of Integer#step to rethrow them as TypeError
    f125a5d Numeric comparison operators no longer rescue exceptions
    14bd5a4 Fix a few issues detected with $VERBOSE = true warnings
    b53aa1b internal methods are not specs
    7190a66 Remove duplicate specs
    4753368 Fix some variables which were not availble for specdocs
    bd885a6 Fix version-dependent warnings
    26d13c0 Use the argv helper in getoptlong specs
    3ba4551 Fix warnings in IO spec
    a799f55 Remove continuation specs, continuation is obsolete since 2.2
    328c7d8 Fix all warnings
    8a491a9 Fix warnings in C-API specs
    6227caa Fix remaining warnings in language specs
    729a0ec Fix a few warnings in language
    ee5b6a0 fix warning
    863c8ac Expect circular argument warnings
    eeef0e7 Fix class variable warnings in langauge specs
    ccaf342 Fix remaining warnings in core
    388adda Fix Kernel#=== spec
    1ac4d2a Expect warnings from top-level class vars
    f327217 Add expectations for argument + block warnings
    1a42389 Add expectations for Ignoring encoding parameter warnings
    dc2fd40 Fix a few more constant redefined warnings
    4756e8d Avoid 2 already initialized constant warnings
    faaf5ab Use local variables instead of constants in define_method spec
    8341bb2 Catch warning in deprecate_constant spec
    3940632 Remove unused constant
    4280c78 Use Dir.chdir directly instead of relying on ruby_exe
    4b9a0f3 Wrap a few warnings as complain matchers
    50357ca Replace deprecated Enumerator.new(obj) with obj.to_enum
    b416c79 Remove deprecated usage of $KCODE in specs
    b37650b Inline MSpec helper used only twice in the same file
    579055b Avoid be_computed_by_function
    8fea4ed Simply perform the action over using weird MSpec helpers
    735ee77 Unshare Process#spawn and Process#exec specs
    0a56f79 Avoid running #exec-related specs 3 times
    5ca04db Avoid running #spawn-related specs 3 times
    fd91fee Use the full bug version Range as AppVeyor uses an older 2.3.3 Ruby
    7b0bf1a Reintroduce bug guard as 2.4.1 is not available on Travis OS X yet
    7bbadd1 Update versions
    5bb0536 The bug has been fixed in all latest 2.x releases
    8ca440d Add spec for identity of String literals in a compare_by_identity Hash
    c6704df Opal strings are always frozen, avoid dup & clone
    556a6db Also exclude AIX from log specs as it was before
    9266dc7 Exclude Solaris from Syslog specs as it was before
    fead51e Fix platform guard
    44c0278 Simplify platform_is os: VALUE to just platform_is VALUE as they are the same now
    5a17f65 platform guard requires OS name list, not an array
    cd7e2f7 Fix platform guard in Float#round spec
    c698d12 Merge pull request #426 from ruby/removed-deprecated-mathn
    49cdead Ignored mathn examples
    27080f0 Move TTY checks inside the example
    c766f34 Remove unneeded guard
    bc9272e Remove the last not_supported_on :jruby
    f119ab6 Remove not_supported_on which can be replaced by tags
    1f72098 Remove unneeded not_supported_on guard
    f73cc7e Remove bad not_supported_on guards
    ab97f67 Remove bad not_supported_on guards
    f5764a5 Fix references to removed guards and use generic text instead
    7279501 Remove unused require
    f1e34eb Remove useless requires to mspec helpers already loaded
    39a43e9 Remove useless require
    47d5757 Inline the single usage of the home_directory helper
    c8bb8f0 Remove useless before/after in Dir.home spec
    9d8e406 Simplify expectation as it only tests on non-Windows
    1bdfcd5 Use Dir.home in File.expand_path spec
    6b1764b Just use `hostname` to get the hostname
    ce16689 Use standard File::NULL over mspec helper
    196d2bf Remove process_is_foreground guards
    a22149f Merge pull request #425 from ruby/ignored-deprecated-extensions
    5397086 Ignored mathn/{complex,rational} examples. These are deprecated from Ruby 2.5
    520200a Revert "Avoid using #fork in Process#wait specs"
    6fe19cb Add specs for Hash#dig with default
    a12d209 Require date (#423)
    cdbc5f0 String#crypt with NUL (#420)
    aee1fad Merge branch 'nobu-bug/psych-update'
    6357533 Picked YAML.load_stream example from #418
    83bbd45 Merge pull request #417 from hsbt/fixed-spec-fail-for-psych
    1a952f5 Follow psych-3.0.0.beta1
    18efd61 Ignored deprecated methods of psych-3.0.0.beta1 with Ruby 2.5.0
    a488ce5 TypedData_Get_Struct unwraps data for a parent type
    4bbfa0c Refactor httpgenericrequest/exec_spec to use an actual Net::BufferedIO
    72273d3 Remove old guards testing for Ruby < 2.2
    1a28138 Remove old 2.1 or < 2.2 guards in C-API specs
    e4763d5 Remove Logger::Application specs which no longer exist in Ruby 2.2+
    60ccbba Drop support for Ruby 2.1
    6686326 An invalid timezone has a non-zero offset on AIX
    96ba5d5 Add 2.2 guard for Etc.nprocessors, 2.1 is not yet removed from CI
    3b8d553 Add spec for Etc.nprocessors
    8fd7a69 Remove files with no specs
    2829346 rb_ary_store raises an error if array is frozen
    e1fb7b4 Fix typo
    42c1320 Add a spec for rb_ary_new_from_values
    9ba7adb Add specs for rb_ary_new_capa
    825c0a0 Add a spec for rb_struct_members
    89f4e62 Use have_constant matcher rather than #const_defined?
    320b4fb remove #sort since Struct.members guarantees the order
    ca6957b Add specs for rb_struct_define_under
    5b0d3f8 Fix typo in spec method being tested
    cb1b38e rb_struct_aset raises an error if struct is frozen
    cab4987 rb_struct_aset raises an error if index is out of range
    64f8bcc rb_struct_aref raises an error if index is out of range
    e4db1d3 Add specs for rb_struct_define
    af5412d Add specs for rb_struct_s_members
    ecc868d Update to 2.3.4
    4207e0e Symbol#hash was fixed in 2.3.4
    d6ade33 Fix inaccurate description of a spec in string_times
    4aed560 Revert "Use fixnum_max+1 to mean "not fitting into a Fixnum""
    a4e6958 Use fixnum_max+1 to mean "not fitting into a Fixnum"
    a5e707a Use fixnum_max helper
    582eed5 Share tests between String#* and rb_str_times
    fa4e6b2 Add specs for rb_str_times
    9c73e8b Specs for three initial vulnerabilities
    25aa763 Add a spec for rb_String (#395)
    0adc519 Add specs for rb_ary_rotate
    03e3fba Add specs for rb_ary_cat
    9078f37 Add a spec for rb_Hash
    7847fa8 Update ruby_bug guards
    
    git-subtree-dir: spec/ruby
    git-subtree-split: 0db663be26db58348eb1cf2b2c4af6a2eca005f4
    eregon committed Apr 28, 2017
    Copy the full SHA
    4991312 View commit details
  7. Add tags for new specs

    eregon committed Apr 28, 2017
    Copy the full SHA
    6224865 View commit details
  8. Add tags for core specs

    eregon committed Apr 28, 2017
    Copy the full SHA
    fb01692 View commit details
  9. Add tags for new specs

    eregon committed Apr 28, 2017
    Copy the full SHA
    c9a8fb4 View commit details
  10. Copy the full SHA
    32f213b View commit details

Commits on Apr 30, 2017

  1. Fix wrong method lookup cache used when class is prepended

    While benchmarking a @Talkdesk JRuby application during our recent
    hackaton, I noticed quite a lot of thread contention in a workload where
    there should be no shared data.
    
    Stack traces showed that there was contention while performing writes to
    the method lookup cache:
    
    ```
    java.lang.Thread.State: BLOCKED (on object monitor)
         at java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1027)
         - waiting to lock <0x00000000e1565058> (a java.util.concurrent.ConcurrentHashMap$Node)
         at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
         at org.jruby.RubyModule.addToCache(RubyModule.java:1467)
         at org.jruby.RubyModule.searchWithCache(RubyModule.java:1315)
         at org.jruby.RubyModule.searchWithCache(RubyModule.java:1269)
         at org.jruby.RubyModule.searchMethod(RubyModule.java:1258)
         at org.jruby.RubyModule.respondsToMethod(RubyModule.java:1829)
    ```
    
    I ended up instrumenting the JRuby code and noticed that this kept
    happening (on this workload) for calls to `Array.respond_to?(:to_ary)`
    which happened quite often and never seemed to be cached.
    
    But why were threads repeatedly failing to lookup `#to_ary`, saving it
    on the cache, and then not finding it the next time around?
    
    Every instance of the `RubyModule` class keeps a method lookup cache in
    the `myCachedMethods` and normally reads and writes to it. But
    additionally, every `RubyModule` instance keeps a reference called
    `methodLocation` to the object where it keeps its methods.
    
    Usually, `methodLocation` is set to `this` (e.g. the `RubyModule` stores
    its own methods), but in some cases, e.g. when a class is prepended,
    `methodLocation` changes, and points elsewhere.
    
    The problem here is that when looking up on the `myCachedMethods`, the
    `cacheHit` method always checks the local `myCachedMethods` reference,
    while the `addToCache` writes to the cache inside the `methodLocation`
    reference. This means that normally the method cache works fine as
    `this.myCachedMethods` and `this.methodLocation.myCachedMethods` are the
    same, but when `methodLocation` changes, the cache reads will never find
    the correct cached method.
    
    As a fix, I updated the `cacheHit` method to also read from
    `this.methodLocation.myCachedMethods`.
    
    Included below are my test cases and results from executing them.
    
    Thanks go to @Talkdesk for letting me work on making JRuby kick even
    more ass.
    
    Single-threaded performance impact test-case:
    
    ```ruby
    require 'benchmark/ips'
    
    module Foo; end
    
    mode = ARGV.first
    
    if mode == 'prepend'
      Array.prepend(Foo)
    elsif mode == 'no-prepend'
      # do nothing
    else
      fail 'no mode supplied'
    end
    
    Benchmark.ips do |benchmark|
      benchmark.time = 15
      benchmark.warmup = 15
    
      benchmark.report(mode) { [1, 2, 3].respond_to?(:to_ary) }
    
      benchmark.compare!
    end
    ```
    
    Before fix:
    
    ```
    $ jruby singlethreaded-bug-bench.rb no-prepend
    Warming up --------------------------------------
              no-prepend   265.802k i/100ms
    Calculating -------------------------------------
              no-prepend     14.619M (± 5.1%) i/s -    218.489M in
    14.993450s
    
    $ jruby singlethreaded-bug-bench.rb prepend
    Warming up --------------------------------------
                 prepend   222.863k i/100ms
    Calculating -------------------------------------
                 prepend      6.879M (± 3.1%) i/s -    103.186M in
    15.017267s
    ```
    
    After fix:
    
    ```
    $ jruby singlethreaded-bug-bench.rb no-prepend
    Warming up --------------------------------------
              no-prepend   272.227k i/100ms
    Calculating -------------------------------------
              no-prepend     14.229M (± 4.1%) i/s -    212.882M in
    14.990837s
    
    $ jruby singlethreaded-bug-bench.rb prepend
    Warming up --------------------------------------
                 prepend   271.436k i/100ms
    Calculating -------------------------------------
                 prepend     14.095M (± 4.2%) i/s -    210.906M in
    14.996117s
    ```
    
    Multi-threaded contention test case:
    
    ```ruby
    module Foo; end
    
    mode = ARGV.first
    
    if mode == 'prepend'
      Array.prepend(Foo)
    elsif mode == 'no-prepend'
      # do nothing
    else
      fail 'no mode supplied'
    end
    
    Integer(ENV['THREADS'] || 16).times do
      Thread.new { [1, 2, 3].respond_to?(:to_ary) while true }
    end
    
    sleep
    ```
    
    (See VisualVM screenshots attached to PR for results).
    Ivo Anjo authored and ivoanjo committed Apr 30, 2017
    Copy the full SHA
    8420b3e View commit details

Commits on May 3, 2017

  1. Fix most ObjectSpace-triggered Marshal spec failures.

    The problem here was that when using ObjectSpace (or object_id,
    or FFI) we need to insert some hidden state into objects. This
    state goes into the variable table, but does not get marshaled.
    However, if we had both reserved space for instance variables and
    for one of these hidden variables, we always would proceed to
    marshal the object as though it might have instance variables. If
    none of the non-hidden variables had been set, we marshaled the
    object as having instance variables, but of zero length. This
    broke several marshal specs, since objects that would otherwise
    have no instance variable were marshaled as such.
    
    This fix uses a second check against the variable list to ensure
    that there are real variables to marshal (or an encoding variable)
    before proceeding to emit the instance variable sigil and list.
    headius committed May 3, 2017
    Copy the full SHA
    0b6e3c0 View commit details
  2. Copy the full SHA
    ae1ef36 View commit details
  3. Accurately track the three hidden vars in the var manager.

    This is not directly used other than to provide a more accurate
    guess as to whether there are any non-hidden variable in use by
    a given type. 0b6e3c0 fixes the original issue (marshal dumping
    zero-length instance var lists).
    
    The accessors of the lazy fields are now deprecated. Use the read
    or write calls to get an accessor for the hidden fields.
    headius committed May 3, 2017
    Copy the full SHA
    ec6a6dd View commit details
  4. Merge pull request #4581 from ivoanjo/fix-wrong-method-lookup-cache

    Fix wrong method lookup cache used when class is prepended
    headius authored May 3, 2017
    Copy the full SHA
    903728b View commit details
  5. Copy the full SHA
    1d1e65a View commit details

Commits on May 5, 2017

  1. Mega Mega Patch. Parser largely pushes most things as ByteList.

    Up to this point all things are still being accessed through String versions
    of methods from IRBuilder on.  So this should be zero sum...However...there
    is a problem I have not figured out yet where I think a RubyHash is getting
    messed up.  So there will be at least one more commit before this is fully
    zero sum.
    
    I have made all existing methods and deprecated.  They probably will only
    work so long as the strings represent 7bit ascii or are utf-8 but since they
    are all internal methods no longer used I do not fully care.  If some external
    projects are using them then I do not expect they will notice since we have
    had mbc issues for years.
    
    I had considered making all identifiers share the source line they exist on
    to prevent extra array construction and copying.  It could be changed later.
    
    Also I still make a token string in the lexer and as a side-effect we get
    and identifier ByteList.  Once this is fully working we can just delete
    token creation code and only use the identifier.
    enebo committed May 5, 2017
    2
    Copy the full SHA
    c4e7631 View commit details
  2. Copy the full SHA
    13212d5 View commit details
  3. Fixes -(expr) and +(expr). Old parser was hard-coding +@ -@ within the

    generated parser versus using what the lexer provides (which was wrong
    in the old lexer).
    
    gem list loads yay.
    enebo committed May 5, 2017
    Copy the full SHA
    9f2ee60 View commit details

Commits on May 7, 2017

  1. Clean up structure of io/console and avoid stty on Windows.

    Fixes #3989.
    
    * Restructure the different impls of console into their own files.
    * Always use stubbed version on Windows.
    * Cascade from native to stty to stubbed on other platforms.
    headius committed May 7, 2017
    Copy the full SHA
    3666877 View commit details

Commits on May 8, 2017

  1. Copy the full SHA
    12e3e64 View commit details
  2. Copy the full SHA
    d78494d View commit details
  3. Copy the full SHA
    2848ddd View commit details
  4. Copy the full SHA
    56643d9 View commit details
  5. Merge pull request #4592 from headius/cleanup_io_console_9k

    Clean up structure of io/console and avoid stty on Windows.
    headius authored May 8, 2017
    Copy the full SHA
    e778b56 View commit details
  6. Copy the full SHA
    349667d View commit details
  7. Copy the full SHA
    6e5f77e View commit details
  8. Copy the full SHA
    941cfe8 View commit details

Commits on May 10, 2017

  1. Copy the full SHA
    81ff75f View commit details
  2. Merge pull request #4597 from madrob/master

    Update COPYING for bundled java licenses #4587
    enebo authored May 10, 2017
    Copy the full SHA
    dc1d2da View commit details
  3. Also increment thresholds in indy sites for method_missing.

    Fixes #4596.
    
    JRuby currently does not cache anything for method_missing calls
    (i.e. calls to methods that do not exist on the target class's
    method table). Instead, after discovering the missing method, it
    proceeds down a slow lookup path, dispatching to method_missing
    with a symbolic method name.
    
    However this logic still attempts to acquire a SwitchPoint from
    the target class, since that SP must be acquired before the
    initial method lookup to ensure proper invalidation ordering.
    
    Normally, this isn't a problem. If the class is still relatively
    static, the SwitchPoint will be created once, and then the cost
    of calling method_missing is the same as for non-indy. However for
    type very rapidly. This led to a large number of unused
    SwitchPoint being created, one for each class. And since the
    method_missing path never cached anything, it never updated call
    site thresholds, resulting in call sites that would continue this
    logic forever.
    
    Normal calls, if they fail repeatedly, will eventually fail the
    entire site and revert to non-indy method dispatch (currently a
    simple monomorphic cache).
    
    This patch lifts the threshold-bumping out of the caching logic
    so it can also be used by method_missing dispatches. This allows
    repeated method_missing calls against different classes to also
    fail the site, reverting it to non-indy behavior. With this patch,
    the benchmark in #4596 runs faster with indy than without, as
    expected.
    headius committed May 10, 2017
    Copy the full SHA
    2c211bf View commit details
  4. Unbundle racc gem and commit non-LGPL portions as in MRI.

    This is a temporary patch for #4603 until we can get
    ruby/racc#85 to ship a separate non-LGPL runtime gem.
    headius committed May 10, 2017
    Copy the full SHA
    6852e57 View commit details
  5. Copy the full SHA
    efb775b View commit details
  6. Copy the full SHA
    77e3fa7 View commit details
  7. Merge pull request #4602 from headius/indy_mm_cache_bust

    Also increment thresholds in indy sites for method_missing.
    headius authored May 10, 2017
    Copy the full SHA
    ef28367 View commit details
  8. Copy the full SHA
    75ed50c View commit details
  9. Merge pull request #4604 from madrob/master

    Include Ruby Licensed json libs in COPYING #4587
    headius authored May 10, 2017
    Copy the full SHA
    e143db6 View commit details

Commits on May 11, 2017

  1. Fixes #4605. CGI.unescapeHTML => Java::JavaLang::ArrayIndexOutOfBound…

    …sException
    
    One more bounds check.  C has \0 so it can ask one char past len whereas we
    need to guard against it.  I think this is the last one but since I audited
    the code after the last similar bug fix and did not notice this issue so who
    knows? :)
    enebo committed May 11, 2017
    Copy the full SHA
    c7dfb2d View commit details
  2. Copy the full SHA
    7f6e378 View commit details

Commits on May 14, 2017

  1. Squashed 'spec/mspec/' changes from 8604276..4398eef

    4398eef Add a YAML file containing the last spec update from each repo
    f68b1ad sync-rubyspec: Allow to pass LAST_MERGE manually
    c09701c sync-rubyspec: refactor implementations in a class
    dcfe729 sync-rubyspec: verify commits and merge to master
    cc8a0b8 Automatically rebase and run tests in sync-rubyspec
    f7ed6ab Add initial version of the sync-rubyspec script
    12646ef Add a suppress_warning helper
    
    git-subtree-dir: spec/mspec
    git-subtree-split: 4398eefbf517ab2caf59ff13e6017a444aff5190
    eregon committed May 14, 2017
    Copy the full SHA
    88e989c View commit details
  2. Copy the full SHA
    8360155 View commit details
  3. Copy the full SHA
    b89bb6d View commit details
  4. Squashed 'spec/ruby/' changes from 0db663b..032022c

    032022c Fixed Fiber.yield not propagating rescued exception.
    83f18ad Refactor expectations to use the block of the raise_error matcher
    d971f0e suppress warning
    e8495f9 The exception raised when exec/spawn unexecutable file on Windows is various
    c90f00f remove wrong expectation
    1dfd209 `notepad.exe` does not always exist in `C:\Windows`
    3e085cd Windows does not know Unix style timezone
    1a416a2 On LLP64 platform (mswin64), the return value of String#hash is fixnum.
    a500503 Skip specs which make non-socket fd nonblocking on Windows
    bec2d36 Support bulding the extension on Windows
    114703a unistd.h is only available when HAVE_UNISTD_H is 1
    81c6683 Skip the spec which uses `fork` on Windows
    9824a40 The title of "Desktop" may be localized
    c24c184 Skip on Windows because it always fails
    3df6000 remove code old versions
    1c5bffa Support building exts of spec on mswin
    4f7abf0 Use environment values to find ruby and flags instead of an argument
    587c8bd Use ruby_cmd instead of the RUBY_EXE constant in specs
    336f7d9 Use the Mutex to know whether we entered the signal handler in Process#kill specs
    d46e74f Process.getpgrp and Process.setsid must be available for Process#kill group specs
    a1bf820 Use #system directly with multiple arguments in Process#kill specs
    8974c7f Update specs to follow newlines added by r58596
    b3ab721 * remove trailing spaces, append newline at EOF.
    d3ffd45 Guard -S specs on Windows
    2b0abda Fix UNIXServer#accept spec to use path of the before block
    0f66fb9 Check that the class var is defined before removing it
    b9c89cd Fix defined? specs with the same description
    493b062 Check with max length of path 107 for unix sockets
    4c7c6fb Use a shorter pathname for unix socket specs
    1997185 Fix Time#- to only require the precision their specdoc implies
    43f0faf Add few tests for -x and -S options
    a753318 Look for different types of files only when running related specs
    4cbe34d Run guard code inside example in IO#advise spec
    6938b80 Fix spec with duplicated specdoc
    c6d1def Add specs for global and special variable access
    0f31865 Add specs for negative cases of Fixnum#&
    7244054 Fix a few duplicated spec descriptions
    8c86482 Fix specs with duplicated descriptions in language
    2ad9b8e Use mspec's mkdir_p instead of FileUtils
    9dbecca Remove dead code
    562cc9a Integer.round always returns an integer since 2.5
    41176ea Remove check for unicode_normalize to be required from v2.5 (second try)
    7214c65 Restore "Avoid using #fork in Process#wait specs"
    51bc2c1 Continuation specs were removed so remove the corresponding mspec feature
    
    git-subtree-dir: spec/ruby
    git-subtree-split: 032022ca8845a2a1eb55df2bd0d387e48deea3b7
    eregon committed May 14, 2017
    Copy the full SHA
    6c83462 View commit details
  5. Add tags for new specs

    eregon committed May 14, 2017
    Copy the full SHA
    0d1449b View commit details

Commits on May 15, 2017

  1. Copy the full SHA
    3610e7a View commit details
  2. Copy the full SHA
    64dc158 View commit details
  3. Copy the full SHA
    3fe1cc2 View commit details
Showing 683 changed files with 21,735 additions and 17,596 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -64,7 +64,6 @@ lib/ruby/stdlib/openssl*
lib/ruby/stdlib/org/
lib/ruby/stdlib/ripper.jar
lib/ruby/stdlib/rubygems/defaults/jruby_native.rb
lib/ruby/stdlib/racc*
lib/ruby/stdlib/rake*
lib/ruby/stdlib/json*
lib/ruby/stdlib/rdoc*
10 changes: 5 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -9,8 +9,8 @@ cache:
before_install:
- rm ~/.m2/settings.xml
- export MAVEN_SKIP_RC=true
- mvn -Xmx32M -v | grep 1.7.0; if [ $? = 0 ]; then export MAVEN_OPTS="-XX:MaxPermSize=200M"; else export MAVEN_OPTS="-XX:MaxMetaspaceSize=200M -XX:CompressedClassSpaceSize=200M"; fi
- export MAVEN_OPTS="-Xmx512M $MAVEN_OPTS"
- mvn -Xmx32M -v | grep 1.7.0; if [ $? = 0 ]; then export MAVEN_OPTS="-XX:MaxPermSize=180M"; else export MAVEN_OPTS="-XX:MaxMetaspaceSize=180M -XX:CompressedClassSpaceSize=180M"; fi
- export MAVEN_OPTS="-Xmx500M $MAVEN_OPTS"

before_script:
- unset GEM_PATH GEM_HOME IRBRC JRUBY_OPTS
@@ -28,7 +28,7 @@ os:

env:
global:
- JAVA_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xmn48M -Xmx512M"
- JAVA_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xmn36M -Xmx512M"
- MALLOC_ARENA_MAX=2
matrix:
- PHASE='-Ptest'
@@ -76,8 +76,8 @@ matrix:
- env: COMMAND=test/check_versions.sh
jdk: oraclejdk8
allow_failures:
- env: PHASE='-Pj2ee'
jdk: oraclejdk7
#- env: PHASE='-Pj2ee'
# jdk: oraclejdk7
# NOTE: build seems to never start (waited for any to finish for more than a day) - probably a travis-ci bug
#- env: PHASE='-Pmain'
# sudo: required
154 changes: 65 additions & 89 deletions COPYING
Original file line number Diff line number Diff line change
@@ -9,6 +9,10 @@ and/or modify it under the terms of the:
GNU Lesser General Public License version 2.1

bytelist (http://github.com/jruby/bytelist),
jnr-posix (https://github.com/jnr/jnr-posix),
jruby-openssl (https://github.com/jruby/jruby-openssl),
jruby-readline (https://github.com/jruby/jruby-readline),
psych (https://github.com/ruby/psych),
yydebug (http://svn.codehaus.org/jruby/trunk/jay/yydebug)
are released under the same copyright/license.

@@ -32,30 +36,64 @@ below. Also see LICENSE.RUBY for most files found in lib/ruby/stdlib.

prototype.js is Copyright (c) 2005-2007 Sam Stephenson.

asm (http://asm.objectweb.org) is distributed under the BSD license and is

Copyright (c) 2000-2011 INRIA, France Telecom
All rights reserved.

jline2 (https://github.com/jline/jline2) is distributed under the BSD license:

Copyright (c) 2002-2012, the original author or authors.
All rights reserved.

jzlib (http://www.jcraft.com/jzlib/) is distributed under the BSD license:

Copyright (c) 2000-2011 ymnk, JCraft,Inc. All rights reserved.

The "rake" library (http://rake.rubyforge.org/) is distributed under
the MIT license, and has the following copyright:

Copyright (c) 2003, 2004 Jim Weirich

asm (http://asm.objectweb.org) is distributed under the BSD license.

jcodings (http://github.com/jruby/jcodings) and
joni (http://github.com/jruby/joni) are distributed
under the MIT license.

maven (http://maven.apache.org/),
jnr-constants (http://github.com/jnr/jnr-constants),
joda-time (http://joda-time.sourceforge.net),
jffi (https://github.com/jnr/jffi),
jnr-ffi (https://github.com/jnr/jnr-jffi),
jnr-enxio (https://github.com/jnr/jnr-enxio),
jnr-unixsocket (https://github.com/jnr/jnr-unixsocket),
jnr-netdb (http://github.com/jnr/jnr-netdb), and
nailgun (http://martiansoftware.com/nailgun) are distributed under the
Apache License version 2.0.

Bouncycastle is released under the MIT license, and is Copyright (c)
2000 - 2006 The Legion Of The Bouncy Castle.
under the MIT license without copyright.

Bouncycastle is released under the MIT license:

Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle.

jnr-x86asm (https://github.com/jnr/jnr-x86asm) is distributed under the MIT
license with the following copyright:

Copyright (C) 2010 Wayne Meissner
Copyright (c) 2008-2009, Petr Kobalicek <kobalicek.petr@gmail.com>

The following libraries are redistributed under the Apache Software
License v2.0, available below.
invokebinder (https://github.com/headius/invokebinder)
jffi (https://github.com/jnr/jffi)
jitescript (https://github.com/qmx/jitescript)
jnr-constants (http://github.com/jnr/jnr-constants)
jnr-enxio (https://github.com/jnr/jnr-enxio)
jnr-ffi (https://github.com/jnr/jnr-jffi)
jnr-netdb (http://github.com/jnr/jnr-netdb)
jnr-unixsocket (https://github.com/jnr/jnr-unixsocket)
joda-time (http://joda-time.sourceforge.net)
maven (http://maven.apache.org/)
nailgun (http://martiansoftware.com/nailgun)
options (https://github.com/headius/options)
snakeyaml (https://github.com/asomov/snakeyaml)
unsafe-fences (https://github.com/headius/unsafe-fences)

racc (runtime only, https://github.com/tenderlove/racc) is
distributed under the same license terms as the Ruby standard
library. This includes all files under lib/ruby/stdlib/racc.
See LICENSE.RUBY.

json-generator and json-parser (https://github.com/flori/json) native
extenstions under the same license terms as the Ruby standard library.
See LICENSE.RUBY

The complete text of the Eclipse Public License is as follows:

@@ -1332,7 +1370,6 @@ Licenses listed below include:
* GNU General Public License version 3
* Apache 2.0 License
* BSD License
* Apache Software License Version 1.1
* MIT License

The complete text of the GNU General Public License version 3 is as follows:
@@ -2218,9 +2255,6 @@ The complete text of the Apache 2.0 License is as follows:

The complete text of the BSD license can be is as follows:

Copyright (c) The Regents of the University of California.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
@@ -2233,75 +2267,17 @@ The complete text of the BSD license can be is as follows:
may be used to endorse or promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

The complete text of the Apache Software License Version 1.1 is as follows:

/*
* ================================================================
* The Apache Software License, Version 1.1
* ================================================================
*
* Copyright (C) 2000-2002 The Apache Software Foundation. All
* rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following
* conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowledgment: "This product
* includes software developed by the Apache Software Foundation
* (http://www.apache.org/)." Alternately, this acknowledgment may
* appear in the software itself, if and wherever such third-party
* acknowledgments normally appear.
*
* 4. The names "Ant" and "Apache Software Foundation" must not be
* used to endorse or promote products derived from this software
* without prior written permission. For written permission, please
* contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION
* OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

The complete text of the MIT license is as follows:

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ For [`rbenv`](https://github.com/sstephenson/rbenv) you will need the
package manager can provide these. Then you can run:

```
$ rbenv install jruby-9.1.6.0
$ rbenv install jruby-9.1.10.0
```

For [`rvm`](https://rvm.io) you can simply do:
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
9.1.9.0-SNAPSHOT
9.1.11.0-SNAPSHOT
4 changes: 2 additions & 2 deletions core/pom.rb
Original file line number Diff line number Diff line change
@@ -46,9 +46,9 @@
jar 'com.github.jnr:jnr-enxio:0.16', :exclusions => ['com.github.jnr:jnr-ffi']
jar 'com.github.jnr:jnr-x86asm:1.0.2', :exclusions => ['com.github.jnr:jnr-ffi']
jar 'com.github.jnr:jnr-unixsocket:0.17', :exclusions => ['com.github.jnr:jnr-ffi']
jar 'com.github.jnr:jnr-posix:3.0.38', :exclusions => ['com.github.jnr:jnr-ffi']
jar 'com.github.jnr:jnr-posix:3.0.41', :exclusions => ['com.github.jnr:jnr-ffi']
jar 'com.github.jnr:jnr-constants:0.9.9', :exclusions => ['com.github.jnr:jnr-ffi']
jar 'com.github.jnr:jnr-ffi:2.1.4'
jar 'com.github.jnr:jnr-ffi:2.1.6'
jar 'com.github.jnr:jffi:${jffi.version}'
jar 'com.github.jnr:jffi:${jffi.version}:native'

6 changes: 3 additions & 3 deletions core/pom.xml
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ DO NOT MODIFIY - GENERATED CODE
<parent>
<groupId>org.jruby</groupId>
<artifactId>jruby-parent</artifactId>
<version>9.1.9.0-SNAPSHOT</version>
<version>9.1.11.0-SNAPSHOT</version>
</parent>
<artifactId>jruby-core</artifactId>
<name>JRuby Core</name>
@@ -135,7 +135,7 @@ DO NOT MODIFIY - GENERATED CODE
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-posix</artifactId>
<version>3.0.38</version>
<version>3.0.41</version>
<exclusions>
<exclusion>
<artifactId>jnr-ffi</artifactId>
@@ -157,7 +157,7 @@ DO NOT MODIFIY - GENERATED CODE
<dependency>
<groupId>com.github.jnr</groupId>
<artifactId>jnr-ffi</artifactId>
<version>2.1.4</version>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>com.github.jnr</groupId>
24 changes: 24 additions & 0 deletions core/src/main/java/org/jruby/Ruby.java
Original file line number Diff line number Diff line change
@@ -3121,6 +3121,26 @@ public IRubyObject pushExitBlock(RubyProc proc) {
return proc;
}

/**
* It is possible for looping or repeated execution to encounter the same END
* block multiple times. Rather than store extra runtime state we will just
* make sure it is not already registered. at_exit by contrast can push the
* same block many times (and should use pushExistBlock).
*/
public void pushEndBlock(RubyProc proc) {
if (alreadyRegisteredEndBlock(proc) != null) return;
pushExitBlock(proc);
}

private RubyProc alreadyRegisteredEndBlock(RubyProc newProc) {
Block block = newProc.getBlock();

for (RubyProc proc: atExitBlocks) {
if (block.equals(proc.getBlock())) return proc;
}
return null;
}

// use this for JRuby-internal finalizers
public void addInternalFinalizer(Finalizable finalizer) {
synchronized (internalFinalizersMutex) {
@@ -3689,6 +3709,10 @@ public RaiseException newErrnoENETUNREACHError() {
return newRaiseException(getErrno().getClass("ENETUNREACH"), null);
}

public RaiseException newErrnoEMSGSIZEError() {
return newRaiseException(getErrno().getClass("EMSGSIZE"), null);
}

public RaiseException newIndexError(String message) {
return newRaiseException(getIndexError(), message);
}
5 changes: 4 additions & 1 deletion core/src/main/java/org/jruby/RubyBasicObject.java
Original file line number Diff line number Diff line change
@@ -376,6 +376,10 @@ public final IRubyObject callMethod(String name, IRubyObject... args) {
return Helpers.invoke(getRuntime().getCurrentContext(), this, name, args);
}

public final IRubyObject callMethod(String name, IRubyObject arg) {
return Helpers.invoke(getRuntime().getCurrentContext(), this, name, arg);
}

public final IRubyObject callMethod(String name) {
return Helpers.invoke(getRuntime().getCurrentContext(), this, name);
}
@@ -2198,7 +2202,6 @@ public IRubyObject untaint(ThreadContext context) {
* from prog.rb:3
*/
public IRubyObject freeze(ThreadContext context) {
Ruby runtime = context.runtime;
if ((flags & FROZEN_F) == 0) {
flags |= FROZEN_F;
}
27 changes: 15 additions & 12 deletions core/src/main/java/org/jruby/RubyClass.java
Original file line number Diff line number Diff line change
@@ -270,14 +270,6 @@ public VariableAccessor getVariableAccessorForRead(String name) {
return accessor;
}

public VariableAccessorField getObjectIdAccessorField() {
return variableTableManager.getObjectIdAccessorField();
}

public VariableAccessorField getFFIHandleAccessorField() {
return variableTableManager.getFFIHandleAccessorField();
}

public VariableAccessor getFFIHandleAccessorForRead() {
return variableTableManager.getFFIHandleAccessorForRead();
}
@@ -286,10 +278,6 @@ public VariableAccessor getFFIHandleAccessorForWrite() {
return variableTableManager.getFFIHandleAccessorForWrite();
}

public VariableAccessorField getObjectGroupAccessorField() {
return variableTableManager.getObjectGroupAccessorField();
}

public VariableAccessor getObjectGroupAccessorForRead() {
return variableTableManager.getObjectGroupAccessorForRead();
}
@@ -2314,6 +2302,21 @@ public IRubyObject invoke(ThreadContext context, IRubyObject self, String name,
return method.call(context, self, this, name, arg0, arg1, arg2);
}

@Deprecated
public VariableAccessorField getObjectIdAccessorField() {
return variableTableManager.getObjectIdAccessorField();
}

@Deprecated
public VariableAccessorField getFFIHandleAccessorField() {
return variableTableManager.getFFIHandleAccessorField();
}

@Deprecated
public VariableAccessorField getObjectGroupAccessorField() {
return variableTableManager.getObjectGroupAccessorField();
}

// OBJECT STATE

protected final Ruby runtime;
Loading