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: opal/opal
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 94a1019f9c1e
Choose a base ref
...
head repository: opal/opal
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ae8e62dfc40b
Choose a head ref
  • 2 commits
  • 77 files changed
  • 2 contributors

Commits on Aug 1, 2015

  1. Hash redux

    vais committed Aug 1, 2015
    Copy the full SHA
    bd61c41 View commit details
  2. Merge pull request #1035 from vais/hash

    Hash redux
    elia committed Aug 1, 2015
    Copy the full SHA
    ae8e62d View commit details
Showing with 1,575 additions and 716 deletions.
  1. +11 −0 benchmark/bm_hash_assoc_object.rb
  2. +9 −0 benchmark/bm_hash_assoc_string.rb
  3. +9 −0 benchmark/bm_hash_clone_object.rb
  4. +9 −0 benchmark/bm_hash_clone_string.rb
  5. +11 −0 benchmark/bm_hash_delete_object.rb
  6. +9 −0 benchmark/bm_hash_delete_string.rb
  7. +9 −0 benchmark/bm_hash_each_key_object.rb
  8. +9 −0 benchmark/bm_hash_each_key_string.rb
  9. +9 −0 benchmark/bm_hash_each_object.rb
  10. +9 −0 benchmark/bm_hash_each_string.rb
  11. +9 −0 benchmark/bm_hash_each_value_object.rb
  12. +9 −0 benchmark/bm_hash_each_value_string.rb
  13. +11 −0 benchmark/bm_hash_element_reference_object.rb
  14. +9 −0 benchmark/bm_hash_element_reference_string.rb
  15. +5 −0 benchmark/bm_hash_element_set_object.rb
  16. +5 −0 benchmark/bm_hash_element_set_string.rb
  17. +14 −0 benchmark/bm_hash_equal_value_object.rb
  18. +11 −0 benchmark/bm_hash_equal_value_string.rb
  19. +11 −0 benchmark/bm_hash_fetch_object.rb
  20. +9 −0 benchmark/bm_hash_fetch_string.rb
  21. +9 −0 benchmark/bm_hash_flatten_object.rb
  22. +9 −0 benchmark/bm_hash_flatten_string.rb
  23. +11 −0 benchmark/bm_hash_has_key_object.rb
  24. +9 −0 benchmark/bm_hash_has_key_string.rb
  25. +9 −0 benchmark/bm_hash_has_value_object.rb
  26. +9 −0 benchmark/bm_hash_has_value_string.rb
  27. +9 −0 benchmark/bm_hash_hash_object.rb
  28. +9 −0 benchmark/bm_hash_hash_string.rb
  29. +9 −0 benchmark/bm_hash_inspect_object.rb
  30. +9 −0 benchmark/bm_hash_inspect_string.rb
  31. +9 −0 benchmark/bm_hash_invert_object.rb
  32. +9 −0 benchmark/bm_hash_invert_string.rb
  33. +9 −0 benchmark/bm_hash_keep_if_object.rb
  34. +9 −0 benchmark/bm_hash_keep_if_string.rb
  35. +9 −0 benchmark/bm_hash_key_object.rb
  36. +9 −0 benchmark/bm_hash_key_string.rb
  37. +9 −0 benchmark/bm_hash_keys_object.rb
  38. +9 −0 benchmark/bm_hash_keys_string.rb
  39. +3 −0 benchmark/bm_hash_literal_mixed_large.rb
  40. +3 −0 benchmark/bm_hash_literal_mixed_small.rb
  41. +4 −0 benchmark/bm_hash_literal_object_large.rb
  42. +3 −0 benchmark/bm_hash_literal_object_small.rb
  43. +4 −0 benchmark/bm_hash_literal_string_large.rb
  44. +3 −0 benchmark/bm_hash_literal_string_small.rb
  45. +22 −0 benchmark/bm_hash_merge_object.rb
  46. +18 −0 benchmark/bm_hash_merge_string.rb
  47. +9 −0 benchmark/bm_hash_rassoc_object.rb
  48. +9 −0 benchmark/bm_hash_rassoc_string.rb
  49. +9 −0 benchmark/bm_hash_rehash_object.rb
  50. +9 −0 benchmark/bm_hash_rehash_string.rb
  51. +9 −0 benchmark/bm_hash_reject_bang_object.rb
  52. +9 −0 benchmark/bm_hash_reject_bang_string.rb
  53. +9 −0 benchmark/bm_hash_reject_object.rb
  54. +9 −0 benchmark/bm_hash_reject_string.rb
  55. +18 −0 benchmark/bm_hash_replace_object.rb
  56. +14 −0 benchmark/bm_hash_replace_string.rb
  57. +9 −0 benchmark/bm_hash_select_bang_object.rb
  58. +9 −0 benchmark/bm_hash_select_bang_string.rb
  59. +9 −0 benchmark/bm_hash_select_object.rb
  60. +9 −0 benchmark/bm_hash_select_string.rb
  61. +10 −0 benchmark/bm_hash_shift_object.rb
  62. +10 −0 benchmark/bm_hash_shift_string.rb
  63. +9 −0 benchmark/bm_hash_to_a_object.rb
  64. +9 −0 benchmark/bm_hash_to_a_string.rb
  65. +10 −0 benchmark/bm_hash_to_h_object.rb
  66. +10 −0 benchmark/bm_hash_to_h_string.rb
  67. +9 −0 benchmark/bm_hash_values_object.rb
  68. +9 −0 benchmark/bm_hash_values_string.rb
  69. +4 −1 opal/corelib/basic_object.rb
  70. +331 −554 opal/corelib/hash.rb
  71. +2 −1 opal/corelib/kernel.rb
  72. +233 −57 opal/corelib/runtime.js
  73. +9 −46 spec/filters/bugs/hash.rb
  74. +2 −0 spec/filters/unsupported/hash.rb
  75. +332 −0 spec/opal/core/hash/internals_spec.rb
  76. +8 −13 stdlib/json.rb
  77. +27 −44 stdlib/native.rb
11 changes: 11 additions & 0 deletions benchmark/bm_hash_assoc_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
h = {}
a = []

10_000.times do |i|
a[i] = Object.new
h[a[i]] = nil
end

10_000.times do |i|
k, v = h.assoc(a[i])
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_assoc_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

10_000.times do |i|
k, v = h.assoc(i.to_s)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_clone_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

100.times do |i|
h.clone
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_clone_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

100.times do |i|
h.clone
end
11 changes: 11 additions & 0 deletions benchmark/bm_hash_delete_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
h = {}
a = []

10_000.times do |i|
a[i] = Object.new
h[a[i]] = nil
end

10_000.times do |i|
h.delete(a[i])
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_delete_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

10_000.times do |i|
h.delete(i.to_s)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_each_key_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

1_000.times do |i|
h.each_key{|k| nil}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_each_key_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

1_000.times do |i|
h.each_key{|k| nil}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_each_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

1_000.times do |i|
h.each{|k, v| nil}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_each_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

1_000.times do |i|
h.each{|k, v| nil}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_each_value_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

1_000.times do |i|
h.each_value{|v| nil}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_each_value_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

1_000.times do |i|
h.each_value{|v| nil}
end
11 changes: 11 additions & 0 deletions benchmark/bm_hash_element_reference_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
h = {}
a = []

10_000.times do |i|
a[i] = Object.new
h[a[i]] = nil
end

10_000.times do |i|
h[a[i]]
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_element_reference_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

10_000.times do |i|
h[i.to_s]
end
5 changes: 5 additions & 0 deletions benchmark/bm_hash_element_set_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
h = {}

100_000.times do |i|
h[Object.new] = nil
end
5 changes: 5 additions & 0 deletions benchmark/bm_hash_element_set_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
h = {}

100_000.times do |i|
h[i.to_s] = nil
end
14 changes: 14 additions & 0 deletions benchmark/bm_hash_equal_value_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
h1 = {}
h2 = {}

a = []

10_000.times do |i|
a[i] = Object.new
h1[a[i]] = nil
h2[a[i]] = nil
end

1_000.times do
h1 == h2
end
11 changes: 11 additions & 0 deletions benchmark/bm_hash_equal_value_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
h1 = {}
h2 = {}

10_000.times do |i|
h1[i.to_s] = nil
h2[i.to_s] = nil
end

1_000.times do
h1 == h2
end
11 changes: 11 additions & 0 deletions benchmark/bm_hash_fetch_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
h = {}
a = []

10_000.times do |i|
a[i] = Object.new
h[a[i]] = nil
end

1_000.times do |i|
h.fetch(a[i])
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_fetch_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

1_000.times do |i|
h.fetch(i.to_s)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_flatten_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

1_000.times do
h.flatten
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_flatten_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

1_000.times do
h.flatten
end
11 changes: 11 additions & 0 deletions benchmark/bm_hash_has_key_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
h = {}
a = []

10_000.times do |i|
a[i] = Object.new
h[a[i]] = nil
end

10_000.times do |i|
h.has_key?(a[i])
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_has_key_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

10_000.times do |i|
h.has_key?(i.to_s)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_has_value_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = i * 2
end

1_000.times do |i|
h.has_value?(i * 2)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_has_value_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = i * 2
end

1_000.times do |i|
h.has_value?(i * 2)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_hash_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

1_000.times do |i|
h[Object.new] = nil
end

100.times do |i|
h.hash
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_hash_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

1_000.times do |i|
h[i.to_s] = nil
end

100.times do |i|
h.hash
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_inspect_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

100.times do
h.inspect
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_inspect_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

100.times do
h.inspect
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_invert_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

100.times do
h.invert
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_invert_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

100.times do
h.invert
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_keep_if_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = i
end

1_000.times do
h.keep_if{|k, v| v % 2 == 0}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_keep_if_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = i
end

1_000.times do
h.keep_if{|k, v| v % 2 == 0}
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_key_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = i
end

1_000.times do |i|
h.key(i)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_key_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = i
end

1_000.times do |i|
h.key(i)
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_keys_object.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[Object.new] = nil
end

5_000.times do
h.keys
end
9 changes: 9 additions & 0 deletions benchmark/bm_hash_keys_string.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
h = {}

10_000.times do |i|
h[i.to_s] = nil
end

5_000.times do
h.keys
end
Loading