therubyracer 0.6.3 → 0.7.0.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of therubyracer might be problematic. Click here for more details.

Files changed (520) hide show
  1. data/Rakefile +10 -9
  2. data/ext/v8/callbacks.cpp +15 -8
  3. data/ext/v8/converters.cpp +7 -8
  4. data/ext/v8/converters.h +0 -2
  5. data/ext/v8/extconf.rb +2 -0
  6. data/ext/v8/rr.cpp +169 -0
  7. data/ext/v8/rr.h +34 -0
  8. data/ext/v8/upstream/{2.0.6 → 2.1.10}/AUTHORS +8 -1
  9. data/ext/v8/upstream/{2.0.6 → 2.1.10}/ChangeLog +198 -0
  10. data/ext/v8/upstream/{2.0.6 → 2.1.10}/LICENSE +0 -0
  11. data/ext/v8/upstream/{2.0.6 → 2.1.10}/SConstruct +152 -38
  12. data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8-debug.h +52 -4
  13. data/ext/v8/upstream/2.1.10/include/v8-profiler.h +176 -0
  14. data/ext/v8/upstream/{2.0.6 → 2.1.10}/include/v8.h +227 -48
  15. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/SConscript +60 -10
  16. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.cc +5 -39
  17. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/accessors.h +0 -0
  18. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.cc +0 -0
  19. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/allocation.h +0 -0
  20. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.cc +477 -57
  21. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/api.h +8 -4
  22. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apinatives.js +1 -1
  23. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/apiutils.h +0 -0
  24. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arguments.h +5 -6
  25. data/ext/v8/upstream/{2.0.6/src/arm/assembler-thumb2-inl.h → 2.1.10/src/arm/assembler-arm-inl.h} +42 -27
  26. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.cc +430 -216
  27. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-arm.h +199 -110
  28. data/ext/v8/upstream/{2.0.6/src/arm/assembler-arm-inl.h → 2.1.10/src/arm/assembler-thumb2-inl.h} +4 -18
  29. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.cc +142 -85
  30. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/assembler-thumb2.h +18 -9
  31. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/builtins-arm.cc +127 -87
  32. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm-inl.h +3 -5
  33. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/codegen-arm.cc +4634 -1427
  34. data/ext/v8/upstream/2.1.10/src/arm/codegen-arm.h +946 -0
  35. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.cc +21 -3
  36. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/constants-arm.h +39 -13
  37. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/cpu-arm.cc +9 -3
  38. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/debug-arm.cc +34 -8
  39. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/disasm-arm.cc +262 -117
  40. data/ext/v8/upstream/2.1.10/src/arm/fast-codegen-arm.cc +238 -0
  41. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.cc +0 -0
  42. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/frames-arm.h +0 -0
  43. data/ext/v8/upstream/{2.0.6/src/arm/fast-codegen-arm.cc → 2.1.10/src/arm/full-codegen-arm.cc} +453 -283
  44. data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +1833 -0
  45. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/jump-target-arm.cc +3 -29
  46. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.cc +564 -104
  47. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/macro-assembler-arm.h +255 -46
  48. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.cc +78 -104
  49. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/regexp-macro-assembler-arm.h +6 -22
  50. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm-inl.h +0 -3
  51. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.cc +0 -0
  52. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/register-allocator-arm.h +2 -1
  53. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.cc +557 -180
  54. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/simulator-arm.h +52 -4
  55. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/arm/stub-cache-arm.cc +904 -240
  56. data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.cc +668 -0
  57. data/ext/v8/upstream/2.1.10/src/arm/virtual-frame-arm.h +503 -0
  58. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/array.js +82 -109
  59. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.cc +49 -13
  60. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/assembler.h +27 -5
  61. data/ext/v8/upstream/2.1.10/src/ast.cc +1138 -0
  62. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ast.h +354 -53
  63. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.cc +609 -501
  64. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bootstrapper.h +27 -8
  65. data/ext/v8/upstream/2.1.10/src/builtins.cc +1512 -0
  66. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/builtins.h +41 -25
  67. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/bytecodes-irregexp.h +0 -0
  68. data/ext/v8/upstream/2.1.10/src/cached-powers.h +119 -0
  69. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates-inl.h +0 -0
  70. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/char-predicates.h +0 -0
  71. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.cc +0 -0
  72. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/checks.h +25 -1
  73. data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +101 -0
  74. data/ext/v8/upstream/2.1.10/src/circular-queue.cc +121 -0
  75. data/ext/v8/upstream/2.1.10/src/circular-queue.h +129 -0
  76. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.cc +23 -8
  77. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code-stubs.h +16 -4
  78. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/code.h +0 -0
  79. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen-inl.h +6 -34
  80. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.cc +73 -92
  81. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/codegen.h +164 -68
  82. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.cc +117 -73
  83. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/compilation-cache.h +18 -17
  84. data/ext/v8/upstream/2.1.10/src/compiler.cc +623 -0
  85. data/ext/v8/upstream/2.1.10/src/compiler.h +299 -0
  86. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.cc +0 -0
  87. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/contexts.h +8 -11
  88. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions-inl.h +28 -13
  89. data/ext/v8/upstream/2.1.10/src/conversions.cc +1105 -0
  90. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/conversions.h +9 -4
  91. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.cc +0 -0
  92. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/counters.h +1 -1
  93. data/ext/v8/upstream/2.1.10/src/cpu-profiler-inl.h +99 -0
  94. data/ext/v8/upstream/2.1.10/src/cpu-profiler.cc +494 -0
  95. data/ext/v8/upstream/2.1.10/src/cpu-profiler.h +277 -0
  96. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/cpu.h +0 -0
  97. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.cc +15 -4
  98. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-debug.h +0 -0
  99. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-posix.cc +18 -0
  100. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-readline.cc +2 -2
  101. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8-windows.cc +0 -0
  102. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.cc +10 -6
  103. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.h +2 -0
  104. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/d8.js +43 -38
  105. data/ext/v8/upstream/2.1.10/src/data-flow.cc +755 -0
  106. data/ext/v8/upstream/2.1.10/src/data-flow.h +278 -0
  107. data/ext/v8/upstream/{2.0.6/src/date-delay.js → 2.1.10/src/date.js} +100 -110
  108. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser-inl.h +11 -2
  109. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.cc +24 -26
  110. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dateparser.h +8 -4
  111. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.cc +3 -1
  112. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug-agent.h +0 -0
  113. data/ext/v8/upstream/{2.0.6/src/debug-delay.js → 2.1.10/src/debug-debugger.js} +111 -15
  114. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.cc +156 -96
  115. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/debug.h +53 -5
  116. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disasm.h +0 -0
  117. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.cc +2 -8
  118. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/disassembler.h +0 -0
  119. data/ext/v8/upstream/2.1.10/src/diy-fp.cc +58 -0
  120. data/ext/v8/upstream/2.1.10/src/diy-fp.h +117 -0
  121. data/ext/v8/upstream/2.1.10/src/double.h +169 -0
  122. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/dtoa-config.c +4 -3
  123. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.cc +22 -22
  124. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/execution.h +17 -4
  125. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.cc +70 -46
  126. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/factory.h +27 -17
  127. data/ext/v8/upstream/2.1.10/src/fast-codegen.cc +746 -0
  128. data/ext/v8/upstream/2.1.10/src/fast-codegen.h +161 -0
  129. data/ext/v8/upstream/2.1.10/src/fast-dtoa.cc +512 -0
  130. data/ext/v8/upstream/2.1.10/src/fast-dtoa.h +59 -0
  131. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flag-definitions.h +32 -11
  132. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.cc +0 -0
  133. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/flags.h +0 -0
  134. data/ext/v8/upstream/2.1.10/src/flow-graph.cc +763 -0
  135. data/ext/v8/upstream/2.1.10/src/flow-graph.h +180 -0
  136. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.cc +1 -4
  137. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frame-element.h +49 -11
  138. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames-inl.h +2 -0
  139. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.cc +91 -17
  140. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/frames.h +24 -2
  141. data/ext/v8/upstream/{2.0.6/src/fast-codegen.cc → 2.1.10/src/full-codegen.cc} +549 -198
  142. data/ext/v8/upstream/{2.0.6/src/fast-codegen.h → 2.1.10/src/full-codegen.h} +109 -29
  143. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.cc +0 -0
  144. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/func-name-inferrer.h +0 -0
  145. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.cc +0 -0
  146. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/global-handles.h +0 -0
  147. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/globals.h +67 -43
  148. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles-inl.h +0 -0
  149. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.cc +124 -129
  150. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/handles.h +33 -15
  151. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.cc +0 -0
  152. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/hashmap.h +0 -0
  153. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-inl.h +56 -12
  154. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.cc +2 -2
  155. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap-profiler.h +2 -0
  156. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.cc +413 -221
  157. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/heap.h +192 -67
  158. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32-inl.h +6 -0
  159. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.cc +187 -32
  160. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/assembler-ia32.h +31 -4
  161. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/builtins-ia32.cc +160 -133
  162. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32-inl.h +0 -0
  163. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/codegen-ia32.cc +5533 -2177
  164. data/ext/v8/upstream/{2.0.6/src/x64/codegen-x64.h → 2.1.10/src/ia32/codegen-ia32.h} +453 -134
  165. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/cpu-ia32.cc +0 -0
  166. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/debug-ia32.cc +63 -8
  167. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/disasm-ia32.cc +99 -16
  168. data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.cc +950 -0
  169. data/ext/v8/upstream/2.1.10/src/ia32/fast-codegen-ia32.h +155 -0
  170. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.cc +0 -0
  171. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/frames-ia32.h +0 -0
  172. data/ext/v8/upstream/{2.0.6/src/ia32/fast-codegen-ia32.cc → 2.1.10/src/ia32/full-codegen-ia32.cc} +454 -253
  173. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/ic-ia32.cc +545 -390
  174. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/jump-target-ia32.cc +1 -0
  175. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.cc +330 -139
  176. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/macro-assembler-ia32.h +96 -30
  177. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.cc +73 -89
  178. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/regexp-macro-assembler-ia32.h +6 -21
  179. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32-inl.h +0 -0
  180. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.cc +59 -5
  181. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/register-allocator-ia32.h +0 -0
  182. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.cc +0 -0
  183. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/simulator-ia32.h +2 -2
  184. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/stub-cache-ia32.cc +745 -303
  185. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.cc +278 -71
  186. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ia32/virtual-frame-ia32.h +78 -22
  187. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic-inl.h +0 -0
  188. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.cc +172 -89
  189. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/ic.h +51 -20
  190. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.cc +0 -0
  191. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/interpreter-irregexp.h +0 -0
  192. data/ext/v8/upstream/{2.0.6/src/json-delay.js → 2.1.10/src/json.js} +26 -12
  193. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.cc +151 -118
  194. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jsregexp.h +31 -7
  195. data/ext/v8/upstream/2.1.10/src/jump-target-heavy-inl.h +51 -0
  196. data/ext/v8/upstream/{2.0.6/src/jump-target.cc → 2.1.10/src/jump-target-heavy.cc} +164 -184
  197. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target-inl.h +8 -9
  198. data/ext/v8/upstream/{2.0.6/src/usage-analyzer.h → 2.1.10/src/jump-target-light-inl.h} +9 -7
  199. data/ext/v8/upstream/2.1.10/src/jump-target-light.cc +86 -0
  200. data/ext/v8/upstream/2.1.10/src/jump-target.cc +155 -0
  201. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/jump-target.h +6 -0
  202. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list-inl.h +0 -0
  203. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/list.h +2 -1
  204. data/ext/v8/upstream/2.1.10/src/liveedit-debugger.js +944 -0
  205. data/ext/v8/upstream/2.1.10/src/liveedit.cc +1468 -0
  206. data/ext/v8/upstream/2.1.10/src/liveedit.h +170 -0
  207. data/ext/v8/upstream/2.1.10/src/log-inl.h +59 -0
  208. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.cc +3 -9
  209. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log-utils.h +1 -4
  210. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.cc +198 -95
  211. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/log.h +50 -49
  212. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macro-assembler.h +9 -0
  213. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/macros.py +30 -11
  214. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.cc +464 -152
  215. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mark-compact.h +41 -20
  216. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/math.js +9 -8
  217. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/memory.h +0 -0
  218. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.cc +1 -0
  219. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.h +0 -0
  220. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/messages.js +46 -9
  221. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips-inl.h +215 -0
  222. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.cc +1208 -0
  223. data/ext/v8/upstream/2.1.10/src/mips/assembler-mips.h +665 -0
  224. data/ext/v8/upstream/2.1.10/src/mips/builtins-mips.cc +202 -0
  225. data/ext/v8/upstream/2.1.10/src/mips/codegen-mips-inl.h +70 -0
  226. data/ext/v8/upstream/2.1.10/src/mips/codegen-mips.cc +1428 -0
  227. data/ext/v8/upstream/{2.0.6/src/arm/codegen-arm.h → 2.1.10/src/mips/codegen-mips.h} +103 -205
  228. data/ext/v8/upstream/2.1.10/src/mips/constants-mips.cc +323 -0
  229. data/ext/v8/upstream/2.1.10/src/mips/constants-mips.h +525 -0
  230. data/ext/v8/upstream/2.1.10/src/mips/cpu-mips.cc +69 -0
  231. data/ext/v8/upstream/2.1.10/src/mips/debug-mips.cc +128 -0
  232. data/ext/v8/upstream/2.1.10/src/mips/disasm-mips.cc +784 -0
  233. data/ext/v8/upstream/2.1.10/src/mips/fast-codegen-mips.cc +74 -0
  234. data/ext/v8/upstream/2.1.10/src/mips/frames-mips.cc +99 -0
  235. data/ext/v8/upstream/2.1.10/src/mips/frames-mips.h +164 -0
  236. data/ext/v8/upstream/2.1.10/src/mips/full-codegen-mips.cc +273 -0
  237. data/ext/v8/upstream/2.1.10/src/mips/ic-mips.cc +217 -0
  238. data/ext/v8/upstream/2.1.10/src/mips/jump-target-mips.cc +172 -0
  239. data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.cc +1323 -0
  240. data/ext/v8/upstream/2.1.10/src/mips/macro-assembler-mips.h +461 -0
  241. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips-inl.h +137 -0
  242. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.cc +60 -0
  243. data/ext/v8/upstream/2.1.10/src/mips/register-allocator-mips.h +46 -0
  244. data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.cc +1648 -0
  245. data/ext/v8/upstream/2.1.10/src/mips/simulator-mips.h +311 -0
  246. data/ext/v8/upstream/2.1.10/src/mips/stub-cache-mips.cc +400 -0
  247. data/ext/v8/upstream/2.1.10/src/mips/virtual-frame-mips.cc +316 -0
  248. data/ext/v8/upstream/{2.0.6/src/arm/virtual-frame-arm.h → 2.1.10/src/mips/virtual-frame-mips.h} +87 -71
  249. data/ext/v8/upstream/{2.0.6/src/mirror-delay.js → 2.1.10/src/mirror-debugger.js} +51 -45
  250. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/mksnapshot.cc +97 -10
  251. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/natives.h +6 -6
  252. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-debug.cc +47 -5
  253. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects-inl.h +154 -38
  254. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.cc +528 -280
  255. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/objects.h +302 -95
  256. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.cc +25 -33
  257. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/oprofile-agent.h +9 -1
  258. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.cc +444 -72
  259. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/parser.h +4 -2
  260. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-freebsd.cc +32 -13
  261. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-linux.cc +59 -25
  262. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-macos.cc +30 -13
  263. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-nullos.cc +0 -0
  264. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-openbsd.cc +21 -2
  265. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-posix.cc +0 -18
  266. data/ext/v8/upstream/2.1.10/src/platform-solaris.cc +607 -0
  267. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform-win32.cc +16 -17
  268. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/platform.h +25 -8
  269. data/ext/v8/upstream/2.1.10/src/powers-ten.h +2461 -0
  270. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.cc +49 -29
  271. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/prettyprinter.h +3 -1
  272. data/ext/v8/upstream/2.1.10/src/profile-generator-inl.h +124 -0
  273. data/ext/v8/upstream/2.1.10/src/profile-generator.cc +583 -0
  274. data/ext/v8/upstream/2.1.10/src/profile-generator.h +364 -0
  275. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.cc +1 -1
  276. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/property.h +12 -24
  277. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp-inl.h +2 -2
  278. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.cc +2 -2
  279. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-irregexp.h +2 -2
  280. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.cc +2 -2
  281. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler-tracer.h +0 -0
  282. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.cc +33 -10
  283. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-macro-assembler.h +12 -4
  284. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.cc +0 -0
  285. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/regexp-stack.h +0 -0
  286. data/ext/v8/upstream/{2.0.6/src/regexp-delay.js → 2.1.10/src/regexp.js} +180 -58
  287. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator-inl.h +68 -1
  288. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.cc +5 -2
  289. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/register-allocator.h +42 -17
  290. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.cc +110 -4
  291. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/rewriter.h +0 -0
  292. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.cc +2733 -623
  293. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.h +43 -20
  294. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/runtime.js +46 -35
  295. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.cc +278 -36
  296. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scanner.h +97 -26
  297. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.cc +3 -3
  298. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopeinfo.h +1 -0
  299. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.cc +11 -12
  300. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/scopes.h +0 -1
  301. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.cc +298 -175
  302. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/serialize.h +184 -40
  303. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/shell.h +0 -0
  304. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/simulator.h +2 -0
  305. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/smart-pointer.h +0 -0
  306. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot-common.cc +16 -31
  307. data/ext/v8/upstream/2.1.10/src/snapshot-empty.cc +50 -0
  308. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/snapshot.h +13 -1
  309. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces-inl.h +35 -27
  310. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.cc +256 -42
  311. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/spaces.h +136 -42
  312. data/ext/v8/upstream/{2.0.6/src/zone-inl.h → 2.1.10/src/splay-tree-inl.h} +102 -89
  313. data/ext/v8/upstream/2.1.10/src/splay-tree.h +203 -0
  314. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.cc +0 -0
  315. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string-stream.h +0 -0
  316. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/string.js +260 -149
  317. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.cc +195 -69
  318. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/stub-cache.h +127 -12
  319. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/COPYING +0 -0
  320. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/dtoa/dtoa.c +0 -0
  321. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/third_party/valgrind/valgrind.h +0 -0
  322. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.cc +0 -0
  323. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/token.h +0 -0
  324. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.cc +26 -31
  325. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/top.h +3 -4
  326. data/ext/v8/upstream/2.1.10/src/type-info.cc +53 -0
  327. data/ext/v8/upstream/2.1.10/src/type-info.h +244 -0
  328. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode-inl.h +0 -0
  329. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.cc +0 -0
  330. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/unicode.h +0 -0
  331. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/uri.js +6 -6
  332. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.cc +0 -37
  333. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/utils.h +121 -50
  334. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.cc +0 -0
  335. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8-counters.h +130 -98
  336. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.cc +42 -11
  337. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8.h +4 -2
  338. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8natives.js +202 -37
  339. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.cc +11 -0
  340. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/v8threads.h +15 -0
  341. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.cc +7 -51
  342. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/variables.h +5 -35
  343. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.cc +3 -3
  344. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/version.h +0 -0
  345. data/ext/v8/upstream/2.1.10/src/virtual-frame-heavy-inl.h +152 -0
  346. data/ext/v8/upstream/{2.0.6/src/virtual-frame.cc → 2.1.10/src/virtual-frame-heavy.cc} +107 -176
  347. data/ext/v8/upstream/2.1.10/src/virtual-frame-inl.h +39 -0
  348. data/ext/v8/upstream/2.1.10/src/virtual-frame-light-inl.h +69 -0
  349. data/ext/v8/upstream/2.1.10/src/virtual-frame-light.cc +49 -0
  350. data/ext/v8/upstream/2.1.10/src/virtual-frame.cc +49 -0
  351. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/virtual-frame.h +2 -0
  352. data/ext/v8/upstream/{2.0.6/src/log-inl.h → 2.1.10/src/vm-state-inl.h} +28 -20
  353. data/ext/v8/upstream/{2.0.6/src/snapshot-empty.cc → 2.1.10/src/vm-state.cc} +5 -6
  354. data/ext/v8/upstream/2.1.10/src/vm-state.h +75 -0
  355. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64-inl.h +11 -0
  356. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.cc +285 -93
  357. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/assembler-x64.h +81 -78
  358. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/builtins-x64.cc +130 -87
  359. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64-inl.h +0 -0
  360. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/codegen-x64.cc +4520 -1317
  361. data/ext/v8/upstream/{2.0.6/src/ia32/codegen-ia32.h → 2.1.10/src/x64/codegen-x64.h} +362 -141
  362. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/cpu-x64.cc +0 -0
  363. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/debug-x64.cc +20 -4
  364. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/disasm-x64.cc +121 -44
  365. data/ext/v8/upstream/2.1.10/src/x64/fast-codegen-x64.cc +246 -0
  366. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.cc +0 -0
  367. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/frames-x64.h +0 -0
  368. data/ext/v8/upstream/{2.0.6/src/x64/fast-codegen-x64.cc → 2.1.10/src/x64/full-codegen-x64.cc} +404 -231
  369. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/ic-x64.cc +346 -117
  370. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/jump-target-x64.cc +1 -0
  371. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.cc +537 -181
  372. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/macro-assembler-x64.h +140 -34
  373. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.cc +74 -96
  374. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/regexp-macro-assembler-x64.h +8 -25
  375. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64-inl.h +1 -1
  376. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.cc +3 -0
  377. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/register-allocator-x64.h +0 -0
  378. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.cc +0 -0
  379. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/simulator-x64.h +2 -2
  380. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/stub-cache-x64.cc +785 -288
  381. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.cc +128 -52
  382. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/x64/virtual-frame-x64.h +40 -19
  383. data/ext/v8/upstream/2.1.10/src/zone-inl.h +82 -0
  384. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.cc +1 -0
  385. data/ext/v8/upstream/{2.0.6 → 2.1.10}/src/zone.h +6 -90
  386. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/codemap.js +12 -0
  387. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/consarray.js +0 -0
  388. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/csvparser.js +22 -37
  389. data/ext/v8/upstream/2.1.10/tools/generate-ten-powers.scm +286 -0
  390. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/gyp/v8.gyp +86 -24
  391. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/js2c.py +22 -22
  392. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/jsmin.py +0 -0
  393. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor +10 -1
  394. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/linux-tick-processor.py +0 -0
  395. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/logreader.js +34 -16
  396. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-nm +0 -0
  397. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/mac-tick-processor +0 -0
  398. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/annotate +0 -0
  399. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/common +0 -0
  400. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/dump +0 -0
  401. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/report +0 -0
  402. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/reset +0 -0
  403. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/run +0 -0
  404. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/shutdown +0 -0
  405. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/oprofile/start +0 -0
  406. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/presubmit.py +0 -0
  407. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/process-heap-prof.py +0 -0
  408. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile.js +70 -0
  409. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/profile_view.js +0 -0
  410. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/run-valgrind.py +0 -0
  411. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.js +0 -0
  412. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/splaytree.py +0 -0
  413. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/stats-viewer.py +0 -0
  414. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/test.py +7 -7
  415. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor-driver.js +7 -1
  416. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.js +140 -9
  417. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/tickprocessor.py +40 -4
  418. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/utils.py +6 -0
  419. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/README.txt +0 -0
  420. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/arm.vsprops +1 -1
  421. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/common.vsprops +1 -2
  422. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8.vcproj +0 -6
  423. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_arm.vcproj +193 -199
  424. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8_x64.vcproj +16 -8
  425. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/d8js2c.cmd +0 -0
  426. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/debug.vsprops +0 -0
  427. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/ia32.vsprops +5 -1
  428. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/js2c.cmd +1 -1
  429. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/release.vsprops +0 -0
  430. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.sln +0 -0
  431. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8.vcproj +11 -7
  432. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.sln +0 -0
  433. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_arm.vcproj +227 -223
  434. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base.vcproj +137 -5
  435. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_arm.vcproj +116 -4
  436. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_base_x64.vcproj +125 -4
  437. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest.vcproj +12 -6
  438. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_arm.vcproj +12 -6
  439. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_cctest_x64.vcproj +11 -11
  440. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot.vcproj +0 -6
  441. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -6
  442. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample.vcproj +0 -6
  443. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_arm.vcproj +145 -151
  444. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_process_sample_x64.vcproj +16 -6
  445. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample.vcproj +0 -6
  446. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_arm.vcproj +145 -151
  447. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_shell_sample_x64.vcproj +16 -8
  448. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  449. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  450. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  451. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  452. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.sln +0 -0
  453. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/v8_x64.vcproj +11 -7
  454. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/visual_studio/x64.vsprops +5 -1
  455. data/ext/v8/upstream/2.1.10/tools/windows-tick-processor.bat +29 -0
  456. data/ext/v8/upstream/{2.0.6 → 2.1.10}/tools/windows-tick-processor.py +0 -0
  457. data/ext/v8/upstream/Makefile +8 -2
  458. data/ext/v8/v8.cpp +21 -73
  459. data/ext/v8/v8_array.cpp +56 -0
  460. data/ext/v8/v8_array.h +8 -0
  461. data/ext/v8/v8_callbacks.cpp +121 -0
  462. data/ext/v8/v8_callbacks.h +8 -0
  463. data/ext/v8/v8_cxt.cpp +74 -77
  464. data/ext/v8/v8_cxt.h +2 -9
  465. data/ext/v8/v8_date.cpp +26 -0
  466. data/ext/v8/v8_date.h +6 -0
  467. data/ext/v8/v8_exception.cpp +55 -0
  468. data/ext/v8/v8_exception.h +6 -0
  469. data/ext/v8/v8_external.cpp +50 -0
  470. data/ext/v8/v8_external.h +8 -0
  471. data/ext/v8/v8_func.cpp +76 -18
  472. data/ext/v8/v8_func.h +5 -4
  473. data/ext/v8/v8_msg.cpp +55 -46
  474. data/ext/v8/v8_msg.h +3 -11
  475. data/ext/v8/v8_obj.cpp +67 -36
  476. data/ext/v8/v8_obj.h +6 -8
  477. data/ext/v8/v8_ref.cpp +25 -9
  478. data/ext/v8/v8_ref.h +3 -5
  479. data/ext/v8/v8_script.cpp +17 -10
  480. data/ext/v8/v8_script.h +3 -3
  481. data/ext/v8/v8_str.cpp +34 -6
  482. data/ext/v8/v8_str.h +4 -2
  483. data/ext/v8/v8_template.cpp +195 -33
  484. data/ext/v8/v8_template.h +4 -5
  485. data/ext/v8/v8_try_catch.cpp +99 -0
  486. data/ext/v8/v8_try_catch.h +5 -0
  487. data/ext/v8/v8_value.cpp +164 -0
  488. data/ext/v8/v8_value.h +10 -0
  489. data/lib/v8.rb +3 -1
  490. data/lib/v8/access.rb +60 -0
  491. data/lib/v8/array.rb +15 -0
  492. data/lib/v8/callbacks.rb +88 -0
  493. data/lib/v8/cli.rb +1 -1
  494. data/lib/v8/context.rb +55 -66
  495. data/lib/v8/function.rb +20 -2
  496. data/lib/v8/object.rb +14 -12
  497. data/lib/v8/ruby_error.rb +3 -0
  498. data/lib/v8/to.rb +59 -7
  499. data/spec/ext/cxt_spec.rb +2 -15
  500. data/spec/ext/func_spec.rb +17 -10
  501. data/spec/ext/try_catch_spec.rb +32 -0
  502. data/spec/foo.rb +17 -0
  503. data/spec/redjs/jsapi_spec.rb +173 -96
  504. data/spec/spec_helper.rb +7 -0
  505. data/spec/v8/to_spec.rb +0 -1
  506. data/therubyracer.gemspec +6 -6
  507. metadata +493 -386
  508. data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +0 -849
  509. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +0 -412
  510. data/ext/v8/upstream/2.0.6/src/ast.cc +0 -512
  511. data/ext/v8/upstream/2.0.6/src/builtins.cc +0 -851
  512. data/ext/v8/upstream/2.0.6/src/compiler.cc +0 -1132
  513. data/ext/v8/upstream/2.0.6/src/compiler.h +0 -107
  514. data/ext/v8/upstream/2.0.6/src/conversions.cc +0 -709
  515. data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +0 -426
  516. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +0 -5
  517. data/ext/v8/upstream/no-strict-aliasing.patch +0 -13
  518. data/ext/v8/v8_standalone.cpp +0 -69
  519. data/ext/v8/v8_standalone.h +0 -31
  520. data/spec/ext/obj_spec.rb +0 -13
@@ -31,6 +31,7 @@
31
31
  #include "ast.h"
32
32
  #include "code-stubs.h"
33
33
  #include "runtime.h"
34
+ #include "type-info.h"
34
35
 
35
36
  // Include the declaration of the architecture defined class CodeGenerator.
36
37
  // The contract to the shared code is that the the CodeGenerator is a subclass
@@ -55,9 +56,9 @@
55
56
  // CodeGenerator
56
57
  // ~CodeGenerator
57
58
  // ProcessDeferred
58
- // GenCode
59
+ // Generate
59
60
  // ComputeLazyCompile
60
- // BuildBoilerplate
61
+ // BuildFunctionInfo
61
62
  // ComputeCallInitialize
62
63
  // ComputeCallInitializeInLoop
63
64
  // ProcessDeclarations
@@ -86,6 +87,8 @@ enum UncatchableExceptionType { OUT_OF_MEMORY, TERMINATION };
86
87
  #include "x64/codegen-x64.h"
87
88
  #elif V8_TARGET_ARCH_ARM
88
89
  #include "arm/codegen-arm.h"
90
+ #elif V8_TARGET_ARCH_MIPS
91
+ #include "mips/codegen-mips.h"
89
92
  #else
90
93
  #error Unsupported target architecture.
91
94
  #endif
@@ -96,6 +99,63 @@ namespace v8 {
96
99
  namespace internal {
97
100
 
98
101
 
102
+ #define INLINE_RUNTIME_FUNCTION_LIST(F) \
103
+ F(IsSmi, 1, 1) \
104
+ F(IsNonNegativeSmi, 1, 1) \
105
+ F(IsArray, 1, 1) \
106
+ F(IsRegExp, 1, 1) \
107
+ F(CallFunction, -1 /* receiver + n args + function */, 1) \
108
+ F(IsConstructCall, 0, 1) \
109
+ F(ArgumentsLength, 0, 1) \
110
+ F(Arguments, 1, 1) \
111
+ F(ClassOf, 1, 1) \
112
+ F(ValueOf, 1, 1) \
113
+ F(SetValueOf, 2, 1) \
114
+ F(FastCharCodeAt, 2, 1) \
115
+ F(CharFromCode, 1, 1) \
116
+ F(ObjectEquals, 2, 1) \
117
+ F(Log, 3, 1) \
118
+ F(RandomHeapNumber, 0, 1) \
119
+ F(IsObject, 1, 1) \
120
+ F(IsFunction, 1, 1) \
121
+ F(IsUndetectableObject, 1, 1) \
122
+ F(StringAdd, 2, 1) \
123
+ F(SubString, 3, 1) \
124
+ F(StringCompare, 2, 1) \
125
+ F(RegExpExec, 4, 1) \
126
+ F(RegExpConstructResult, 3, 1) \
127
+ F(GetFromCache, 2, 1) \
128
+ F(NumberToString, 1, 1) \
129
+ F(SwapElements, 3, 1) \
130
+ F(MathPow, 2, 1) \
131
+ F(MathSin, 1, 1) \
132
+ F(MathCos, 1, 1) \
133
+ F(MathSqrt, 1, 1)
134
+
135
+
136
+ // Support for "structured" code comments.
137
+ #ifdef DEBUG
138
+
139
+ class Comment BASE_EMBEDDED {
140
+ public:
141
+ Comment(MacroAssembler* masm, const char* msg);
142
+ ~Comment();
143
+
144
+ private:
145
+ MacroAssembler* masm_;
146
+ const char* msg_;
147
+ };
148
+
149
+ #else
150
+
151
+ class Comment BASE_EMBEDDED {
152
+ public:
153
+ Comment(MacroAssembler*, const char*) {}
154
+ };
155
+
156
+ #endif // DEBUG
157
+
158
+
99
159
  // Code generation can be nested. Code generation scopes form a stack
100
160
  // of active code generators.
101
161
  class CodeGeneratorScope BASE_EMBEDDED {
@@ -173,7 +233,12 @@ class DeferredCode: public ZoneObject {
173
233
  Label entry_label_;
174
234
  Label exit_label_;
175
235
 
176
- int registers_[RegisterAllocator::kNumRegisters];
236
+ // C++ doesn't allow zero length arrays, so we make the array length 1 even
237
+ // if we don't need it.
238
+ static const int kRegistersArrayLength =
239
+ (RegisterAllocator::kNumRegisters == 0) ?
240
+ 1 : RegisterAllocator::kNumRegisters;
241
+ int registers_[kRegistersArrayLength];
177
242
 
178
243
  #ifdef DEBUG
179
244
  const char* comment_;
@@ -181,43 +246,6 @@ class DeferredCode: public ZoneObject {
181
246
  DISALLOW_COPY_AND_ASSIGN(DeferredCode);
182
247
  };
183
248
 
184
-
185
- // RuntimeStub models code stubs calling entry points in the Runtime class.
186
- class RuntimeStub : public CodeStub {
187
- public:
188
- explicit RuntimeStub(Runtime::FunctionId id, int num_arguments)
189
- : id_(id), num_arguments_(num_arguments) { }
190
-
191
- void Generate(MacroAssembler* masm);
192
-
193
- // Disassembler support. It is useful to be able to print the name
194
- // of the runtime function called through this stub.
195
- static const char* GetNameFromMinorKey(int minor_key) {
196
- return Runtime::FunctionForId(IdField::decode(minor_key))->stub_name;
197
- }
198
-
199
- private:
200
- Runtime::FunctionId id_;
201
- int num_arguments_;
202
-
203
- class ArgumentField: public BitField<int, 0, 16> {};
204
- class IdField: public BitField<Runtime::FunctionId, 16, kMinorBits - 16> {};
205
-
206
- Major MajorKey() { return Runtime; }
207
- int MinorKey() {
208
- return IdField::encode(id_) | ArgumentField::encode(num_arguments_);
209
- }
210
-
211
- const char* GetName();
212
-
213
- #ifdef DEBUG
214
- void Print() {
215
- PrintF("RuntimeStub (id %s)\n", Runtime::FunctionForId(id_)->name);
216
- }
217
- #endif
218
- };
219
-
220
-
221
249
  class StackCheckStub : public CodeStub {
222
250
  public:
223
251
  StackCheckStub() { }
@@ -327,8 +355,13 @@ class CompareStub: public CodeStub {
327
355
  public:
328
356
  CompareStub(Condition cc,
329
357
  bool strict,
330
- NaNInformation nan_info = kBothCouldBeNaN) :
331
- cc_(cc), strict_(strict), never_nan_nan_(nan_info == kCantBothBeNaN) { }
358
+ NaNInformation nan_info = kBothCouldBeNaN,
359
+ bool include_number_compare = true) :
360
+ cc_(cc),
361
+ strict_(strict),
362
+ never_nan_nan_(nan_info == kCantBothBeNaN),
363
+ include_number_compare_(include_number_compare),
364
+ name_(NULL) { }
332
365
 
333
366
  void Generate(MacroAssembler* masm);
334
367
 
@@ -341,6 +374,16 @@ class CompareStub: public CodeStub {
341
374
  // generating the minor key for other comparisons to avoid creating more
342
375
  // stubs.
343
376
  bool never_nan_nan_;
377
+ // Do generate the number comparison code in the stub. Stubs without number
378
+ // comparison code is used when the number comparison has been inlined, and
379
+ // the stub will be called if one of the operands is not a number.
380
+ bool include_number_compare_;
381
+
382
+ // Encoding of the minor key CCCCCCCCCCCCCCNS.
383
+ class StrictField: public BitField<bool, 0, 1> {};
384
+ class NeverNanNanField: public BitField<bool, 1, 1> {};
385
+ class IncludeNumberCompareField: public BitField<bool, 2, 1> {};
386
+ class ConditionField: public BitField<int, 3, 13> {};
344
387
 
345
388
  Major MajorKey() { return Compare; }
346
389
 
@@ -354,12 +397,16 @@ class CompareStub: public CodeStub {
354
397
 
355
398
  // Unfortunately you have to run without snapshots to see most of these
356
399
  // names in the profile since most compare stubs end up in the snapshot.
400
+ char* name_;
357
401
  const char* GetName();
358
402
  #ifdef DEBUG
359
403
  void Print() {
360
- PrintF("CompareStub (cc %d), (strict %s)\n",
404
+ PrintF("CompareStub (cc %d), (strict %s), "
405
+ "(never_nan_nan %s), (number_compare %s)\n",
361
406
  static_cast<int>(cc_),
362
- strict_ ? "true" : "false");
407
+ strict_ ? "true" : "false",
408
+ never_nan_nan_ ? "true" : "false",
409
+ include_number_compare_ ? "included" : "not included");
363
410
  }
364
411
  #endif
365
412
  };
@@ -367,25 +414,31 @@ class CompareStub: public CodeStub {
367
414
 
368
415
  class CEntryStub : public CodeStub {
369
416
  public:
370
- explicit CEntryStub(int result_size) : result_size_(result_size) { }
417
+ explicit CEntryStub(int result_size,
418
+ ExitFrame::Mode mode = ExitFrame::MODE_NORMAL)
419
+ : result_size_(result_size), mode_(mode) { }
371
420
 
372
- void Generate(MacroAssembler* masm) { GenerateBody(masm, false); }
421
+ void Generate(MacroAssembler* masm);
373
422
 
374
- protected:
375
- void GenerateBody(MacroAssembler* masm, bool is_debug_break);
423
+ private:
376
424
  void GenerateCore(MacroAssembler* masm,
377
425
  Label* throw_normal_exception,
378
426
  Label* throw_termination_exception,
379
427
  Label* throw_out_of_memory_exception,
380
- ExitFrame::Mode mode,
381
428
  bool do_gc,
382
- bool always_allocate_scope);
429
+ bool always_allocate_scope,
430
+ int alignment_skew = 0);
383
431
  void GenerateThrowTOS(MacroAssembler* masm);
384
432
  void GenerateThrowUncatchable(MacroAssembler* masm,
385
433
  UncatchableExceptionType type);
386
- private:
434
+
387
435
  // Number of pointers/values returned.
388
- int result_size_;
436
+ const int result_size_;
437
+ const ExitFrame::Mode mode_;
438
+
439
+ // Minor key encoding
440
+ class ExitFrameModeBits: public BitField<ExitFrame::Mode, 0, 1> {};
441
+ class IndirectResultBits: public BitField<bool, 1, 1> {};
389
442
 
390
443
  Major MajorKey() { return CEntry; }
391
444
  // Minor key must differ if different result_size_ values means different
@@ -407,7 +460,7 @@ class ApiGetterEntryStub : public CodeStub {
407
460
  virtual bool GetCustomCache(Code** code_out);
408
461
  virtual void SetCustomCache(Code* value);
409
462
 
410
- static const int kStackSpace = 6;
463
+ static const int kStackSpace = 5;
411
464
  static const int kArgc = 4;
412
465
  private:
413
466
  Handle<AccessorInfo> info() { return info_; }
@@ -422,19 +475,6 @@ class ApiGetterEntryStub : public CodeStub {
422
475
  };
423
476
 
424
477
 
425
- class CEntryDebugBreakStub : public CEntryStub {
426
- public:
427
- CEntryDebugBreakStub() : CEntryStub(1) { }
428
-
429
- void Generate(MacroAssembler* masm) { GenerateBody(masm, true); }
430
-
431
- private:
432
- int MinorKey() { return 1; }
433
-
434
- const char* GetName() { return "CEntryDebugBreakStub"; }
435
- };
436
-
437
-
438
478
  class JSEntryStub : public CodeStub {
439
479
  public:
440
480
  JSEntryStub() { }
@@ -468,7 +508,6 @@ class JSConstructEntryStub : public JSEntryStub {
468
508
  class ArgumentsAccessStub: public CodeStub {
469
509
  public:
470
510
  enum Type {
471
- READ_LENGTH,
472
511
  READ_ELEMENT,
473
512
  NEW_OBJECT
474
513
  };
@@ -482,7 +521,6 @@ class ArgumentsAccessStub: public CodeStub {
482
521
  int MinorKey() { return type_; }
483
522
 
484
523
  void Generate(MacroAssembler* masm);
485
- void GenerateReadLength(MacroAssembler* masm);
486
524
  void GenerateReadElement(MacroAssembler* masm);
487
525
  void GenerateNewObject(MacroAssembler* masm);
488
526
 
@@ -516,6 +554,64 @@ class RegExpExecStub: public CodeStub {
516
554
  };
517
555
 
518
556
 
557
+ class CallFunctionStub: public CodeStub {
558
+ public:
559
+ CallFunctionStub(int argc, InLoopFlag in_loop, CallFunctionFlags flags)
560
+ : argc_(argc), in_loop_(in_loop), flags_(flags) { }
561
+
562
+ void Generate(MacroAssembler* masm);
563
+
564
+ private:
565
+ int argc_;
566
+ InLoopFlag in_loop_;
567
+ CallFunctionFlags flags_;
568
+
569
+ #ifdef DEBUG
570
+ void Print() {
571
+ PrintF("CallFunctionStub (args %d, in_loop %d, flags %d)\n",
572
+ argc_,
573
+ static_cast<int>(in_loop_),
574
+ static_cast<int>(flags_));
575
+ }
576
+ #endif
577
+
578
+ // Minor key encoding in 32 bits with Bitfield <Type, shift, size>.
579
+ class InLoopBits: public BitField<InLoopFlag, 0, 1> {};
580
+ class FlagBits: public BitField<CallFunctionFlags, 1, 1> {};
581
+ class ArgcBits: public BitField<int, 2, 32 - 2> {};
582
+
583
+ Major MajorKey() { return CallFunction; }
584
+ int MinorKey() {
585
+ // Encode the parameters in a unique 32 bit value.
586
+ return InLoopBits::encode(in_loop_)
587
+ | FlagBits::encode(flags_)
588
+ | ArgcBits::encode(argc_);
589
+ }
590
+
591
+ InLoopFlag InLoop() { return in_loop_; }
592
+ bool ReceiverMightBeValue() {
593
+ return (flags_ & RECEIVER_MIGHT_BE_VALUE) != 0;
594
+ }
595
+
596
+ public:
597
+ static int ExtractArgcFromMinorKey(int minor_key) {
598
+ return ArgcBits::decode(minor_key);
599
+ }
600
+ };
601
+
602
+
603
+ class ToBooleanStub: public CodeStub {
604
+ public:
605
+ ToBooleanStub() { }
606
+
607
+ void Generate(MacroAssembler* masm);
608
+
609
+ private:
610
+ Major MajorKey() { return ToBoolean; }
611
+ int MinorKey() { return 0; }
612
+ };
613
+
614
+
519
615
  } // namespace internal
520
616
  } // namespace v8
521
617
 
@@ -28,32 +28,28 @@
28
28
  #include "v8.h"
29
29
 
30
30
  #include "compilation-cache.h"
31
+ #include "serialize.h"
31
32
 
32
33
  namespace v8 {
33
34
  namespace internal {
34
35
 
35
-
36
36
  // The number of sub caches covering the different types to cache.
37
37
  static const int kSubCacheCount = 4;
38
38
 
39
39
  // The number of generations for each sub cache.
40
- #if defined(ANDROID)
41
- static const int kScriptGenerations = 1;
42
- static const int kEvalGlobalGenerations = 1;
43
- static const int kEvalContextualGenerations = 1;
44
- static const int kRegExpGenerations = 1;
45
- #else
46
40
  // The number of ScriptGenerations is carefully chosen based on histograms.
47
41
  // See issue 458: http://code.google.com/p/v8/issues/detail?id=458
48
42
  static const int kScriptGenerations = 5;
49
43
  static const int kEvalGlobalGenerations = 2;
50
44
  static const int kEvalContextualGenerations = 2;
51
45
  static const int kRegExpGenerations = 2;
52
- #endif
53
46
 
54
47
  // Initial size of each compilation cache table allocated.
55
48
  static const int kInitialCacheSize = 64;
56
49
 
50
+ // Index for the first generation in the cache.
51
+ static const int kFirstGeneration = 0;
52
+
57
53
  // The compilation cache consists of several generational sub-caches which uses
58
54
  // this class as a base class. A sub-cache contains a compilation cache tables
59
55
  // for each generation of the sub-cache. Since the same source code string has
@@ -70,6 +66,15 @@ class CompilationSubCache {
70
66
  // Get the compilation cache tables for a specific generation.
71
67
  Handle<CompilationCacheTable> GetTable(int generation);
72
68
 
69
+ // Accessors for first generation.
70
+ Handle<CompilationCacheTable> GetFirstTable() {
71
+ return GetTable(kFirstGeneration);
72
+ }
73
+ void SetFirstTable(Handle<CompilationCacheTable> value) {
74
+ ASSERT(kFirstGeneration < generations_);
75
+ tables_[kFirstGeneration] = *value;
76
+ }
77
+
73
78
  // Age the sub-cache by evicting the oldest generation and creating a new
74
79
  // young generation.
75
80
  void Age();
@@ -97,14 +102,18 @@ class CompilationCacheScript : public CompilationSubCache {
97
102
  explicit CompilationCacheScript(int generations)
98
103
  : CompilationSubCache(generations) { }
99
104
 
100
- Handle<JSFunction> Lookup(Handle<String> source,
101
- Handle<Object> name,
102
- int line_offset,
103
- int column_offset);
104
- void Put(Handle<String> source, Handle<JSFunction> boilerplate);
105
+ Handle<SharedFunctionInfo> Lookup(Handle<String> source,
106
+ Handle<Object> name,
107
+ int line_offset,
108
+ int column_offset);
109
+ void Put(Handle<String> source, Handle<SharedFunctionInfo> function_info);
105
110
 
106
111
  private:
107
- bool HasOrigin(Handle<JSFunction> boilerplate,
112
+ // Note: Returns a new hash table if operation results in expansion.
113
+ Handle<CompilationCacheTable> TablePut(
114
+ Handle<String> source, Handle<SharedFunctionInfo> function_info);
115
+
116
+ bool HasOrigin(Handle<SharedFunctionInfo> function_info,
108
117
  Handle<Object> name,
109
118
  int line_offset,
110
119
  int column_offset);
@@ -119,11 +128,19 @@ class CompilationCacheEval: public CompilationSubCache {
119
128
  explicit CompilationCacheEval(int generations)
120
129
  : CompilationSubCache(generations) { }
121
130
 
122
- Handle<JSFunction> Lookup(Handle<String> source, Handle<Context> context);
131
+ Handle<SharedFunctionInfo> Lookup(Handle<String> source,
132
+ Handle<Context> context);
123
133
 
124
134
  void Put(Handle<String> source,
125
135
  Handle<Context> context,
126
- Handle<JSFunction> boilerplate);
136
+ Handle<SharedFunctionInfo> function_info);
137
+
138
+ private:
139
+ // Note: Returns a new hash table if operation results in expansion.
140
+ Handle<CompilationCacheTable> TablePut(
141
+ Handle<String> source,
142
+ Handle<Context> context,
143
+ Handle<SharedFunctionInfo> function_info);
127
144
 
128
145
  DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheEval);
129
146
  };
@@ -140,6 +157,11 @@ class CompilationCacheRegExp: public CompilationSubCache {
140
157
  void Put(Handle<String> source,
141
158
  JSRegExp::Flags flags,
142
159
  Handle<FixedArray> data);
160
+ private:
161
+ // Note: Returns a new hash table if operation results in expansion.
162
+ Handle<CompilationCacheTable> TablePut(Handle<String> source,
163
+ JSRegExp::Flags flags,
164
+ Handle<FixedArray> data);
143
165
 
144
166
  DISALLOW_IMPLICIT_CONSTRUCTORS(CompilationCacheRegExp);
145
167
  };
@@ -199,21 +221,20 @@ void CompilationSubCache::Iterate(ObjectVisitor* v) {
199
221
 
200
222
 
201
223
  void CompilationSubCache::Clear() {
202
- for (int i = 0; i < generations_; i++) {
203
- tables_[i] = Heap::undefined_value();
204
- }
224
+ MemsetPointer(tables_, Heap::undefined_value(), generations_);
205
225
  }
206
226
 
207
227
 
208
228
  // We only re-use a cached function for some script source code if the
209
229
  // script originates from the same place. This is to avoid issues
210
230
  // when reporting errors, etc.
211
- bool CompilationCacheScript::HasOrigin(Handle<JSFunction> boilerplate,
212
- Handle<Object> name,
213
- int line_offset,
214
- int column_offset) {
231
+ bool CompilationCacheScript::HasOrigin(
232
+ Handle<SharedFunctionInfo> function_info,
233
+ Handle<Object> name,
234
+ int line_offset,
235
+ int column_offset) {
215
236
  Handle<Script> script =
216
- Handle<Script>(Script::cast(boilerplate->shared()->script()));
237
+ Handle<Script>(Script::cast(function_info->script()));
217
238
  // If the script name isn't set, the boilerplate script should have
218
239
  // an undefined name to have the same origin.
219
240
  if (name.is_null()) {
@@ -233,10 +254,10 @@ bool CompilationCacheScript::HasOrigin(Handle<JSFunction> boilerplate,
233
254
  // be cached in the same script generation. Currently the first use
234
255
  // will be cached, but subsequent code from different source / line
235
256
  // won't.
236
- Handle<JSFunction> CompilationCacheScript::Lookup(Handle<String> source,
237
- Handle<Object> name,
238
- int line_offset,
239
- int column_offset) {
257
+ Handle<SharedFunctionInfo> CompilationCacheScript::Lookup(Handle<String> source,
258
+ Handle<Object> name,
259
+ int line_offset,
260
+ int column_offset) {
240
261
  Object* result = NULL;
241
262
  int generation;
242
263
 
@@ -246,12 +267,13 @@ Handle<JSFunction> CompilationCacheScript::Lookup(Handle<String> source,
246
267
  for (generation = 0; generation < generations(); generation++) {
247
268
  Handle<CompilationCacheTable> table = GetTable(generation);
248
269
  Handle<Object> probe(table->Lookup(*source));
249
- if (probe->IsJSFunction()) {
250
- Handle<JSFunction> boilerplate = Handle<JSFunction>::cast(probe);
251
- // Break when we've found a suitable boilerplate function that
270
+ if (probe->IsSharedFunctionInfo()) {
271
+ Handle<SharedFunctionInfo> function_info =
272
+ Handle<SharedFunctionInfo>::cast(probe);
273
+ // Break when we've found a suitable shared function info that
252
274
  // matches the origin.
253
- if (HasOrigin(boilerplate, name, line_offset, column_offset)) {
254
- result = *boilerplate;
275
+ if (HasOrigin(function_info, name, line_offset, column_offset)) {
276
+ result = *function_info;
255
277
  break;
256
278
  }
257
279
  }
@@ -273,31 +295,37 @@ Handle<JSFunction> CompilationCacheScript::Lookup(Handle<String> source,
273
295
  // to see if we actually found a cached script. If so, we return a
274
296
  // handle created in the caller's handle scope.
275
297
  if (result != NULL) {
276
- Handle<JSFunction> boilerplate(JSFunction::cast(result));
277
- ASSERT(HasOrigin(boilerplate, name, line_offset, column_offset));
298
+ Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(result));
299
+ ASSERT(HasOrigin(shared, name, line_offset, column_offset));
278
300
  // If the script was found in a later generation, we promote it to
279
301
  // the first generation to let it survive longer in the cache.
280
- if (generation != 0) Put(source, boilerplate);
302
+ if (generation != 0) Put(source, shared);
281
303
  Counters::compilation_cache_hits.Increment();
282
- return boilerplate;
304
+ return shared;
283
305
  } else {
284
306
  Counters::compilation_cache_misses.Increment();
285
- return Handle<JSFunction>::null();
307
+ return Handle<SharedFunctionInfo>::null();
286
308
  }
287
309
  }
288
310
 
289
311
 
312
+ Handle<CompilationCacheTable> CompilationCacheScript::TablePut(
313
+ Handle<String> source,
314
+ Handle<SharedFunctionInfo> function_info) {
315
+ CALL_HEAP_FUNCTION(GetFirstTable()->Put(*source, *function_info),
316
+ CompilationCacheTable);
317
+ }
318
+
319
+
290
320
  void CompilationCacheScript::Put(Handle<String> source,
291
- Handle<JSFunction> boilerplate) {
321
+ Handle<SharedFunctionInfo> function_info) {
292
322
  HandleScope scope;
293
- ASSERT(boilerplate->IsBoilerplate());
294
- Handle<CompilationCacheTable> table = GetTable(0);
295
- CALL_HEAP_FUNCTION_VOID(table->Put(*source, *boilerplate));
323
+ SetFirstTable(TablePut(source, function_info));
296
324
  }
297
325
 
298
326
 
299
- Handle<JSFunction> CompilationCacheEval::Lookup(Handle<String> source,
300
- Handle<Context> context) {
327
+ Handle<SharedFunctionInfo> CompilationCacheEval::Lookup(
328
+ Handle<String> source, Handle<Context> context) {
301
329
  // Make sure not to leak the table into the surrounding handle
302
330
  // scope. Otherwise, we risk keeping old tables around even after
303
331
  // having cleared the cache.
@@ -307,32 +335,42 @@ Handle<JSFunction> CompilationCacheEval::Lookup(Handle<String> source,
307
335
  for (generation = 0; generation < generations(); generation++) {
308
336
  Handle<CompilationCacheTable> table = GetTable(generation);
309
337
  result = table->LookupEval(*source, *context);
310
- if (result->IsJSFunction()) {
338
+ if (result->IsSharedFunctionInfo()) {
311
339
  break;
312
340
  }
313
341
  }
314
342
  }
315
- if (result->IsJSFunction()) {
316
- Handle<JSFunction> boilerplate(JSFunction::cast(result));
343
+ if (result->IsSharedFunctionInfo()) {
344
+ Handle<SharedFunctionInfo>
345
+ function_info(SharedFunctionInfo::cast(result));
317
346
  if (generation != 0) {
318
- Put(source, context, boilerplate);
347
+ Put(source, context, function_info);
319
348
  }
320
349
  Counters::compilation_cache_hits.Increment();
321
- return boilerplate;
350
+ return function_info;
322
351
  } else {
323
352
  Counters::compilation_cache_misses.Increment();
324
- return Handle<JSFunction>::null();
353
+ return Handle<SharedFunctionInfo>::null();
325
354
  }
326
355
  }
327
356
 
328
357
 
358
+ Handle<CompilationCacheTable> CompilationCacheEval::TablePut(
359
+ Handle<String> source,
360
+ Handle<Context> context,
361
+ Handle<SharedFunctionInfo> function_info) {
362
+ CALL_HEAP_FUNCTION(GetFirstTable()->PutEval(*source,
363
+ *context,
364
+ *function_info),
365
+ CompilationCacheTable);
366
+ }
367
+
368
+
329
369
  void CompilationCacheEval::Put(Handle<String> source,
330
370
  Handle<Context> context,
331
- Handle<JSFunction> boilerplate) {
371
+ Handle<SharedFunctionInfo> function_info) {
332
372
  HandleScope scope;
333
- ASSERT(boilerplate->IsBoilerplate());
334
- Handle<CompilationCacheTable> table = GetTable(0);
335
- CALL_HEAP_FUNCTION_VOID(table->PutEval(*source, *context, *boilerplate));
373
+ SetFirstTable(TablePut(source, context, function_info));
336
374
  }
337
375
 
338
376
 
@@ -366,35 +404,43 @@ Handle<FixedArray> CompilationCacheRegExp::Lookup(Handle<String> source,
366
404
  }
367
405
 
368
406
 
407
+ Handle<CompilationCacheTable> CompilationCacheRegExp::TablePut(
408
+ Handle<String> source,
409
+ JSRegExp::Flags flags,
410
+ Handle<FixedArray> data) {
411
+ CALL_HEAP_FUNCTION(GetFirstTable()->PutRegExp(*source, flags, *data),
412
+ CompilationCacheTable);
413
+ }
414
+
415
+
369
416
  void CompilationCacheRegExp::Put(Handle<String> source,
370
417
  JSRegExp::Flags flags,
371
418
  Handle<FixedArray> data) {
372
419
  HandleScope scope;
373
- Handle<CompilationCacheTable> table = GetTable(0);
374
- CALL_HEAP_FUNCTION_VOID(table->PutRegExp(*source, flags, *data));
420
+ SetFirstTable(TablePut(source, flags, data));
375
421
  }
376
422
 
377
423
 
378
- Handle<JSFunction> CompilationCache::LookupScript(Handle<String> source,
379
- Handle<Object> name,
380
- int line_offset,
381
- int column_offset) {
424
+ Handle<SharedFunctionInfo> CompilationCache::LookupScript(Handle<String> source,
425
+ Handle<Object> name,
426
+ int line_offset,
427
+ int column_offset) {
382
428
  if (!IsEnabled()) {
383
- return Handle<JSFunction>::null();
429
+ return Handle<SharedFunctionInfo>::null();
384
430
  }
385
431
 
386
432
  return script.Lookup(source, name, line_offset, column_offset);
387
433
  }
388
434
 
389
435
 
390
- Handle<JSFunction> CompilationCache::LookupEval(Handle<String> source,
391
- Handle<Context> context,
392
- bool is_global) {
436
+ Handle<SharedFunctionInfo> CompilationCache::LookupEval(Handle<String> source,
437
+ Handle<Context> context,
438
+ bool is_global) {
393
439
  if (!IsEnabled()) {
394
- return Handle<JSFunction>::null();
440
+ return Handle<SharedFunctionInfo>::null();
395
441
  }
396
442
 
397
- Handle<JSFunction> result;
443
+ Handle<SharedFunctionInfo> result;
398
444
  if (is_global) {
399
445
  result = eval_global.Lookup(source, context);
400
446
  } else {
@@ -415,30 +461,28 @@ Handle<FixedArray> CompilationCache::LookupRegExp(Handle<String> source,
415
461
 
416
462
 
417
463
  void CompilationCache::PutScript(Handle<String> source,
418
- Handle<JSFunction> boilerplate) {
464
+ Handle<SharedFunctionInfo> function_info) {
419
465
  if (!IsEnabled()) {
420
466
  return;
421
467
  }
422
468
 
423
- ASSERT(boilerplate->IsBoilerplate());
424
- script.Put(source, boilerplate);
469
+ script.Put(source, function_info);
425
470
  }
426
471
 
427
472
 
428
473
  void CompilationCache::PutEval(Handle<String> source,
429
474
  Handle<Context> context,
430
475
  bool is_global,
431
- Handle<JSFunction> boilerplate) {
476
+ Handle<SharedFunctionInfo> function_info) {
432
477
  if (!IsEnabled()) {
433
478
  return;
434
479
  }
435
480
 
436
481
  HandleScope scope;
437
- ASSERT(boilerplate->IsBoilerplate());
438
482
  if (is_global) {
439
- eval_global.Put(source, context, boilerplate);
483
+ eval_global.Put(source, context, function_info);
440
484
  } else {
441
- eval_contextual.Put(source, context, boilerplate);
485
+ eval_contextual.Put(source, context, function_info);
442
486
  }
443
487
  }
444
488