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
@@ -30,12 +30,15 @@
30
30
 
31
31
  #include <math.h>
32
32
 
33
- #include "zone-inl.h"
34
-
33
+ #include "splay-tree-inl.h"
34
+ #include "v8-counters.h"
35
35
 
36
36
  namespace v8 {
37
37
  namespace internal {
38
38
 
39
+ // Forward declarations.
40
+ class ZoneScopeInfo;
41
+
39
42
  // Defines all the roots in Heap.
40
43
  #define UNCONDITIONAL_STRONG_ROOT_LIST(V) \
41
44
  /* Put the byte array map early. We need it to be in place by the time */ \
@@ -86,7 +89,6 @@ namespace internal {
86
89
  V(Map, code_map, CodeMap) \
87
90
  V(Map, oddball_map, OddballMap) \
88
91
  V(Map, global_property_cell_map, GlobalPropertyCellMap) \
89
- V(Map, boilerplate_function_map, BoilerplateFunctionMap) \
90
92
  V(Map, shared_function_info_map, SharedFunctionInfoMap) \
91
93
  V(Map, proxy_map, ProxyMap) \
92
94
  V(Object, nan_value, NanValue) \
@@ -101,14 +103,14 @@ namespace internal {
101
103
  V(Code, js_entry_code, JsEntryCode) \
102
104
  V(Code, js_construct_entry_code, JsConstructEntryCode) \
103
105
  V(Code, c_entry_code, CEntryCode) \
104
- V(Code, c_entry_debug_break_code, CEntryDebugBreakCode) \
105
106
  V(FixedArray, number_string_cache, NumberStringCache) \
106
107
  V(FixedArray, single_character_string_cache, SingleCharacterStringCache) \
107
108
  V(FixedArray, natives_source_cache, NativesSourceCache) \
108
109
  V(Object, last_script_id, LastScriptId) \
110
+ V(Script, empty_script, EmptyScript) \
109
111
  V(Smi, real_stack_limit, RealStackLimit) \
110
112
 
111
- #if V8_TARGET_ARCH_ARM && V8_NATIVE_REGEXP
113
+ #if V8_TARGET_ARCH_ARM && !V8_INTERPRETED_REGEXP
112
114
  #define STRONG_ROOT_LIST(V) \
113
115
  UNCONDITIONAL_STRONG_ROOT_LIST(V) \
114
116
  V(Code, re_c_entry_code, RegExpCEntryCode)
@@ -146,6 +148,13 @@ namespace internal {
146
148
  V(number_symbol, "number") \
147
149
  V(Number_symbol, "Number") \
148
150
  V(RegExp_symbol, "RegExp") \
151
+ V(source_symbol, "source") \
152
+ V(global_symbol, "global") \
153
+ V(ignore_case_symbol, "ignoreCase") \
154
+ V(multiline_symbol, "multiline") \
155
+ V(input_symbol, "input") \
156
+ V(index_symbol, "index") \
157
+ V(last_index_symbol, "lastIndex") \
149
158
  V(object_symbol, "object") \
150
159
  V(prototype_symbol, "prototype") \
151
160
  V(string_symbol, "string") \
@@ -192,6 +201,9 @@ class GCTracer;
192
201
  class HeapStats;
193
202
 
194
203
 
204
+ typedef String* (*ExternalStringTableUpdaterCallback)(Object** pointer);
205
+
206
+
195
207
  // The all static Heap captures the interface to the global object heap.
196
208
  // All JavaScript contexts by this process share the same object heap.
197
209
 
@@ -346,6 +358,9 @@ class Heap : public AllStatic {
346
358
  // Allocate a map for the specified function
347
359
  static Object* AllocateInitialMap(JSFunction* fun);
348
360
 
361
+ // Allocates an empty code cache.
362
+ static Object* AllocateCodeCache();
363
+
349
364
  // Allocates and fully initializes a String. There are two String
350
365
  // encodings: ASCII and two byte. One should choose between the three string
351
366
  // allocation functions based on the encoding of the string buffer used to
@@ -450,9 +465,16 @@ class Heap : public AllStatic {
450
465
  // failed.
451
466
  // Please note this does not perform a garbage collection.
452
467
  static Object* AllocateFixedArray(int length, PretenureFlag pretenure);
453
- // Allocate uninitialized, non-tenured fixed array with length elements.
468
+ // Allocates a fixed array initialized with undefined values
454
469
  static Object* AllocateFixedArray(int length);
455
470
 
471
+ // Allocates an uninitialized fixed array. It must be filled by the caller.
472
+ //
473
+ // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
474
+ // failed.
475
+ // Please note this does not perform a garbage collection.
476
+ static Object* AllocateUninitializedFixedArray(int length);
477
+
456
478
  // Make a copy of src and return it. Returns
457
479
  // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed.
458
480
  static Object* CopyFixedArray(FixedArray* src);
@@ -461,11 +483,14 @@ class Heap : public AllStatic {
461
483
  // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
462
484
  // failed.
463
485
  // Please note this does not perform a garbage collection.
464
- static Object* AllocateFixedArrayWithHoles(int length);
486
+ static Object* AllocateFixedArrayWithHoles(
487
+ int length,
488
+ PretenureFlag pretenure = NOT_TENURED);
465
489
 
466
490
  // AllocateHashTable is identical to AllocateFixedArray except
467
491
  // that the resulting object has hash_table_map as map.
468
- static Object* AllocateHashTable(int length);
492
+ static Object* AllocateHashTable(int length,
493
+ PretenureFlag pretenure = NOT_TENURED);
469
494
 
470
495
  // Allocate a global (but otherwise uninitialized) context.
471
496
  static Object* AllocateGlobalContext();
@@ -502,13 +527,6 @@ class Heap : public AllStatic {
502
527
  // Please note this does not perform a garbage collection.
503
528
  static Object* AllocateArgumentsObject(Object* callee, int length);
504
529
 
505
- // Converts a double into either a Smi or a HeapNumber object.
506
- // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
507
- // failed.
508
- // Please note this does not perform a garbage collection.
509
- static Object* NewNumberFromDouble(double value,
510
- PretenureFlag pretenure = NOT_TENURED);
511
-
512
530
  // Same as NewNumberFromDouble, but may return a preallocated/immutable
513
531
  // number object (e.g., minus_zero_value_, nan_value_)
514
532
  static Object* NumberFromDouble(double value,
@@ -557,7 +575,8 @@ class Heap : public AllStatic {
557
575
  // Please note this does not perform a garbage collection.
558
576
  static Object* AllocateSubString(String* buffer,
559
577
  int start,
560
- int end);
578
+ int end,
579
+ PretenureFlag pretenure = NOT_TENURED);
561
580
 
562
581
  // Allocate a new external string object, which is backed by a string
563
582
  // resource that resides outside the V8 heap.
@@ -598,6 +617,11 @@ class Heap : public AllStatic {
598
617
  Handle<Object> self_reference);
599
618
 
600
619
  static Object* CopyCode(Code* code);
620
+
621
+ // Copy the code and scope info part of the code object, but insert
622
+ // the provided data as the relocation information.
623
+ static Object* CopyCode(Code* code, Vector<byte> reloc_info);
624
+
601
625
  // Finds the symbol for string in the symbol table.
602
626
  // If not found, a new symbol is added to the table and returned.
603
627
  // Returns Failure::RetryAfterGC(requested_bytes, space) if allocation
@@ -615,6 +639,15 @@ class Heap : public AllStatic {
615
639
  // NULL is returned if string is in new space or not flattened.
616
640
  static Map* SymbolMapForString(String* str);
617
641
 
642
+ // Tries to flatten a string before compare operation.
643
+ //
644
+ // Returns a failure in case it was decided that flattening was
645
+ // necessary and failed. Note, if flattening is not necessary the
646
+ // string might stay non-flat even when not a failure is returned.
647
+ //
648
+ // Please note this function does not perform a garbage collection.
649
+ static inline Object* PrepareForCompare(String* str);
650
+
618
651
  // Converts the given boolean condition to JavaScript boolean value.
619
652
  static Object* ToBoolean(bool condition) {
620
653
  return condition ? true_value() : false_value();
@@ -633,12 +666,8 @@ class Heap : public AllStatic {
633
666
  // parameter is true.
634
667
  static void CollectAllGarbage(bool force_compaction);
635
668
 
636
- // Performs a full garbage collection if a context has been disposed
637
- // since the last time the check was performed.
638
- static void CollectAllGarbageIfContextDisposed();
639
-
640
669
  // Notify the heap that a context has been disposed.
641
- static void NotifyContextDisposed();
670
+ static int NotifyContextDisposed() { return ++contexts_disposed_; }
642
671
 
643
672
  // Utility to invoke the scavenger. This is needed in test code to
644
673
  // ensure correct callback for weak global handles.
@@ -649,10 +678,20 @@ class Heap : public AllStatic {
649
678
  static bool GarbageCollectionGreedyCheck();
650
679
  #endif
651
680
 
681
+ static void AddGCPrologueCallback(
682
+ GCEpilogueCallback callback, GCType gc_type_filter);
683
+ static void RemoveGCPrologueCallback(GCEpilogueCallback callback);
684
+
685
+ static void AddGCEpilogueCallback(
686
+ GCEpilogueCallback callback, GCType gc_type_filter);
687
+ static void RemoveGCEpilogueCallback(GCEpilogueCallback callback);
688
+
652
689
  static void SetGlobalGCPrologueCallback(GCCallback callback) {
690
+ ASSERT((callback == NULL) ^ (global_gc_prologue_callback_ == NULL));
653
691
  global_gc_prologue_callback_ = callback;
654
692
  }
655
693
  static void SetGlobalGCEpilogueCallback(GCCallback callback) {
694
+ ASSERT((callback == NULL) ^ (global_gc_epilogue_callback_ == NULL));
656
695
  global_gc_epilogue_callback_ = callback;
657
696
  }
658
697
 
@@ -690,6 +729,8 @@ class Heap : public AllStatic {
690
729
  static void IterateRoots(ObjectVisitor* v, VisitMode mode);
691
730
  // Iterates over all strong roots in the heap.
692
731
  static void IterateStrongRoots(ObjectVisitor* v, VisitMode mode);
732
+ // Iterates over all the other roots in the heap.
733
+ static void IterateWeakRoots(ObjectVisitor* v, VisitMode mode);
693
734
 
694
735
  // Iterates remembered set of an old space.
695
736
  static void IterateRSet(PagedSpace* space, ObjectSlotCallback callback);
@@ -732,6 +773,10 @@ class Heap : public AllStatic {
732
773
  roots_[kNonMonomorphicCacheRootIndex] = value;
733
774
  }
734
775
 
776
+ static void public_set_empty_script(Script* script) {
777
+ roots_[kEmptyScriptRootIndex] = script;
778
+ }
779
+
735
780
  // Update the next script id.
736
781
  static inline void SetLastScriptId(Object* last_script_id);
737
782
 
@@ -768,6 +813,9 @@ class Heap : public AllStatic {
768
813
  // Write barrier support for address[offset] = o.
769
814
  static inline void RecordWrite(Address address, int offset);
770
815
 
816
+ // Write barrier support for address[start : start + len[ = o.
817
+ static inline void RecordWrites(Address address, int start, int len);
818
+
771
819
  // Given an address occupied by a live code object, return that object.
772
820
  static Object* FindCodeObject(Address a);
773
821
 
@@ -842,8 +890,10 @@ class Heap : public AllStatic {
842
890
  // Returns the adjusted value.
843
891
  static inline int AdjustAmountOfExternalAllocatedMemory(int change_in_bytes);
844
892
 
845
- // Allocate unitialized fixed array (pretenure == NON_TENURE).
893
+ // Allocate uninitialized fixed array.
846
894
  static Object* AllocateRawFixedArray(int length);
895
+ static Object* AllocateRawFixedArray(int length,
896
+ PretenureFlag pretenure);
847
897
 
848
898
  // True if we have reached the allocation limit in the old generation that
849
899
  // should force the next GC (caused normally) to be a full one.
@@ -886,7 +936,8 @@ class Heap : public AllStatic {
886
936
  kRootListLength
887
937
  };
888
938
 
889
- static Object* NumberToString(Object* number);
939
+ static Object* NumberToString(Object* number,
940
+ bool check_number_string_cache = true);
890
941
 
891
942
  static Map* MapForExternalArrayType(ExternalArrayType array_type);
892
943
  static RootListIndex RootIndexForExternalArrayType(
@@ -894,6 +945,32 @@ class Heap : public AllStatic {
894
945
 
895
946
  static void RecordStats(HeapStats* stats);
896
947
 
948
+ // Copy block of memory from src to dst. Size of block should be aligned
949
+ // by pointer size.
950
+ static inline void CopyBlock(Object** dst, Object** src, int byte_size);
951
+
952
+ // Optimized version of memmove for blocks with pointer size aligned sizes and
953
+ // pointer size aligned addresses.
954
+ static inline void MoveBlock(Object** dst, Object** src, int byte_size);
955
+
956
+ // Check new space expansion criteria and expand semispaces if it was hit.
957
+ static void CheckNewSpaceExpansionCriteria();
958
+
959
+ static inline void IncrementYoungSurvivorsCounter(int survived) {
960
+ survived_since_last_expansion_ += survived;
961
+ }
962
+
963
+ static void UpdateNewSpaceReferencesInExternalStringTable(
964
+ ExternalStringTableUpdaterCallback updater_func);
965
+
966
+ // Helper function that governs the promotion policy from new space to
967
+ // old. If the object's old address lies below the new space's age
968
+ // mark or if we've already filled the bottom 1/16th of the to space,
969
+ // we try to promote this object.
970
+ static inline bool ShouldBePromoted(Address old_address, int object_size);
971
+
972
+ static int MaxObjectSizeInNewSpace() { return kMaxObjectSizeInNewSpace; }
973
+
897
974
  private:
898
975
  static int reserved_semispace_size_;
899
976
  static int max_semispace_size_;
@@ -907,7 +984,9 @@ class Heap : public AllStatic {
907
984
 
908
985
  static int always_allocate_scope_depth_;
909
986
  static int linear_allocation_scope_depth_;
910
- static bool context_disposed_pending_;
987
+
988
+ // For keeping track of context disposals.
989
+ static int contexts_disposed_;
911
990
 
912
991
  #if defined(V8_TARGET_ARCH_X64)
913
992
  static const int kMaxObjectSizeInNewSpace = 512*KB;
@@ -933,6 +1012,9 @@ class Heap : public AllStatic {
933
1012
  static int mc_count_; // how many mark-compact collections happened
934
1013
  static int gc_count_; // how many gc happened
935
1014
 
1015
+ // Total length of the strings we failed to flatten since the last GC.
1016
+ static int unflattened_strings_length_;
1017
+
936
1018
  #define ROOT_ACCESSOR(type, name, camel_name) \
937
1019
  static inline void set_##name(type* value) { \
938
1020
  roots_[k##camel_name##RootIndex] = value; \
@@ -1007,6 +1089,30 @@ class Heap : public AllStatic {
1007
1089
 
1008
1090
  // GC callback function, called before and after mark-compact GC.
1009
1091
  // Allocations in the callback function are disallowed.
1092
+ struct GCPrologueCallbackPair {
1093
+ GCPrologueCallbackPair(GCPrologueCallback callback, GCType gc_type)
1094
+ : callback(callback), gc_type(gc_type) {
1095
+ }
1096
+ bool operator==(const GCPrologueCallbackPair& pair) const {
1097
+ return pair.callback == callback;
1098
+ }
1099
+ GCPrologueCallback callback;
1100
+ GCType gc_type;
1101
+ };
1102
+ static List<GCPrologueCallbackPair> gc_prologue_callbacks_;
1103
+
1104
+ struct GCEpilogueCallbackPair {
1105
+ GCEpilogueCallbackPair(GCEpilogueCallback callback, GCType gc_type)
1106
+ : callback(callback), gc_type(gc_type) {
1107
+ }
1108
+ bool operator==(const GCEpilogueCallbackPair& pair) const {
1109
+ return pair.callback == callback;
1110
+ }
1111
+ GCEpilogueCallback callback;
1112
+ GCType gc_type;
1113
+ };
1114
+ static List<GCEpilogueCallbackPair> gc_epilogue_callbacks_;
1115
+
1010
1116
  static GCCallback global_gc_prologue_callback_;
1011
1117
  static GCCallback global_gc_epilogue_callback_;
1012
1118
 
@@ -1018,12 +1124,6 @@ class Heap : public AllStatic {
1018
1124
  GarbageCollector collector,
1019
1125
  GCTracer* tracer);
1020
1126
 
1021
- // Returns either a Smi or a Number object from 'value'. If 'new_object'
1022
- // is false, it may return a preallocated immutable object.
1023
- static Object* SmiOrNumberFromDouble(double value,
1024
- bool new_object,
1025
- PretenureFlag pretenure = NOT_TENURED);
1026
-
1027
1127
  // Allocate an uninitialized object in map space. The behavior is identical
1028
1128
  // to Heap::AllocateRaw(size_in_bytes, MAP_SPACE), except that (a) it doesn't
1029
1129
  // have to test the allocation space argument and (b) can reduce code size
@@ -1044,23 +1144,23 @@ class Heap : public AllStatic {
1044
1144
  // These four Create*EntryStub functions are here because of a gcc-4.4 bug
1045
1145
  // that assigns wrong vtable entries.
1046
1146
  static void CreateCEntryStub();
1047
- static void CreateCEntryDebugBreakStub();
1048
1147
  static void CreateJSEntryStub();
1049
1148
  static void CreateJSConstructEntryStub();
1050
1149
  static void CreateRegExpCEntryStub();
1051
1150
 
1052
1151
  static void CreateFixedStubs();
1053
1152
 
1054
- static Object* CreateOddball(Map* map,
1055
- const char* to_string,
1056
- Object* to_number);
1153
+ static Object* CreateOddball(const char* to_string, Object* to_number);
1057
1154
 
1058
1155
  // Allocate empty fixed array.
1059
1156
  static Object* AllocateEmptyFixedArray();
1060
1157
 
1061
1158
  // Performs a minor collection in new generation.
1062
1159
  static void Scavenge();
1063
- static void ScavengeExternalStringTable();
1160
+
1161
+ static String* UpdateNewSpaceReferenceInExternalStringTableEntry(
1162
+ Object** pointer);
1163
+
1064
1164
  static Address DoScavenge(ObjectVisitor* scavenge_visitor,
1065
1165
  Address new_space_front);
1066
1166
 
@@ -1078,11 +1178,8 @@ class Heap : public AllStatic {
1078
1178
  HeapObject* target,
1079
1179
  int size);
1080
1180
 
1081
- // Helper function that governs the promotion policy from new space to
1082
- // old. If the object's old address lies below the new space's age
1083
- // mark or if we've already filled the bottom 1/16th of the to space,
1084
- // we try to promote this object.
1085
- static inline bool ShouldBePromoted(Address old_address, int object_size);
1181
+ static void ClearJSFunctionResultCaches();
1182
+
1086
1183
  #if defined(DEBUG) || defined(ENABLE_LOGGING_AND_PROFILING)
1087
1184
  // Record the copy of an object in the NewSpace's statistics.
1088
1185
  static void RecordCopiedObject(HeapObject* obj);
@@ -1101,9 +1198,6 @@ class Heap : public AllStatic {
1101
1198
  // Slow part of scavenge object.
1102
1199
  static void ScavengeObjectSlow(HeapObject** p, HeapObject* object);
1103
1200
 
1104
- // Copy memory from src to dst.
1105
- static inline void CopyBlock(Object** dst, Object** src, int byte_size);
1106
-
1107
1201
  // Initializes a function with a shared part and prototype.
1108
1202
  // Returns the function.
1109
1203
  // Note: this code was factored out of AllocateFunction such that
@@ -1132,26 +1226,26 @@ class Heap : public AllStatic {
1132
1226
 
1133
1227
  class HeapStats {
1134
1228
  public:
1135
- int *start_marker;
1136
- int *new_space_size;
1137
- int *new_space_capacity;
1138
- int *old_pointer_space_size;
1139
- int *old_pointer_space_capacity;
1140
- int *old_data_space_size;
1141
- int *old_data_space_capacity;
1142
- int *code_space_size;
1143
- int *code_space_capacity;
1144
- int *map_space_size;
1145
- int *map_space_capacity;
1146
- int *cell_space_size;
1147
- int *cell_space_capacity;
1148
- int *lo_space_size;
1149
- int *global_handle_count;
1150
- int *weak_global_handle_count;
1151
- int *pending_global_handle_count;
1152
- int *near_death_global_handle_count;
1153
- int *destroyed_global_handle_count;
1154
- int *end_marker;
1229
+ int* start_marker;
1230
+ int* new_space_size;
1231
+ int* new_space_capacity;
1232
+ int* old_pointer_space_size;
1233
+ int* old_pointer_space_capacity;
1234
+ int* old_data_space_size;
1235
+ int* old_data_space_capacity;
1236
+ int* code_space_size;
1237
+ int* code_space_capacity;
1238
+ int* map_space_size;
1239
+ int* map_space_capacity;
1240
+ int* cell_space_size;
1241
+ int* cell_space_capacity;
1242
+ int* lo_space_size;
1243
+ int* global_handle_count;
1244
+ int* weak_global_handle_count;
1245
+ int* pending_global_handle_count;
1246
+ int* near_death_global_handle_count;
1247
+ int* destroyed_global_handle_count;
1248
+ int* end_marker;
1155
1249
  };
1156
1250
 
1157
1251
 
@@ -1290,7 +1384,6 @@ class HeapIterator BASE_EMBEDDED {
1290
1384
  explicit HeapIterator();
1291
1385
  virtual ~HeapIterator();
1292
1386
 
1293
- bool has_next();
1294
1387
  HeapObject* next();
1295
1388
  void reset();
1296
1389
 
@@ -1384,9 +1477,9 @@ class DescriptorLookupCache {
1384
1477
  private:
1385
1478
  static int Hash(DescriptorArray* array, String* name) {
1386
1479
  // Uses only lower 32 bits if pointers are larger.
1387
- uintptr_t array_hash =
1480
+ uint32_t array_hash =
1388
1481
  static_cast<uint32_t>(reinterpret_cast<uintptr_t>(array)) >> 2;
1389
- uintptr_t name_hash =
1482
+ uint32_t name_hash =
1390
1483
  static_cast<uint32_t>(reinterpret_cast<uintptr_t>(name)) >> 2;
1391
1484
  return (array_hash ^ name_hash) % kLength;
1392
1485
  }
@@ -1521,8 +1614,23 @@ class DisableAssertNoAllocation {
1521
1614
 
1522
1615
  class GCTracer BASE_EMBEDDED {
1523
1616
  public:
1524
- GCTracer();
1617
+ // Time spent while in the external scope counts towards the
1618
+ // external time in the tracer and will be reported separately.
1619
+ class ExternalScope BASE_EMBEDDED {
1620
+ public:
1621
+ explicit ExternalScope(GCTracer* tracer) : tracer_(tracer) {
1622
+ start_time_ = OS::TimeCurrentMillis();
1623
+ }
1624
+ ~ExternalScope() {
1625
+ tracer_->external_time_ += OS::TimeCurrentMillis() - start_time_;
1626
+ }
1525
1627
 
1628
+ private:
1629
+ GCTracer* tracer_;
1630
+ double start_time_;
1631
+ };
1632
+
1633
+ GCTracer();
1526
1634
  ~GCTracer();
1527
1635
 
1528
1636
  // Sets the collector.
@@ -1536,6 +1644,7 @@ class GCTracer BASE_EMBEDDED {
1536
1644
 
1537
1645
  // Sets the flag that this is a compacting full GC.
1538
1646
  void set_is_compacting() { is_compacting_ = true; }
1647
+ bool is_compacting() const { return is_compacting_; }
1539
1648
 
1540
1649
  // Increment and decrement the count of marked objects.
1541
1650
  void increment_marked_count() { ++marked_count_; }
@@ -1556,6 +1665,9 @@ class GCTracer BASE_EMBEDDED {
1556
1665
  double start_size_; // Size of objects in heap set in constructor.
1557
1666
  GarbageCollector collector_; // Type of collector.
1558
1667
 
1668
+ // Keep track of the amount of time spent in external callbacks.
1669
+ double external_time_;
1670
+
1559
1671
  // A count (including this one, eg, the first collection is 1) of the
1560
1672
  // number of garbage collections.
1561
1673
  int gc_count_;
@@ -1611,6 +1723,7 @@ class TranscendentalCache {
1611
1723
  if (e.in[0] == c.integers[0] &&
1612
1724
  e.in[1] == c.integers[1]) {
1613
1725
  ASSERT(e.output != NULL);
1726
+ Counters::transcendental_cache_hit.Increment();
1614
1727
  return e.output;
1615
1728
  }
1616
1729
  double answer = Calculate(input);
@@ -1620,6 +1733,7 @@ class TranscendentalCache {
1620
1733
  elements_[hash].in[1] = c.integers[1];
1621
1734
  elements_[hash].output = heap_number;
1622
1735
  }
1736
+ Counters::transcendental_cache_miss.Increment();
1623
1737
  return heap_number;
1624
1738
  }
1625
1739
 
@@ -1660,6 +1774,17 @@ class TranscendentalCache {
1660
1774
  hash ^= hash >> 8;
1661
1775
  return (hash & (kCacheSize - 1));
1662
1776
  }
1777
+
1778
+ static Address cache_array_address() {
1779
+ // Used to create an external reference.
1780
+ return reinterpret_cast<Address>(caches_);
1781
+ }
1782
+
1783
+ // Allow access to the caches_ array as an ExternalReference.
1784
+ friend class ExternalReference;
1785
+ // Inline implementation of the caching.
1786
+ friend class TranscendentalCacheStub;
1787
+
1663
1788
  static TranscendentalCache* caches_[kNumberOfCaches];
1664
1789
  Element elements_[kCacheSize];
1665
1790
  Type type_;