Skip to content

Commit

Permalink
Merge pull request #3638 from rubinius/inline_cache
Browse files Browse the repository at this point in the history
Reworked call site, inline cache mechanism.
  • Loading branch information
brixen committed Apr 23, 2016
2 parents 54bed47 + 3b0777d commit f65a474
Show file tree
Hide file tree
Showing 66 changed files with 1,084 additions and 2,023 deletions.
28 changes: 20 additions & 8 deletions core/call_site.rb
@@ -1,23 +1,35 @@
module Rubinius
class CallSite
attr_reader :name
attr_reader :executable

def hits
0
end
attr_reader :cache

def ip
Rubinius.primitive :call_site_ip
raise PrimitiveFailure, "CallSite#ip primitive failed"
end

def location
"#{@executable.file}:#{@executable.line_from_ip(ip)}"
def depth
Rubinius.primitive :call_site_depth
raise PrimitiveFailure, "CallSite#depth primitive failed"
end

def invokes
Rubinius.primitive :call_site_invokes
raise PrimitiveFailure, "CallSite#invokes primitive failed"
end

def hits
Rubinius.primitive :call_site_hits
raise PrimitiveFailure, "CallSite#hits primitive failed"
end

def misses
Rubinius.primitive :call_site_misses
raise PrimitiveFailure, "CallSite#misses primitive failed"
end

def inspect
"#<#{self.class.name}:0x#{self.object_id.to_s(16)} #{location}##{@name}(#{hits})>"
"#<#{self.class.name}:0x#{self.object_id.to_s(16)} name=#{@name} ip=#{ip} depth=#{depth} invokes=#{invokes} hits=#{hits} misses=#{misses}>"
end
end
end
2 changes: 0 additions & 2 deletions core/load_order.txt
Expand Up @@ -77,7 +77,6 @@ metrics.rb
mirror.rb
missing_method.rb
module.rb
mono_inline_cache.rb
mutex.rb
native_method.rb
nil.rb
Expand All @@ -88,7 +87,6 @@ options.rb
pack.rb
pointer.rb
pointer_accessors.rb
poly_inline_cache.rb
proc.rb
proc_mirror.rb
process.rb
Expand Down
25 changes: 0 additions & 25 deletions core/mono_inline_cache.rb

This file was deleted.

52 changes: 0 additions & 52 deletions core/poly_inline_cache.rb

This file was deleted.

10 changes: 10 additions & 0 deletions library/rubinius/configuration.rb
Expand Up @@ -168,6 +168,16 @@
c.vm_variable "profiler.threshold", 1000000,
"The minimum number of nanoseconds a profiler node must have to be reported"

c.section "machine" do |s|
s.section "call_site" do |cs|
cs.vm_variable "cache", true,
"Cache executables at call sites"

cs.vm_variable "limit", 3,
"Maximum number of caches at call sites"
end
end

c.section "system" do |s|
s.vm_variable "tmp", "$TMPDIR",
"Default temp/fallback directory for the process"
Expand Down

0 comments on commit f65a474

Please sign in to comment.