therubyracer 0.6.3 → 0.7.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

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
@@ -224,9 +224,11 @@ class EXPORT Debug {
224
224
  * be processed. Note that debug messages will only be processed if there is
225
225
  * a V8 break. This can happen automatically by using the option
226
226
  * --debugger-auto-break.
227
+ * \param provide_locker requires that V8 acquires v8::Locker for you before
228
+ * calling handler
227
229
  */
228
230
  static void SetDebugMessageDispatchHandler(
229
- DebugMessageDispatchHandler handler);
231
+ DebugMessageDispatchHandler handler, bool provide_locker = false);
230
232
 
231
233
  /**
232
234
  * Run a JavaScript function in the debugger.
@@ -235,9 +237,10 @@ class EXPORT Debug {
235
237
  * With this call the debugger is entered and the function specified is called
236
238
  * with the execution state as the first argument. This makes it possible to
237
239
  * get access to information otherwise not available during normal JavaScript
238
- * execution e.g. details on stack frames. The following example show a
239
- * JavaScript function which when passed to v8::Debug::Call will return the
240
- * current line of JavaScript execution.
240
+ * execution e.g. details on stack frames. Receiver of the function call will
241
+ * be the debugger context global object, however this is a subject to change.
242
+ * The following example show a JavaScript function which when passed to
243
+ * v8::Debug::Call will return the current line of JavaScript execution.
241
244
  *
242
245
  * \code
243
246
  * function frame_source_line(exec_state) {
@@ -263,6 +266,51 @@ class EXPORT Debug {
263
266
  */
264
267
  static bool EnableAgent(const char* name, int port,
265
268
  bool wait_for_connection = false);
269
+
270
+ /**
271
+ * Makes V8 process all pending debug messages.
272
+ *
273
+ * From V8 point of view all debug messages come asynchronously (e.g. from
274
+ * remote debugger) but they all must be handled synchronously: V8 cannot
275
+ * do 2 things at one time so normal script execution must be interrupted
276
+ * for a while.
277
+ *
278
+ * Generally when message arrives V8 may be in one of 3 states:
279
+ * 1. V8 is running script; V8 will automatically interrupt and process all
280
+ * pending messages (however auto_break flag should be enabled);
281
+ * 2. V8 is suspended on debug breakpoint; in this state V8 is dedicated
282
+ * to reading and processing debug messages;
283
+ * 3. V8 is not running at all or has called some long-working C++ function;
284
+ * by default it means that processing of all debug message will be deferred
285
+ * until V8 gets control again; however, embedding application may improve
286
+ * this by manually calling this method.
287
+ *
288
+ * It makes sense to call this method whenever a new debug message arrived and
289
+ * V8 is not already running. Method v8::Debug::SetDebugMessageDispatchHandler
290
+ * should help with the former condition.
291
+ *
292
+ * Technically this method in many senses is equivalent to executing empty
293
+ * script:
294
+ * 1. It does nothing except for processing all pending debug messages.
295
+ * 2. It should be invoked with the same precautions and from the same context
296
+ * as V8 script would be invoked from, because:
297
+ * a. with "evaluate" command it can do whatever normal script can do,
298
+ * including all native calls;
299
+ * b. no other thread should call V8 while this method is running
300
+ * (v8::Locker may be used here).
301
+ *
302
+ * "Evaluate" debug command behavior currently is not specified in scope
303
+ * of this method.
304
+ */
305
+ static void ProcessDebugMessages();
306
+
307
+ /**
308
+ * Debugger is running in it's own context which is entered while debugger
309
+ * messages are being dispatched. This is an explicit getter for this
310
+ * debugger context. Note that the content of the debugger context is subject
311
+ * to change.
312
+ */
313
+ static Local<Context> GetDebugContext();
266
314
  };
267
315
 
268
316
 
@@ -0,0 +1,176 @@
1
+ // Copyright 2010 the V8 project authors. All rights reserved.
2
+ // Redistribution and use in source and binary forms, with or without
3
+ // modification, are permitted provided that the following conditions are
4
+ // met:
5
+ //
6
+ // * Redistributions of source code must retain the above copyright
7
+ // notice, this list of conditions and the following disclaimer.
8
+ // * Redistributions in binary form must reproduce the above
9
+ // copyright notice, this list of conditions and the following
10
+ // disclaimer in the documentation and/or other materials provided
11
+ // with the distribution.
12
+ // * Neither the name of Google Inc. nor the names of its
13
+ // contributors may be used to endorse or promote products derived
14
+ // from this software without specific prior written permission.
15
+ //
16
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
+
28
+ #ifndef V8_V8_PROFILER_H_
29
+ #define V8_V8_PROFILER_H_
30
+
31
+ #include "v8.h"
32
+
33
+ #ifdef _WIN32
34
+ // Setup for Windows DLL export/import. See v8.h in this directory for
35
+ // information on how to build/use V8 as a DLL.
36
+ #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
37
+ #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
38
+ build configuration to ensure that at most one of these is set
39
+ #endif
40
+
41
+ #ifdef BUILDING_V8_SHARED
42
+ #define V8EXPORT __declspec(dllexport)
43
+ #elif USING_V8_SHARED
44
+ #define V8EXPORT __declspec(dllimport)
45
+ #else
46
+ #define V8EXPORT
47
+ #endif
48
+
49
+ #else // _WIN32
50
+
51
+ // Setup for Linux shared library export. See v8.h in this directory for
52
+ // information on how to build/use V8 as shared library.
53
+ #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(V8_SHARED)
54
+ #define V8EXPORT __attribute__ ((visibility("default")))
55
+ #else // defined(__GNUC__) && (__GNUC__ >= 4)
56
+ #define V8EXPORT
57
+ #endif // defined(__GNUC__) && (__GNUC__ >= 4)
58
+
59
+ #endif // _WIN32
60
+
61
+
62
+ /**
63
+ * Profiler support for the V8 JavaScript engine.
64
+ */
65
+ namespace v8 {
66
+
67
+
68
+ /**
69
+ * CpuProfileNode represents a node in a call graph.
70
+ */
71
+ class V8EXPORT CpuProfileNode {
72
+ public:
73
+ /** Returns function name (empty string for anonymous functions.) */
74
+ Handle<String> GetFunctionName() const;
75
+
76
+ /** Returns resource name for script from where the function originates. */
77
+ Handle<String> GetScriptResourceName() const;
78
+
79
+ /**
80
+ * Returns the number, 1-based, of the line where the function originates.
81
+ * kNoLineNumberInfo if no line number information is available.
82
+ */
83
+ int GetLineNumber() const;
84
+
85
+ /**
86
+ * Returns total (self + children) execution time of the function,
87
+ * in milliseconds, estimated by samples count.
88
+ */
89
+ double GetTotalTime() const;
90
+
91
+ /**
92
+ * Returns self execution time of the function, in milliseconds,
93
+ * estimated by samples count.
94
+ */
95
+ double GetSelfTime() const;
96
+
97
+ /** Returns the count of samples where function exists. */
98
+ double GetTotalSamplesCount() const;
99
+
100
+ /** Returns the count of samples where function was currently executing. */
101
+ double GetSelfSamplesCount() const;
102
+
103
+ /** Returns function entry UID. */
104
+ unsigned GetCallUid() const;
105
+
106
+ /** Returns child nodes count of the node. */
107
+ int GetChildrenCount() const;
108
+
109
+ /** Retrieves a child node by index. */
110
+ const CpuProfileNode* GetChild(int index) const;
111
+
112
+ static const int kNoLineNumberInfo = 0;
113
+ };
114
+
115
+
116
+ /**
117
+ * CpuProfile contains a CPU profile in a form of two call trees:
118
+ * - top-down (from main() down to functions that do all the work);
119
+ * - bottom-up call graph (in backward direction).
120
+ */
121
+ class V8EXPORT CpuProfile {
122
+ public:
123
+ /** Returns CPU profile UID (assigned by the profiler.) */
124
+ unsigned GetUid() const;
125
+
126
+ /** Returns CPU profile title. */
127
+ Handle<String> GetTitle() const;
128
+
129
+ /** Returns the root node of the bottom up call tree. */
130
+ const CpuProfileNode* GetBottomUpRoot() const;
131
+
132
+ /** Returns the root node of the top down call tree. */
133
+ const CpuProfileNode* GetTopDownRoot() const;
134
+ };
135
+
136
+
137
+ /**
138
+ * Interface for controlling CPU profiling.
139
+ */
140
+ class V8EXPORT CpuProfiler {
141
+ public:
142
+ /**
143
+ * Returns the number of profiles collected (doesn't include
144
+ * profiles that are being collected at the moment of call.)
145
+ */
146
+ static int GetProfilesCount();
147
+
148
+ /** Returns a profile by index. */
149
+ static const CpuProfile* GetProfile(int index);
150
+
151
+ /** Returns a profile by uid. */
152
+ static const CpuProfile* FindProfile(unsigned uid);
153
+
154
+ /**
155
+ * Starts collecting CPU profile. Title may be an empty string. It
156
+ * is allowed to have several profiles being collected at
157
+ * once. Attempts to start collecting several profiles with the same
158
+ * title are silently ignored.
159
+ */
160
+ static void StartProfiling(Handle<String> title);
161
+
162
+ /**
163
+ * Stops collecting CPU profile with a given title and returns it.
164
+ * If the title given is empty, finishes the last profile started.
165
+ */
166
+ static const CpuProfile* StopProfiling(Handle<String> title);
167
+ };
168
+
169
+
170
+ } // namespace v8
171
+
172
+
173
+ #undef V8EXPORT
174
+
175
+
176
+ #endif // V8_V8_PROFILER_H_
@@ -261,6 +261,10 @@ template <class T> class V8EXPORT_INLINE Handle {
261
261
  return Handle<T>(T::Cast(*that));
262
262
  }
263
263
 
264
+ template <class S> inline Handle<S> As() {
265
+ return Handle<S>::Cast(*this);
266
+ }
267
+
264
268
  private:
265
269
  T* val_;
266
270
  };
@@ -295,6 +299,10 @@ template <class T> class V8EXPORT_INLINE Local : public Handle<T> {
295
299
  return Local<T>(T::Cast(*that));
296
300
  }
297
301
 
302
+ template <class S> inline Local<S> As() {
303
+ return Local<S>::Cast(*this);
304
+ }
305
+
298
306
  /** Create a local handle for the content of another handle.
299
307
  * The referee is kept alive by the local handle even when
300
308
  * the original handle is destroyed/disposed.
@@ -368,6 +376,10 @@ template <class T> class V8EXPORT_INLINE Persistent : public Handle<T> {
368
376
  return Persistent<T>(T::Cast(*that));
369
377
  }
370
378
 
379
+ template <class S> inline Persistent<S> As() {
380
+ return Persistent<S>::Cast(*this);
381
+ }
382
+
371
383
  /**
372
384
  * Creates a new persistent handle for an existing local or
373
385
  * persistent handle.
@@ -534,51 +546,76 @@ class V8EXPORT ScriptOrigin {
534
546
  class V8EXPORT Script {
535
547
  public:
536
548
 
537
- /**
538
- * Compiles the specified script. The ScriptOrigin* and ScriptData*
539
- * parameters are owned by the caller of Script::Compile. No
540
- * references to these objects are kept after compilation finishes.
541
- *
542
- * The script object returned is context independent; when run it
543
- * will use the currently entered context.
544
- */
545
- static Local<Script> New(Handle<String> source,
546
- ScriptOrigin* origin = NULL,
547
- ScriptData* pre_data = NULL);
549
+ /**
550
+ * Compiles the specified script (context-independent).
551
+ *
552
+ * \param source Script source code.
553
+ * \param origin Script origin, owned by caller, no references are kept
554
+ * when New() returns
555
+ * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile()
556
+ * using pre_data speeds compilation if it's done multiple times.
557
+ * Owned by caller, no references are kept when New() returns.
558
+ * \param script_data Arbitrary data associated with script. Using
559
+ * this has same effect as calling SetData(), but allows data to be
560
+ * available to compile event handlers.
561
+ * \return Compiled script object (context independent; when run it
562
+ * will use the currently entered context).
563
+ */
564
+ static Local<Script> New(Handle<String> source,
565
+ ScriptOrigin* origin = NULL,
566
+ ScriptData* pre_data = NULL,
567
+ Handle<String> script_data = Handle<String>());
548
568
 
549
- /**
550
- * Compiles the specified script using the specified file name
551
- * object (typically a string) as the script's origin.
552
- *
553
- * The script object returned is context independent; when run it
554
- * will use the currently entered context.
555
- */
556
- static Local<Script> New(Handle<String> source,
557
- Handle<Value> file_name);
558
-
559
- /**
560
- * Compiles the specified script. The ScriptOrigin* and ScriptData*
561
- * parameters are owned by the caller of Script::Compile. No
562
- * references to these objects are kept after compilation finishes.
569
+ /**
570
+ * Compiles the specified script using the specified file name
571
+ * object (typically a string) as the script's origin.
563
572
  *
564
- * The script object returned is bound to the context that was active
565
- * when this function was called. When run it will always use this
566
- * context.
573
+ * \param source Script source code.
574
+ * \param file_name file name object (typically a string) to be used
575
+ * as the script's origin.
576
+ * \return Compiled script object (context independent; when run it
577
+ * will use the currently entered context).
578
+ */
579
+ static Local<Script> New(Handle<String> source,
580
+ Handle<Value> file_name);
581
+
582
+ /**
583
+ * Compiles the specified script (bound to current context).
584
+ *
585
+ * \param source Script source code.
586
+ * \param origin Script origin, owned by caller, no references are kept
587
+ * when Compile() returns
588
+ * \param pre_data Pre-parsing data, as obtained by ScriptData::PreCompile()
589
+ * using pre_data speeds compilation if it's done multiple times.
590
+ * Owned by caller, no references are kept when Compile() returns.
591
+ * \param script_data Arbitrary data associated with script. Using
592
+ * this has same effect as calling SetData(), but makes data available
593
+ * earlier (i.e. to compile event handlers).
594
+ * \return Compiled script object, bound to the context that was active
595
+ * when this function was called. When run it will always use this
596
+ * context.
567
597
  */
568
598
  static Local<Script> Compile(Handle<String> source,
569
599
  ScriptOrigin* origin = NULL,
570
- ScriptData* pre_data = NULL);
600
+ ScriptData* pre_data = NULL,
601
+ Handle<String> script_data = Handle<String>());
571
602
 
572
603
  /**
573
604
  * Compiles the specified script using the specified file name
574
605
  * object (typically a string) as the script's origin.
575
606
  *
576
- * The script object returned is bound to the context that was active
577
- * when this function was called. When run it will always use this
578
- * context.
607
+ * \param source Script source code.
608
+ * \param file_name File name to use as script's origin
609
+ * \param script_data Arbitrary data associated with script. Using
610
+ * this has same effect as calling SetData(), but makes data available
611
+ * earlier (i.e. to compile event handlers).
612
+ * \return Compiled script object, bound to the context that was active
613
+ * when this function was called. When run it will always use this
614
+ * context.
579
615
  */
580
616
  static Local<Script> Compile(Handle<String> source,
581
- Handle<Value> file_name);
617
+ Handle<Value> file_name,
618
+ Handle<String> script_data = Handle<String>());
582
619
 
583
620
  /**
584
621
  * Runs the script returning the resulting value. If the script is
@@ -729,6 +766,11 @@ class V8EXPORT Value : public Data {
729
766
  */
730
767
  bool IsInt32() const;
731
768
 
769
+ /**
770
+ * Returns true if this value is a 32-bit unsigned integer.
771
+ */
772
+ bool IsUint32() const;
773
+
732
774
  /**
733
775
  * Returns true if this value is a Date.
734
776
  */
@@ -813,12 +855,29 @@ class V8EXPORT String : public Primitive {
813
855
  * \param start The starting position within the string at which
814
856
  * copying begins.
815
857
  * \param length The number of bytes to copy from the string.
816
- * \return The number of characters copied to the buffer
858
+ * \param nchars_ref The number of characters written, can be NULL.
859
+ * \param hints Various hints that might affect performance of this or
860
+ * subsequent operations.
861
+ * \return The number of bytes copied to the buffer
817
862
  * excluding the NULL terminator.
818
863
  */
819
- int Write(uint16_t* buffer, int start = 0, int length = -1) const; // UTF-16
820
- int WriteAscii(char* buffer, int start = 0, int length = -1) const; // ASCII
821
- int WriteUtf8(char* buffer, int length = -1) const; // UTF-8
864
+ enum WriteHints {
865
+ NO_HINTS = 0,
866
+ HINT_MANY_WRITES_EXPECTED = 1
867
+ };
868
+
869
+ int Write(uint16_t* buffer,
870
+ int start = 0,
871
+ int length = -1,
872
+ WriteHints hints = NO_HINTS) const; // UTF-16
873
+ int WriteAscii(char* buffer,
874
+ int start = 0,
875
+ int length = -1,
876
+ WriteHints hints = NO_HINTS) const; // ASCII
877
+ int WriteUtf8(char* buffer,
878
+ int length = -1,
879
+ int* nchars_ref = NULL,
880
+ WriteHints hints = NO_HINTS) const; // UTF-8
822
881
 
823
882
  /**
824
883
  * A zero length string.
@@ -1153,6 +1212,9 @@ class V8EXPORT Object : public Value {
1153
1212
  Handle<Value> value,
1154
1213
  PropertyAttribute attribs = None);
1155
1214
 
1215
+ bool Set(uint32_t index,
1216
+ Handle<Value> value);
1217
+
1156
1218
  // Sets a local property on this object bypassing interceptors and
1157
1219
  // overriding accessors or read-only properties.
1158
1220
  //
@@ -1167,6 +1229,8 @@ class V8EXPORT Object : public Value {
1167
1229
 
1168
1230
  Local<Value> Get(Handle<Value> key);
1169
1231
 
1232
+ Local<Value> Get(uint32_t index);
1233
+
1170
1234
  // TODO(1245389): Replace the type-specific versions of these
1171
1235
  // functions with generic ones that accept a Handle<Value> key.
1172
1236
  bool Has(Handle<String> key);
@@ -1196,6 +1260,13 @@ class V8EXPORT Object : public Value {
1196
1260
  */
1197
1261
  Local<Value> GetPrototype();
1198
1262
 
1263
+ /**
1264
+ * Set the prototype object. This does not skip objects marked to
1265
+ * be skipped by __proto__ and it does not consult the security
1266
+ * handler.
1267
+ */
1268
+ bool SetPrototype(Handle<Value> prototype);
1269
+
1199
1270
  /**
1200
1271
  * Finds an instance of the given function template in the prototype
1201
1272
  * chain.
@@ -1354,7 +1425,15 @@ class V8EXPORT Function : public Object {
1354
1425
  Local<Value> Call(Handle<Object> recv, int argc, Handle<Value> argv[]);
1355
1426
  void SetName(Handle<String> name);
1356
1427
  Handle<Value> GetName() const;
1428
+
1429
+ /**
1430
+ * Returns zero based line number of function body and
1431
+ * kLineOffsetNotFound if no information available.
1432
+ */
1433
+ int GetScriptLineNumber() const;
1434
+ ScriptOrigin GetScriptOrigin() const;
1357
1435
  static inline Function* Cast(Value* obj);
1436
+ static const int kLineOffsetNotFound;
1358
1437
  private:
1359
1438
  Function();
1360
1439
  static void CheckCast(Value* obj);
@@ -2096,12 +2175,26 @@ typedef void (*FailedAccessCheckCallback)(Local<Object> target,
2096
2175
  // --- G a r b a g e C o l l e c t i o n C a l l b a c k s
2097
2176
 
2098
2177
  /**
2099
- * Applications can register a callback function which is called
2100
- * before and after a major garbage collection. Allocations are not
2101
- * allowed in the callback function, you therefore cannot manipulate
2178
+ * Applications can register callback functions which will be called
2179
+ * before and after a garbage collection. Allocations are not
2180
+ * allowed in the callback functions, you therefore cannot manipulate
2102
2181
  * objects (set or delete properties for example) since it is possible
2103
2182
  * such operations will result in the allocation of objects.
2104
2183
  */
2184
+ enum GCType {
2185
+ kGCTypeScavenge = 1 << 0,
2186
+ kGCTypeMarkSweepCompact = 1 << 1,
2187
+ kGCTypeAll = kGCTypeScavenge | kGCTypeMarkSweepCompact
2188
+ };
2189
+
2190
+ enum GCCallbackFlags {
2191
+ kNoGCCallbackFlags = 0,
2192
+ kGCCallbackFlagCompacted = 1 << 0
2193
+ };
2194
+
2195
+ typedef void (*GCPrologueCallback)(GCType type, GCCallbackFlags flags);
2196
+ typedef void (*GCEpilogueCallback)(GCType type, GCCallbackFlags flags);
2197
+
2105
2198
  typedef void (*GCCallback)();
2106
2199
 
2107
2200
 
@@ -2237,7 +2330,27 @@ class V8EXPORT V8 {
2237
2330
 
2238
2331
  /**
2239
2332
  * Enables the host application to receive a notification before a
2240
- * major garbage colletion. Allocations are not allowed in the
2333
+ * garbage collection. Allocations are not allowed in the
2334
+ * callback function, you therefore cannot manipulate objects (set
2335
+ * or delete properties for example) since it is possible such
2336
+ * operations will result in the allocation of objects. It is possible
2337
+ * to specify the GCType filter for your callback. But it is not possible to
2338
+ * register the same callback function two times with different
2339
+ * GCType filters.
2340
+ */
2341
+ static void AddGCPrologueCallback(
2342
+ GCPrologueCallback callback, GCType gc_type_filter = kGCTypeAll);
2343
+
2344
+ /**
2345
+ * This function removes callback which was installed by
2346
+ * AddGCPrologueCallback function.
2347
+ */
2348
+ static void RemoveGCPrologueCallback(GCPrologueCallback callback);
2349
+
2350
+ /**
2351
+ * The function is deprecated. Please use AddGCPrologueCallback instead.
2352
+ * Enables the host application to receive a notification before a
2353
+ * garbage collection. Allocations are not allowed in the
2241
2354
  * callback function, you therefore cannot manipulate objects (set
2242
2355
  * or delete properties for example) since it is possible such
2243
2356
  * operations will result in the allocation of objects.
@@ -2245,6 +2358,26 @@ class V8EXPORT V8 {
2245
2358
  static void SetGlobalGCPrologueCallback(GCCallback);
2246
2359
 
2247
2360
  /**
2361
+ * Enables the host application to receive a notification after a
2362
+ * garbage collection. Allocations are not allowed in the
2363
+ * callback function, you therefore cannot manipulate objects (set
2364
+ * or delete properties for example) since it is possible such
2365
+ * operations will result in the allocation of objects. It is possible
2366
+ * to specify the GCType filter for your callback. But it is not possible to
2367
+ * register the same callback function two times with different
2368
+ * GCType filters.
2369
+ */
2370
+ static void AddGCEpilogueCallback(
2371
+ GCEpilogueCallback callback, GCType gc_type_filter = kGCTypeAll);
2372
+
2373
+ /**
2374
+ * This function removes callback which was installed by
2375
+ * AddGCEpilogueCallback function.
2376
+ */
2377
+ static void RemoveGCEpilogueCallback(GCEpilogueCallback callback);
2378
+
2379
+ /**
2380
+ * The function is deprecated. Please use AddGCEpilogueCallback instead.
2248
2381
  * Enables the host application to receive a notification after a
2249
2382
  * major garbage collection. Allocations are not allowed in the
2250
2383
  * callback function, you therefore cannot manipulate objects (set
@@ -2309,22 +2442,30 @@ class V8EXPORT V8 {
2309
2442
  static bool IsProfilerPaused();
2310
2443
 
2311
2444
  /**
2312
- * Resumes specified profiler modules.
2445
+ * Resumes specified profiler modules. Can be called several times to
2446
+ * mark the opening of a profiler events block with the given tag.
2447
+ *
2313
2448
  * "ResumeProfiler" is equivalent to "ResumeProfilerEx(PROFILER_MODULE_CPU)".
2314
2449
  * See ProfilerModules enum.
2315
2450
  *
2316
2451
  * \param flags Flags specifying profiler modules.
2452
+ * \param tag Profile tag.
2317
2453
  */
2318
- static void ResumeProfilerEx(int flags);
2454
+ static void ResumeProfilerEx(int flags, int tag = 0);
2319
2455
 
2320
2456
  /**
2321
- * Pauses specified profiler modules.
2457
+ * Pauses specified profiler modules. Each call to "PauseProfilerEx" closes
2458
+ * a block of profiler events opened by a call to "ResumeProfilerEx" with the
2459
+ * same tag value. There is no need for blocks to be properly nested.
2460
+ * The profiler is paused when the last opened block is closed.
2461
+ *
2322
2462
  * "PauseProfiler" is equivalent to "PauseProfilerEx(PROFILER_MODULE_CPU)".
2323
2463
  * See ProfilerModules enum.
2324
2464
  *
2325
2465
  * \param flags Flags specifying profiler modules.
2466
+ * \param tag Profile tag.
2326
2467
  */
2327
- static void PauseProfilerEx(int flags);
2468
+ static void PauseProfilerEx(int flags, int tag = 0);
2328
2469
 
2329
2470
  /**
2330
2471
  * Returns active (resumed) profiler modules.
@@ -2351,6 +2492,14 @@ class V8EXPORT V8 {
2351
2492
  */
2352
2493
  static int GetLogLines(int from_pos, char* dest_buf, int max_size);
2353
2494
 
2495
+ /**
2496
+ * The minimum allowed size for a log lines buffer. If the size of
2497
+ * the buffer given will not be enough to hold a line of the maximum
2498
+ * length, an attempt to find a log line end in GetLogLines will
2499
+ * fail, and an empty result will be returned.
2500
+ */
2501
+ static const int kMinimumSizeForLogLinesBuffer = 2048;
2502
+
2354
2503
  /**
2355
2504
  * Retrieve the V8 thread id of the calling thread.
2356
2505
  *
@@ -2393,6 +2542,16 @@ class V8EXPORT V8 {
2393
2542
  */
2394
2543
  static void TerminateExecution();
2395
2544
 
2545
+ /**
2546
+ * Is V8 terminating JavaScript execution.
2547
+ *
2548
+ * Returns true if JavaScript execution is currently terminating
2549
+ * because of a call to TerminateExecution. In that case there are
2550
+ * still JavaScript frames on the stack and the termination
2551
+ * exception is still active.
2552
+ */
2553
+ static bool IsExecutionTerminating();
2554
+
2396
2555
  /**
2397
2556
  * Releases any resources used by v8 and stops any utility threads
2398
2557
  * that may be running. Note that disposing v8 is permanent, it
@@ -2425,6 +2584,14 @@ class V8EXPORT V8 {
2425
2584
  */
2426
2585
  static void LowMemoryNotification();
2427
2586
 
2587
+ /**
2588
+ * Optional notification that a context has been disposed. V8 uses
2589
+ * these notifications to guide the GC heuristic. Returns the number
2590
+ * of context disposals - including this one - since the last time
2591
+ * V8 had a chance to clean up.
2592
+ */
2593
+ static int ContextDisposedNotification();
2594
+
2428
2595
  private:
2429
2596
  V8();
2430
2597
 
@@ -2585,9 +2752,21 @@ class V8EXPORT Context {
2585
2752
  */
2586
2753
  void DetachGlobal();
2587
2754
 
2755
+ /**
2756
+ * Reattaches a global object to a context. This can be used to
2757
+ * restore the connection between a global object and a context
2758
+ * after DetachGlobal has been called.
2759
+ *
2760
+ * \param global_object The global object to reattach to the
2761
+ * context. For this to work, the global object must be the global
2762
+ * object that was associated with this context before a call to
2763
+ * DetachGlobal.
2764
+ */
2765
+ void ReattachGlobal(Handle<Object> global_object);
2766
+
2588
2767
  /** Creates a new context. */
2589
2768
  static Persistent<Context> New(
2590
- ExtensionConfiguration* extensions = 0,
2769
+ ExtensionConfiguration* extensions = NULL,
2591
2770
  Handle<ObjectTemplate> global_template = Handle<ObjectTemplate>(),
2592
2771
  Handle<Value> global_object = Handle<Value>());
2593
2772
 
@@ -2835,7 +3014,7 @@ template <> struct InternalConstants<4> {
2835
3014
 
2836
3015
  // Internal constants for 64-bit systems.
2837
3016
  template <> struct InternalConstants<8> {
2838
- static const int kStringResourceOffset = 2 * sizeof(void*);
3017
+ static const int kStringResourceOffset = 3 * sizeof(void*);
2839
3018
  };
2840
3019
 
2841
3020
  /**
@@ -3199,7 +3378,7 @@ External* External::Cast(v8::Value* value) {
3199
3378
 
3200
3379
 
3201
3380
  Local<Value> AccessorInfo::Data() const {
3202
- return Local<Value>(reinterpret_cast<Value*>(&args_[-3]));
3381
+ return Local<Value>(reinterpret_cast<Value*>(&args_[-2]));
3203
3382
  }
3204
3383
 
3205
3384