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
@@ -60,106 +60,138 @@ namespace internal {
60
60
  // lines) rather than one macro (of length about 80 lines) to work around
61
61
  // this problem. Please avoid using recursive macros of this length when
62
62
  // possible.
63
- #define STATS_COUNTER_LIST_1(SC) \
64
- /* Global Handle Count*/ \
65
- SC(global_handles, V8.GlobalHandles) \
66
- /* Mallocs from PCRE */ \
67
- SC(pcre_mallocs, V8.PcreMallocCount) \
68
- /* OS Memory allocated */ \
69
- SC(memory_allocated, V8.OsMemoryAllocated) \
70
- SC(props_to_dictionary, V8.ObjectPropertiesToDictionary) \
71
- SC(elements_to_dictionary, V8.ObjectElementsToDictionary) \
72
- SC(alive_after_last_gc, V8.AliveAfterLastGC) \
73
- SC(objs_since_last_young, V8.ObjsSinceLastYoung) \
74
- SC(objs_since_last_full, V8.ObjsSinceLastFull) \
75
- SC(symbol_table_capacity, V8.SymbolTableCapacity) \
76
- SC(number_of_symbols, V8.NumberOfSymbols) \
77
- SC(script_wrappers, V8.ScriptWrappers) \
78
- SC(call_initialize_stubs, V8.CallInitializeStubs) \
79
- SC(call_premonomorphic_stubs, V8.CallPreMonomorphicStubs) \
80
- SC(call_normal_stubs, V8.CallNormalStubs) \
81
- SC(call_megamorphic_stubs, V8.CallMegamorphicStubs) \
82
- SC(arguments_adaptors, V8.ArgumentsAdaptors) \
83
- SC(compilation_cache_hits, V8.CompilationCacheHits) \
84
- SC(compilation_cache_misses, V8.CompilationCacheMisses) \
85
- SC(regexp_cache_hits, V8.RegExpCacheHits) \
86
- SC(regexp_cache_misses, V8.RegExpCacheMisses) \
87
- /* Amount of evaled source code. */ \
88
- SC(total_eval_size, V8.TotalEvalSize) \
89
- /* Amount of loaded source code. */ \
90
- SC(total_load_size, V8.TotalLoadSize) \
91
- /* Amount of parsed source code. */ \
92
- SC(total_parse_size, V8.TotalParseSize) \
93
- /* Amount of source code skipped over using preparsing. */ \
94
- SC(total_preparse_skipped, V8.TotalPreparseSkipped) \
95
- /* Amount of compiled source code. */ \
96
- SC(total_compile_size, V8.TotalCompileSize)
63
+ #define STATS_COUNTER_LIST_1(SC) \
64
+ /* Global Handle Count*/ \
65
+ SC(global_handles, V8.GlobalHandles) \
66
+ /* Mallocs from PCRE */ \
67
+ SC(pcre_mallocs, V8.PcreMallocCount) \
68
+ /* OS Memory allocated */ \
69
+ SC(memory_allocated, V8.OsMemoryAllocated) \
70
+ SC(props_to_dictionary, V8.ObjectPropertiesToDictionary) \
71
+ SC(elements_to_dictionary, V8.ObjectElementsToDictionary) \
72
+ SC(alive_after_last_gc, V8.AliveAfterLastGC) \
73
+ SC(objs_since_last_young, V8.ObjsSinceLastYoung) \
74
+ SC(objs_since_last_full, V8.ObjsSinceLastFull) \
75
+ SC(symbol_table_capacity, V8.SymbolTableCapacity) \
76
+ SC(number_of_symbols, V8.NumberOfSymbols) \
77
+ SC(script_wrappers, V8.ScriptWrappers) \
78
+ SC(call_initialize_stubs, V8.CallInitializeStubs) \
79
+ SC(call_premonomorphic_stubs, V8.CallPreMonomorphicStubs) \
80
+ SC(call_normal_stubs, V8.CallNormalStubs) \
81
+ SC(call_megamorphic_stubs, V8.CallMegamorphicStubs) \
82
+ SC(arguments_adaptors, V8.ArgumentsAdaptors) \
83
+ SC(compilation_cache_hits, V8.CompilationCacheHits) \
84
+ SC(compilation_cache_misses, V8.CompilationCacheMisses) \
85
+ SC(regexp_cache_hits, V8.RegExpCacheHits) \
86
+ SC(regexp_cache_misses, V8.RegExpCacheMisses) \
87
+ /* Amount of evaled source code. */ \
88
+ SC(total_eval_size, V8.TotalEvalSize) \
89
+ /* Amount of loaded source code. */ \
90
+ SC(total_load_size, V8.TotalLoadSize) \
91
+ /* Amount of parsed source code. */ \
92
+ SC(total_parse_size, V8.TotalParseSize) \
93
+ /* Amount of source code skipped over using preparsing. */ \
94
+ SC(total_preparse_skipped, V8.TotalPreparseSkipped) \
95
+ /* Amount of compiled source code. */ \
96
+ SC(total_compile_size, V8.TotalCompileSize) \
97
+ /* Amount of source code compiled with the old codegen. */ \
98
+ SC(total_old_codegen_source_size, V8.TotalOldCodegenSourceSize) \
99
+ /* Amount of source code compiled with the full codegen. */ \
100
+ SC(total_full_codegen_source_size, V8.TotalFullCodegenSourceSize) \
101
+ /* Number of contexts created from scratch. */ \
102
+ SC(contexts_created_from_scratch, V8.ContextsCreatedFromScratch) \
103
+ /* Number of contexts created by partial snapshot. */ \
104
+ SC(contexts_created_by_snapshot, V8.ContextsCreatedBySnapshot)
97
105
 
98
106
 
99
- #define STATS_COUNTER_LIST_2(SC) \
100
- /* Number of code stubs. */ \
101
- SC(code_stubs, V8.CodeStubs) \
102
- /* Amount of stub code. */ \
103
- SC(total_stubs_code_size, V8.TotalStubsCodeSize) \
104
- /* Amount of (JS) compiled code. */ \
105
- SC(total_compiled_code_size, V8.TotalCompiledCodeSize) \
106
- SC(gc_compactor_caused_by_request, V8.GCCompactorCausedByRequest) \
107
- SC(gc_compactor_caused_by_promoted_data, \
108
- V8.GCCompactorCausedByPromotedData) \
109
- SC(gc_compactor_caused_by_oldspace_exhaustion, \
110
- V8.GCCompactorCausedByOldspaceExhaustion) \
111
- SC(gc_compactor_caused_by_weak_handles, \
112
- V8.GCCompactorCausedByWeakHandles) \
113
- SC(gc_last_resort_from_js, V8.GCLastResortFromJS) \
114
- SC(gc_last_resort_from_handles, V8.GCLastResortFromHandles) \
115
- /* How is the generic keyed-load stub used? */ \
116
- SC(keyed_load_generic_smi, V8.KeyedLoadGenericSmi) \
117
- SC(keyed_load_generic_symbol, V8.KeyedLoadGenericSymbol) \
118
- SC(keyed_load_generic_slow, V8.KeyedLoadGenericSlow) \
119
- SC(keyed_load_external_array_slow, V8.KeyedLoadExternalArraySlow) \
120
- /* Count how much the monomorphic keyed-load stubs are hit. */ \
121
- SC(keyed_load_function_prototype, V8.KeyedLoadFunctionPrototype) \
122
- SC(keyed_load_string_length, V8.KeyedLoadStringLength) \
123
- SC(keyed_load_array_length, V8.KeyedLoadArrayLength) \
124
- SC(keyed_load_constant_function, V8.KeyedLoadConstantFunction) \
125
- SC(keyed_load_field, V8.KeyedLoadField) \
126
- SC(keyed_load_callback, V8.KeyedLoadCallback) \
127
- SC(keyed_load_interceptor, V8.KeyedLoadInterceptor) \
128
- SC(keyed_load_inline, V8.KeyedLoadInline) \
129
- SC(keyed_load_inline_miss, V8.KeyedLoadInlineMiss) \
130
- SC(named_load_inline, V8.NamedLoadInline) \
131
- SC(named_load_inline_miss, V8.NamedLoadInlineMiss) \
132
- SC(named_load_global_inline, V8.NamedLoadGlobalInline) \
133
- SC(named_load_global_inline_miss, V8.NamedLoadGlobalInlineMiss) \
134
- SC(keyed_store_field, V8.KeyedStoreField) \
135
- SC(keyed_store_inline, V8.KeyedStoreInline) \
136
- SC(keyed_store_inline_miss, V8.KeyedStoreInlineMiss) \
137
- SC(named_store_global_inline, V8.NamedStoreGlobalInline) \
138
- SC(named_store_global_inline_miss, V8.NamedStoreGlobalInlineMiss) \
139
- SC(call_global_inline, V8.CallGlobalInline) \
140
- SC(call_global_inline_miss, V8.CallGlobalInlineMiss) \
141
- SC(constructed_objects, V8.ConstructedObjects) \
142
- SC(constructed_objects_runtime, V8.ConstructedObjectsRuntime) \
143
- SC(constructed_objects_stub, V8.ConstructedObjectsStub) \
144
- SC(array_function_runtime, V8.ArrayFunctionRuntime) \
145
- SC(array_function_native, V8.ArrayFunctionNative) \
146
- SC(for_in, V8.ForIn) \
147
- SC(enum_cache_hits, V8.EnumCacheHits) \
148
- SC(enum_cache_misses, V8.EnumCacheMisses) \
149
- SC(reloc_info_count, V8.RelocInfoCount) \
150
- SC(reloc_info_size, V8.RelocInfoSize) \
151
- SC(zone_segment_bytes, V8.ZoneSegmentBytes) \
152
- SC(compute_entry_frame, V8.ComputeEntryFrame) \
153
- SC(generic_binary_stub_calls, V8.GenericBinaryStubCalls) \
154
- SC(generic_binary_stub_calls_regs, V8.GenericBinaryStubCallsRegs) \
155
- SC(string_add_runtime, V8.StringAddRuntime) \
156
- SC(string_add_native, V8.StringAddNative) \
157
- SC(sub_string_runtime, V8.SubStringRuntime) \
158
- SC(sub_string_native, V8.SubStringNative) \
159
- SC(string_compare_native, V8.StringCompareNative) \
160
- SC(string_compare_runtime, V8.StringCompareRuntime) \
161
- SC(regexp_entry_runtime, V8.RegExpEntryRuntime) \
162
- SC(regexp_entry_native, V8.RegExpEntryNative)
107
+ #define STATS_COUNTER_LIST_2(SC) \
108
+ /* Number of code stubs. */ \
109
+ SC(code_stubs, V8.CodeStubs) \
110
+ /* Amount of stub code. */ \
111
+ SC(total_stubs_code_size, V8.TotalStubsCodeSize) \
112
+ /* Amount of (JS) compiled code. */ \
113
+ SC(total_compiled_code_size, V8.TotalCompiledCodeSize) \
114
+ SC(gc_compactor_caused_by_request, V8.GCCompactorCausedByRequest) \
115
+ SC(gc_compactor_caused_by_promoted_data, \
116
+ V8.GCCompactorCausedByPromotedData) \
117
+ SC(gc_compactor_caused_by_oldspace_exhaustion, \
118
+ V8.GCCompactorCausedByOldspaceExhaustion) \
119
+ SC(gc_compactor_caused_by_weak_handles, \
120
+ V8.GCCompactorCausedByWeakHandles) \
121
+ SC(gc_last_resort_from_js, V8.GCLastResortFromJS) \
122
+ SC(gc_last_resort_from_handles, V8.GCLastResortFromHandles) \
123
+ /* How is the generic keyed-load stub used? */ \
124
+ SC(keyed_load_generic_smi, V8.KeyedLoadGenericSmi) \
125
+ SC(keyed_load_generic_symbol, V8.KeyedLoadGenericSymbol) \
126
+ SC(keyed_load_generic_slow, V8.KeyedLoadGenericSlow) \
127
+ SC(keyed_load_external_array_slow, V8.KeyedLoadExternalArraySlow) \
128
+ /* Count how much the monomorphic keyed-load stubs are hit. */ \
129
+ SC(keyed_load_function_prototype, V8.KeyedLoadFunctionPrototype) \
130
+ SC(keyed_load_string_length, V8.KeyedLoadStringLength) \
131
+ SC(keyed_load_array_length, V8.KeyedLoadArrayLength) \
132
+ SC(keyed_load_constant_function, V8.KeyedLoadConstantFunction) \
133
+ SC(keyed_load_field, V8.KeyedLoadField) \
134
+ SC(keyed_load_callback, V8.KeyedLoadCallback) \
135
+ SC(keyed_load_interceptor, V8.KeyedLoadInterceptor) \
136
+ SC(keyed_load_inline, V8.KeyedLoadInline) \
137
+ SC(keyed_load_inline_miss, V8.KeyedLoadInlineMiss) \
138
+ SC(named_load_inline, V8.NamedLoadInline) \
139
+ SC(named_load_inline_miss, V8.NamedLoadInlineMiss) \
140
+ SC(named_load_global_inline, V8.NamedLoadGlobalInline) \
141
+ SC(named_load_global_inline_miss, V8.NamedLoadGlobalInlineMiss) \
142
+ SC(keyed_store_field, V8.KeyedStoreField) \
143
+ SC(keyed_store_inline, V8.KeyedStoreInline) \
144
+ SC(keyed_store_inline_miss, V8.KeyedStoreInlineMiss) \
145
+ SC(named_store_global_inline, V8.NamedStoreGlobalInline) \
146
+ SC(named_store_global_inline_miss, V8.NamedStoreGlobalInlineMiss) \
147
+ SC(call_const, V8.CallConst) \
148
+ SC(call_const_fast_api, V8.CallConstFastApi) \
149
+ SC(call_const_interceptor, V8.CallConstInterceptor) \
150
+ SC(call_const_interceptor_fast_api, V8.CallConstInterceptorFastApi) \
151
+ SC(call_global_inline, V8.CallGlobalInline) \
152
+ SC(call_global_inline_miss, V8.CallGlobalInlineMiss) \
153
+ SC(constructed_objects, V8.ConstructedObjects) \
154
+ SC(constructed_objects_runtime, V8.ConstructedObjectsRuntime) \
155
+ SC(constructed_objects_stub, V8.ConstructedObjectsStub) \
156
+ SC(array_function_runtime, V8.ArrayFunctionRuntime) \
157
+ SC(array_function_native, V8.ArrayFunctionNative) \
158
+ SC(for_in, V8.ForIn) \
159
+ SC(enum_cache_hits, V8.EnumCacheHits) \
160
+ SC(enum_cache_misses, V8.EnumCacheMisses) \
161
+ SC(reloc_info_count, V8.RelocInfoCount) \
162
+ SC(reloc_info_size, V8.RelocInfoSize) \
163
+ SC(zone_segment_bytes, V8.ZoneSegmentBytes) \
164
+ SC(compute_entry_frame, V8.ComputeEntryFrame) \
165
+ SC(generic_binary_stub_calls, V8.GenericBinaryStubCalls) \
166
+ SC(generic_binary_stub_calls_regs, V8.GenericBinaryStubCallsRegs) \
167
+ SC(string_add_runtime, V8.StringAddRuntime) \
168
+ SC(string_add_native, V8.StringAddNative) \
169
+ SC(string_add_runtime_ext_to_ascii, V8.StringAddRuntimeExtToAscii) \
170
+ SC(sub_string_runtime, V8.SubStringRuntime) \
171
+ SC(sub_string_native, V8.SubStringNative) \
172
+ SC(string_compare_native, V8.StringCompareNative) \
173
+ SC(string_compare_runtime, V8.StringCompareRuntime) \
174
+ SC(regexp_entry_runtime, V8.RegExpEntryRuntime) \
175
+ SC(regexp_entry_native, V8.RegExpEntryNative) \
176
+ SC(number_to_string_native, V8.NumberToStringNative) \
177
+ SC(number_to_string_runtime, V8.NumberToStringRuntime) \
178
+ SC(math_acos, V8.MathAcos) \
179
+ SC(math_asin, V8.MathAsin) \
180
+ SC(math_atan, V8.MathAtan) \
181
+ SC(math_atan2, V8.MathAtan2) \
182
+ SC(math_ceil, V8.MathCeil) \
183
+ SC(math_cos, V8.MathCos) \
184
+ SC(math_exp, V8.MathExp) \
185
+ SC(math_floor, V8.MathFloor) \
186
+ SC(math_log, V8.MathLog) \
187
+ SC(math_pow, V8.MathPow) \
188
+ SC(math_round, V8.MathRound) \
189
+ SC(math_sin, V8.MathSin) \
190
+ SC(math_sqrt, V8.MathSqrt) \
191
+ SC(math_tan, V8.MathTan) \
192
+ SC(transcendental_cache_hit, V8.TranscendentalCacheHit) \
193
+ SC(transcendental_cache_miss, V8.TranscendentalCacheMiss)
194
+
163
195
 
164
196
  // This file contains all the v8 counters that are in use.
165
197
  class Counters : AllStatic {
@@ -43,7 +43,7 @@ bool V8::has_been_setup_ = false;
43
43
  bool V8::has_been_disposed_ = false;
44
44
  bool V8::has_fatal_error_ = false;
45
45
 
46
- bool V8::Initialize(Deserializer *des) {
46
+ bool V8::Initialize(Deserializer* des) {
47
47
  bool create_heap_objects = des == NULL;
48
48
  if (has_been_disposed_ || has_fatal_error_) return false;
49
49
  if (IsRunning()) return true;
@@ -60,6 +60,8 @@ bool V8::Initialize(Deserializer *des) {
60
60
  // Enable logging before setting up the heap
61
61
  Logger::Setup();
62
62
 
63
+ CpuProfiler::Setup();
64
+
63
65
  // Setup the platform OS support.
64
66
  OS::Setup();
65
67
 
@@ -114,8 +116,11 @@ bool V8::Initialize(Deserializer *des) {
114
116
 
115
117
  OProfileAgent::Initialize();
116
118
 
117
- if (FLAG_log_code) {
119
+ // If we are deserializing, log non-function code objects and compiled
120
+ // functions found in the snapshot.
121
+ if (des != NULL && FLAG_log_code) {
118
122
  HandleScope scope;
123
+ LOG(LogCodeObjects());
119
124
  LOG(LogCompiledFunctions());
120
125
  }
121
126
 
@@ -145,6 +150,9 @@ void V8::TearDown() {
145
150
  Top::TearDown();
146
151
 
147
152
  Heap::TearDown();
153
+
154
+ CpuProfiler::TearDown();
155
+
148
156
  Logger::TearDown();
149
157
 
150
158
  is_running_ = false;
@@ -152,6 +160,14 @@ void V8::TearDown() {
152
160
  }
153
161
 
154
162
 
163
+ static uint32_t random_seed() {
164
+ if (FLAG_random_seed == 0) {
165
+ return random();
166
+ }
167
+ return FLAG_random_seed;
168
+ }
169
+
170
+
155
171
  uint32_t V8::Random() {
156
172
  // Random number generator using George Marsaglia's MWC algorithm.
157
173
  static uint32_t hi = 0;
@@ -161,8 +177,8 @@ uint32_t V8::Random() {
161
177
  // should ever become zero again, or if random() returns zero, we
162
178
  // avoid getting stuck with zero bits in hi or lo by re-initializing
163
179
  // them on demand.
164
- if (hi == 0) hi = random();
165
- if (lo == 0) lo = random();
180
+ if (hi == 0) hi = random_seed();
181
+ if (lo == 0) lo = random_seed();
166
182
 
167
183
  // Mix the bits.
168
184
  hi = 36969 * (hi & 0xFFFF) + (hi >> 16);
@@ -180,14 +196,29 @@ bool V8::IdleNotification() {
180
196
  return Heap::IdleNotification();
181
197
  }
182
198
 
183
- static const uint32_t kRandomPositiveSmiMax = 0x3fffffff;
184
199
 
185
- Smi* V8::RandomPositiveSmi() {
186
- uint32_t random = Random();
187
- ASSERT(static_cast<uint32_t>(Smi::kMaxValue) >= kRandomPositiveSmiMax);
188
- // kRandomPositiveSmiMax must match the value being divided
189
- // by in math.js.
190
- return Smi::FromInt(random & kRandomPositiveSmiMax);
200
+ // Use a union type to avoid type-aliasing optimizations in GCC.
201
+ typedef union {
202
+ double double_value;
203
+ uint64_t uint64_t_value;
204
+ } double_int_union;
205
+
206
+
207
+ Object* V8::FillHeapNumberWithRandom(Object* heap_number) {
208
+ uint64_t random_bits = Random();
209
+ // Make a double* from address (heap_number + sizeof(double)).
210
+ double_int_union* r = reinterpret_cast<double_int_union*>(
211
+ reinterpret_cast<char*>(heap_number) +
212
+ HeapNumber::kValueOffset - kHeapObjectTag);
213
+ // Convert 32 random bits to 0.(32 random bits) in a double
214
+ // by computing:
215
+ // ( 1.(20 0s)(32 random bits) x 2^20 ) - (1.0 x 2^20)).
216
+ const double binary_million = 1048576.0;
217
+ r->double_value = binary_million;
218
+ r->uint64_t_value |= random_bits;
219
+ r->double_value -= binary_million;
220
+
221
+ return heap_number;
191
222
  }
192
223
 
193
224
  } } // namespace v8::internal
@@ -67,7 +67,9 @@
67
67
  #include "spaces-inl.h"
68
68
  #include "heap-inl.h"
69
69
  #include "log-inl.h"
70
- #include "messages.h"
70
+ #include "cpu-profiler-inl.h"
71
+ #include "handles-inl.h"
72
+ #include "vm-state-inl.h"
71
73
 
72
74
  namespace v8 {
73
75
  namespace internal {
@@ -94,7 +96,7 @@ class V8 : public AllStatic {
94
96
 
95
97
  // Random number generation support. Not cryptographically safe.
96
98
  static uint32_t Random();
97
- static Smi* RandomPositiveSmi();
99
+ static Object* FillHeapNumberWithRandom(Object* heap_number);
98
100
 
99
101
  // Idle notification directly from the API.
100
102
  static bool IdleNotification();
@@ -54,9 +54,10 @@ function InstallFunctions(object, attributes, functions) {
54
54
  var key = functions[i];
55
55
  var f = functions[i + 1];
56
56
  %FunctionSetName(f, key);
57
+ %FunctionRemovePrototype(f);
57
58
  %SetProperty(object, key, f, attributes);
58
59
  }
59
- %TransformToFastProperties(object);
60
+ %ToFastProperties(object);
60
61
  }
61
62
 
62
63
  // Emulates JSC by installing functions on a hidden prototype that
@@ -82,7 +83,10 @@ function GlobalIsNaN(number) {
82
83
 
83
84
  // ECMA 262 - 15.1.5
84
85
  function GlobalIsFinite(number) {
85
- return %NumberIsFinite(ToNumber(number));
86
+ if (!IS_NUMBER(number)) number = ToNumber(number);
87
+
88
+ // NaN - NaN == NaN, Infinity - Infinity == NaN, -Infinity - -Infinity == NaN.
89
+ return %_IsSmi(number) || number - number == 0;
86
90
  }
87
91
 
88
92
 
@@ -197,7 +201,7 @@ $Object.prototype.constructor = $Object;
197
201
 
198
202
  // ECMA-262 - 15.2.4.2
199
203
  function ObjectToString() {
200
- return "[object " + %_ClassOf(this) + "]";
204
+ return "[object " + %_ClassOf(ToObject(this)) + "]";
201
205
  }
202
206
 
203
207
 
@@ -209,7 +213,7 @@ function ObjectToLocaleString() {
209
213
 
210
214
  // ECMA-262 - 15.2.4.4
211
215
  function ObjectValueOf() {
212
- return this;
216
+ return ToObject(this);
213
217
  }
214
218
 
215
219
 
@@ -221,7 +225,7 @@ function ObjectHasOwnProperty(V) {
221
225
 
222
226
  // ECMA-262 - 15.2.4.6
223
227
  function ObjectIsPrototypeOf(V) {
224
- if (!IS_OBJECT(V) && !IS_FUNCTION(V)) return false;
228
+ if (!IS_OBJECT(V) && !IS_FUNCTION(V) && !IS_UNDETECTABLE(V)) return false;
225
229
  return %IsInPrototypeChain(this, V);
226
230
  }
227
231
 
@@ -236,7 +240,7 @@ function ObjectPropertyIsEnumerable(V) {
236
240
 
237
241
  // Extensions for providing property getters and setters.
238
242
  function ObjectDefineGetter(name, fun) {
239
- if (this == null) {
243
+ if (this == null && !IS_UNDETECTABLE(this)) {
240
244
  throw new $TypeError('Object.prototype.__defineGetter__: this is Null');
241
245
  }
242
246
  if (!IS_FUNCTION(fun)) {
@@ -247,7 +251,7 @@ function ObjectDefineGetter(name, fun) {
247
251
 
248
252
 
249
253
  function ObjectLookupGetter(name) {
250
- if (this == null) {
254
+ if (this == null && !IS_UNDETECTABLE(this)) {
251
255
  throw new $TypeError('Object.prototype.__lookupGetter__: this is Null');
252
256
  }
253
257
  return %LookupAccessor(ToObject(this), ToString(name), GETTER);
@@ -255,7 +259,7 @@ function ObjectLookupGetter(name) {
255
259
 
256
260
 
257
261
  function ObjectDefineSetter(name, fun) {
258
- if (this == null) {
262
+ if (this == null && !IS_UNDETECTABLE(this)) {
259
263
  throw new $TypeError('Object.prototype.__defineSetter__: this is Null');
260
264
  }
261
265
  if (!IS_FUNCTION(fun)) {
@@ -267,7 +271,7 @@ function ObjectDefineSetter(name, fun) {
267
271
 
268
272
 
269
273
  function ObjectLookupSetter(name) {
270
- if (this == null) {
274
+ if (this == null && !IS_UNDETECTABLE(this)) {
271
275
  throw new $TypeError('Object.prototype.__lookupSetter__: this is Null');
272
276
  }
273
277
  return %LookupAccessor(ToObject(this), ToString(name), SETTER);
@@ -275,8 +279,9 @@ function ObjectLookupSetter(name) {
275
279
 
276
280
 
277
281
  function ObjectKeys(obj) {
278
- if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj))
279
- throw MakeTypeError('object_keys_non_object', [obj]);
282
+ if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
283
+ !IS_UNDETECTABLE(obj))
284
+ throw MakeTypeError("obj_ctor_property_non_object", ["keys"]);
280
285
  return %LocalKeys(obj);
281
286
  }
282
287
 
@@ -307,7 +312,7 @@ function IsInconsistentDescriptor(desc) {
307
312
 
308
313
  // ES5 8.10.4
309
314
  function FromPropertyDescriptor(desc) {
310
- if(IS_UNDEFINED(desc)) return desc;
315
+ if (IS_UNDEFINED(desc)) return desc;
311
316
  var obj = new $Object();
312
317
  if (IsDataDescriptor(desc)) {
313
318
  obj.value = desc.getValue();
@@ -333,7 +338,6 @@ function ToPropertyDescriptor(obj) {
333
338
  desc.setEnumerable(ToBoolean(obj.enumerable));
334
339
  }
335
340
 
336
-
337
341
  if ("configurable" in obj) {
338
342
  desc.setConfigurable(ToBoolean(obj.configurable));
339
343
  }
@@ -377,7 +381,9 @@ function PropertyDescriptor() {
377
381
  this.writable_ = false;
378
382
  this.hasWritable_ = false;
379
383
  this.enumerable_ = false;
384
+ this.hasEnumerable_ = false;
380
385
  this.configurable_ = false;
386
+ this.hasConfigurable_ = false;
381
387
  this.get_ = void 0;
382
388
  this.hasGetter_ = false;
383
389
  this.set_ = void 0;
@@ -396,8 +402,14 @@ PropertyDescriptor.prototype.getValue = function() {
396
402
  }
397
403
 
398
404
 
405
+ PropertyDescriptor.prototype.hasValue = function() {
406
+ return this.hasValue_;
407
+ }
408
+
409
+
399
410
  PropertyDescriptor.prototype.setEnumerable = function(enumerable) {
400
411
  this.enumerable_ = enumerable;
412
+ this.hasEnumerable_ = true;
401
413
  }
402
414
 
403
415
 
@@ -406,6 +418,11 @@ PropertyDescriptor.prototype.isEnumerable = function () {
406
418
  }
407
419
 
408
420
 
421
+ PropertyDescriptor.prototype.hasEnumerable = function() {
422
+ return this.hasEnumerable_;
423
+ }
424
+
425
+
409
426
  PropertyDescriptor.prototype.setWritable = function(writable) {
410
427
  this.writable_ = writable;
411
428
  this.hasWritable_ = true;
@@ -419,6 +436,12 @@ PropertyDescriptor.prototype.isWritable = function() {
419
436
 
420
437
  PropertyDescriptor.prototype.setConfigurable = function(configurable) {
421
438
  this.configurable_ = configurable;
439
+ this.hasConfigurable_ = true;
440
+ }
441
+
442
+
443
+ PropertyDescriptor.prototype.hasConfigurable = function() {
444
+ return this.hasConfigurable_;
422
445
  }
423
446
 
424
447
 
@@ -438,6 +461,11 @@ PropertyDescriptor.prototype.getGet = function() {
438
461
  }
439
462
 
440
463
 
464
+ PropertyDescriptor.prototype.hasGetter = function() {
465
+ return this.hasGetter_;
466
+ }
467
+
468
+
441
469
  PropertyDescriptor.prototype.setSet = function(set) {
442
470
  this.set_ = set;
443
471
  this.hasSetter_ = true;
@@ -449,17 +477,22 @@ PropertyDescriptor.prototype.getSet = function() {
449
477
  }
450
478
 
451
479
 
480
+ PropertyDescriptor.prototype.hasSetter = function() {
481
+ return this.hasSetter_;
482
+ }
483
+
484
+
485
+
452
486
  // ES5 section 8.12.1.
453
487
  function GetOwnProperty(obj, p) {
454
488
  var desc = new PropertyDescriptor();
455
-
489
+
456
490
  // An array with:
457
491
  // obj is a data property [false, value, Writeable, Enumerable, Configurable]
458
492
  // obj is an accessor [true, Get, Set, Enumerable, Configurable]
459
493
  var props = %GetOwnProperty(ToObject(obj), ToString(p));
460
494
 
461
- if (IS_UNDEFINED(props))
462
- return void 0;
495
+ if (IS_UNDEFINED(props)) return void 0;
463
496
 
464
497
  // This is an accessor
465
498
  if (props[0]) {
@@ -476,16 +509,89 @@ function GetOwnProperty(obj, p) {
476
509
  }
477
510
 
478
511
 
479
- // ES5 8.12.9. This version cannot cope with the property p already
480
- // being present on obj.
512
+ // ES5 section 8.12.2.
513
+ function GetProperty(obj, p) {
514
+ var prop = GetOwnProperty(obj);
515
+ if (!IS_UNDEFINED(prop)) return prop;
516
+ var proto = obj.__proto__;
517
+ if (IS_NULL(proto)) return void 0;
518
+ return GetProperty(proto, p);
519
+ }
520
+
521
+
522
+ // ES5 section 8.12.6
523
+ function HasProperty(obj, p) {
524
+ var desc = GetProperty(obj, p);
525
+ return IS_UNDEFINED(desc) ? false : true;
526
+ }
527
+
528
+
529
+ // ES5 8.12.9.
481
530
  function DefineOwnProperty(obj, p, desc, should_throw) {
482
- var flag = desc.isEnumerable() ? 0 : DONT_ENUM;
483
- if (IsDataDescriptor(desc)) {
484
- flag |= desc.isWritable() ? 0 : (DONT_DELETE | READ_ONLY);
485
- %SetProperty(obj, p, desc.getValue(), flag);
531
+ var current = GetOwnProperty(obj, p);
532
+ var extensible = %IsExtensible(ToObject(obj));
533
+
534
+ // Error handling according to spec.
535
+ // Step 3
536
+ if (IS_UNDEFINED(current) && !extensible)
537
+ throw MakeTypeError("define_disallowed", ["defineProperty"]);
538
+
539
+ if (!IS_UNDEFINED(current) && !current.isConfigurable()) {
540
+ // Step 7
541
+ if (desc.isConfigurable() || desc.isEnumerable() != current.isEnumerable())
542
+ throw MakeTypeError("redefine_disallowed", ["defineProperty"]);
543
+ // Step 9
544
+ if (IsDataDescriptor(current) != IsDataDescriptor(desc))
545
+ throw MakeTypeError("redefine_disallowed", ["defineProperty"]);
546
+ // Step 10
547
+ if (IsDataDescriptor(current) && IsDataDescriptor(desc)) {
548
+ if (!current.isWritable() && desc.isWritable())
549
+ throw MakeTypeError("redefine_disallowed", ["defineProperty"]);
550
+ if (!current.isWritable() && desc.hasValue() &&
551
+ !SameValue(desc.getValue(), current.getValue())) {
552
+ throw MakeTypeError("redefine_disallowed", ["defineProperty"]);
553
+ }
554
+ }
555
+ // Step 11
556
+ if (IsAccessorDescriptor(desc) && IsAccessorDescriptor(current)) {
557
+ if (desc.hasSetter() && !SameValue(desc.getSet(), current.getSet())){
558
+ throw MakeTypeError("redefine_disallowed", ["defineProperty"]);
559
+ }
560
+ if (desc.hasGetter() && !SameValue(desc.getGet(),current.getGet()))
561
+ throw MakeTypeError("redefine_disallowed", ["defineProperty"]);
562
+ }
563
+ }
564
+
565
+ // Send flags - enumerable and configurable are common - writable is
566
+ // only send to the data descriptor.
567
+ // Take special care if enumerable and configurable is not defined on
568
+ // desc (we need to preserve the existing values from current).
569
+ var flag = NONE;
570
+ if (desc.hasEnumerable()) {
571
+ flag |= desc.isEnumerable() ? 0 : DONT_ENUM;
572
+ } else if (!IS_UNDEFINED(current)) {
573
+ flag |= current.isEnumerable() ? 0 : DONT_ENUM;
486
574
  } else {
487
- if (IS_FUNCTION(desc.getGet())) %DefineAccessor(obj, p, GETTER, desc.getGet(), flag);
488
- if (IS_FUNCTION(desc.getSet())) %DefineAccessor(obj, p, SETTER, desc.getSet(), flag);
575
+ flag |= DONT_ENUM;
576
+ }
577
+
578
+ if (desc.hasConfigurable()) {
579
+ flag |= desc.isConfigurable() ? 0 : DONT_DELETE;
580
+ } else if (!IS_UNDEFINED(current)) {
581
+ flag |= current.isConfigurable() ? 0 : DONT_DELETE;
582
+ } else
583
+ flag |= DONT_DELETE;
584
+
585
+ if (IsDataDescriptor(desc) || IsGenericDescriptor(desc)) {
586
+ flag |= desc.isWritable() ? 0 : READ_ONLY;
587
+ %DefineOrRedefineDataProperty(obj, p, desc.getValue(), flag);
588
+ } else {
589
+ if (desc.hasGetter() && IS_FUNCTION(desc.getGet())) {
590
+ %DefineOrRedefineAccessorProperty(obj, p, GETTER, desc.getGet(), flag);
591
+ }
592
+ if (desc.hasSetter() && IS_FUNCTION(desc.getSet())) {
593
+ %DefineOrRedefineAccessorProperty(obj, p, SETTER, desc.getSet(), flag);
594
+ }
489
595
  }
490
596
  return true;
491
597
  }
@@ -493,23 +599,65 @@ function DefineOwnProperty(obj, p, desc, should_throw) {
493
599
 
494
600
  // ES5 section 15.2.3.2.
495
601
  function ObjectGetPrototypeOf(obj) {
496
- if (!IS_OBJECT(obj) && !IS_FUNCTION(obj)) {
497
- throw MakeTypeError("object_get_prototype_non_object", [obj]);
498
- }
499
- return obj.__proto__;
602
+ if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
603
+ !IS_UNDETECTABLE(obj))
604
+ throw MakeTypeError("obj_ctor_property_non_object", ["getPrototypeOf"]);
605
+ return obj.__proto__;
500
606
  }
501
607
 
502
608
 
503
- // ES5 section 15.2.3.3
609
+ // ES5 section 15.2.3.3
504
610
  function ObjectGetOwnPropertyDescriptor(obj, p) {
505
- if (!IS_OBJECT(obj) && !IS_FUNCTION(obj)) {
506
- throw MakeTypeError("object_get_prototype_non_object", [obj]);
507
- }
611
+ if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
612
+ !IS_UNDETECTABLE(obj))
613
+ throw MakeTypeError("obj_ctor_property_non_object", ["getOwnPropertyDescriptor"]);
508
614
  var desc = GetOwnProperty(obj, p);
509
615
  return FromPropertyDescriptor(desc);
510
616
  }
511
617
 
512
618
 
619
+ // ES5 section 15.2.3.4.
620
+ function ObjectGetOwnPropertyNames(obj) {
621
+ if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
622
+ !IS_UNDETECTABLE(obj))
623
+ throw MakeTypeError("obj_ctor_property_non_object", ["getOwnPropertyNames"]);
624
+
625
+ // Find all the indexed properties.
626
+
627
+ // Get the local element names.
628
+ var propertyNames = %GetLocalElementNames(obj);
629
+
630
+ // Get names for indexed interceptor properties.
631
+ if (%GetInterceptorInfo(obj) & 1) {
632
+ var indexedInterceptorNames =
633
+ %GetIndexedInterceptorElementNames(obj);
634
+ if (indexedInterceptorNames)
635
+ propertyNames = propertyNames.concat(indexedInterceptorNames);
636
+ }
637
+
638
+ // Find all the named properties.
639
+
640
+ // Get the local property names.
641
+ propertyNames = propertyNames.concat(%GetLocalPropertyNames(obj));
642
+
643
+ // Get names for named interceptor properties if any.
644
+
645
+ if (%GetInterceptorInfo(obj) & 2) {
646
+ var namedInterceptorNames =
647
+ %GetNamedInterceptorPropertyNames(obj);
648
+ if (namedInterceptorNames) {
649
+ propertyNames = propertyNames.concat(namedInterceptorNames);
650
+ }
651
+ }
652
+
653
+ // Property names are expected to be strings.
654
+ for (var i = 0; i < propertyNames.length; ++i)
655
+ propertyNames[i] = ToString(propertyNames[i]);
656
+
657
+ return propertyNames;
658
+ }
659
+
660
+
513
661
  // ES5 section 15.2.3.5.
514
662
  function ObjectCreate(proto, properties) {
515
663
  if (!IS_OBJECT(proto) && !IS_NULL(proto)) {
@@ -522,10 +670,23 @@ function ObjectCreate(proto, properties) {
522
670
  }
523
671
 
524
672
 
525
- // ES5 section 15.2.3.7. This version cannot cope with the properies already
526
- // being present on obj. Therefore it is not exposed as
527
- // Object.defineProperties yet.
673
+ // ES5 section 15.2.3.6.
674
+ function ObjectDefineProperty(obj, p, attributes) {
675
+ if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
676
+ !IS_UNDETECTABLE(obj))
677
+ throw MakeTypeError("obj_ctor_property_non_object", ["defineProperty"]);
678
+ var name = ToString(p);
679
+ var desc = ToPropertyDescriptor(attributes);
680
+ DefineOwnProperty(obj, name, desc, true);
681
+ return obj;
682
+ }
683
+
684
+
685
+ // ES5 section 15.2.3.7.
528
686
  function ObjectDefineProperties(obj, properties) {
687
+ if ((!IS_OBJECT(obj) || IS_NULL_OR_UNDEFINED(obj)) && !IS_FUNCTION(obj) &&
688
+ !IS_UNDETECTABLE(obj))
689
+ throw MakeTypeError("obj_ctor_property_non_object", ["defineProperties"]);
529
690
  var props = ToObject(properties);
530
691
  var key_values = [];
531
692
  for (var key in props) {
@@ -541,6 +702,7 @@ function ObjectDefineProperties(obj, properties) {
541
702
  var desc = key_values[i + 1];
542
703
  DefineOwnProperty(obj, key, desc, true);
543
704
  }
705
+ return obj;
544
706
  }
545
707
 
546
708
 
@@ -575,8 +737,11 @@ function SetupObject() {
575
737
  InstallFunctions($Object, DONT_ENUM, $Array(
576
738
  "keys", ObjectKeys,
577
739
  "create", ObjectCreate,
740
+ "defineProperty", ObjectDefineProperty,
741
+ "defineProperties", ObjectDefineProperties,
578
742
  "getPrototypeOf", ObjectGetPrototypeOf,
579
- "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor
743
+ "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor,
744
+ "getOwnPropertyNames", ObjectGetOwnPropertyNames
580
745
  ));
581
746
  }
582
747
 
@@ -759,7 +924,7 @@ function SetupNumber() {
759
924
  "POSITIVE_INFINITY",
760
925
  1/0,
761
926
  DONT_ENUM | DONT_DELETE | READ_ONLY);
762
- %TransformToFastProperties($Number);
927
+ %ToFastProperties($Number);
763
928
 
764
929
  // Setup non-enumerable functions on the Number prototype object.
765
930
  InstallFunctions($Number.prototype, DONT_ENUM, $Array(