therubyracer 0.7.4 → 0.7.5

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 (482) hide show
  1. data/History.txt +11 -0
  2. data/Rakefile +1 -1
  3. data/ext/v8/extconf.rb +0 -18
  4. data/ext/v8/rr.cpp +2 -2
  5. data/ext/v8/upstream/{2.1.10 → 2.3.3}/AUTHORS +1 -0
  6. data/ext/v8/upstream/{2.1.10 → 2.3.3}/ChangeLog +239 -0
  7. data/ext/v8/upstream/{2.1.10 → 2.3.3}/LICENSE +0 -0
  8. data/ext/v8/upstream/{2.1.10 → 2.3.3}/SConstruct +29 -17
  9. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-debug.h +61 -3
  10. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8-profiler.h +182 -5
  11. data/ext/v8/upstream/{2.1.10 → 2.3.3}/include/v8.h +458 -257
  12. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/SConscript +2 -5
  13. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.cc +2 -2
  14. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/accessors.h +0 -0
  15. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.cc +0 -0
  16. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/allocation.h +0 -0
  17. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.cc +574 -30
  18. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/api.h +12 -10
  19. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apinatives.js +0 -0
  20. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/apiutils.h +0 -0
  21. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arguments.h +0 -0
  22. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm-inl.h +38 -15
  23. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.cc +646 -101
  24. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/assembler-arm.h +174 -15
  25. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/builtins-arm.cc +56 -47
  26. data/ext/v8/upstream/2.3.3/src/arm/codegen-arm-inl.h +48 -0
  27. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.cc +2957 -1448
  28. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/codegen-arm.h +230 -74
  29. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.cc +25 -1
  30. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/constants-arm.h +16 -1
  31. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/cpu-arm.cc +4 -0
  32. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/debug-arm.cc +76 -6
  33. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/disasm-arm.cc +168 -20
  34. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/fast-codegen-arm.cc +5 -2
  35. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.cc +4 -4
  36. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/frames-arm.h +0 -0
  37. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/full-codegen-arm.cc +1558 -248
  38. data/ext/v8/upstream/2.3.3/src/arm/ic-arm.cc +2258 -0
  39. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/jump-target-arm.cc +55 -103
  40. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.cc +358 -185
  41. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/macro-assembler-arm.h +136 -41
  42. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.cc +26 -5
  43. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/regexp-macro-assembler-arm.h +0 -0
  44. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm-inl.h +0 -0
  45. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.cc +4 -0
  46. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/register-allocator-arm.h +0 -0
  47. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.cc +203 -22
  48. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/simulator-arm.h +7 -0
  49. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/stub-cache-arm.cc +531 -324
  50. data/ext/v8/upstream/2.3.3/src/arm/virtual-frame-arm-inl.h +59 -0
  51. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.cc +247 -81
  52. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/arm/virtual-frame-arm.h +99 -83
  53. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/array.js +2 -2
  54. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.cc +6 -13
  55. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/assembler.h +36 -10
  56. data/ext/v8/upstream/2.3.3/src/ast-inl.h +81 -0
  57. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.cc +14 -0
  58. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ast.h +20 -35
  59. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.cc +32 -1
  60. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bootstrapper.h +0 -4
  61. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.cc +50 -33
  62. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/builtins.h +2 -0
  63. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/bytecodes-irregexp.h +0 -0
  64. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cached-powers.h +0 -0
  65. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates-inl.h +0 -0
  66. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/char-predicates.h +0 -0
  67. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.cc +0 -0
  68. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/checks.h +8 -6
  69. data/ext/v8/upstream/2.3.3/src/circular-queue-inl.h +53 -0
  70. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.cc +0 -0
  71. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/circular-queue.h +0 -26
  72. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.cc +2 -4
  73. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code-stubs.h +1 -0
  74. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/code.h +0 -0
  75. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen-inl.h +0 -0
  76. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.cc +44 -13
  77. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/codegen.h +310 -31
  78. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.cc +28 -0
  79. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compilation-cache.h +3 -0
  80. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.cc +45 -14
  81. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/compiler.h +0 -0
  82. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.cc +11 -11
  83. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/contexts.h +0 -0
  84. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions-inl.h +0 -0
  85. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.cc +25 -11
  86. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/conversions.h +0 -0
  87. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.cc +0 -0
  88. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/counters.h +0 -0
  89. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler-inl.h +2 -1
  90. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.cc +68 -24
  91. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu-profiler.h +19 -11
  92. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/cpu.h +0 -0
  93. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.cc +0 -0
  94. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-debug.h +0 -0
  95. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-posix.cc +0 -0
  96. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-readline.cc +0 -0
  97. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8-windows.cc +0 -0
  98. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.cc +3 -0
  99. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.h +0 -0
  100. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/d8.js +55 -2
  101. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.cc +3 -0
  102. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/data-flow.h +0 -0
  103. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/date.js +68 -137
  104. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser-inl.h +0 -0
  105. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.cc +2 -8
  106. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dateparser.h +0 -0
  107. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.cc +3 -3
  108. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-agent.h +0 -0
  109. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug-debugger.js +81 -23
  110. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.cc +275 -81
  111. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/debug.h +85 -6
  112. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disasm.h +0 -0
  113. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.cc +1 -1
  114. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/disassembler.h +0 -0
  115. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.cc +0 -0
  116. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/diy-fp.h +0 -0
  117. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/double.h +0 -0
  118. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/dtoa-config.c +0 -0
  119. data/ext/v8/upstream/2.3.3/src/dtoa.cc +77 -0
  120. data/ext/v8/upstream/2.3.3/src/dtoa.h +81 -0
  121. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.cc +111 -3
  122. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/execution.h +12 -1
  123. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.cc +25 -3
  124. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/factory.h +16 -9
  125. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.cc +0 -0
  126. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-codegen.h +0 -0
  127. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.cc +2 -9
  128. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/fast-dtoa.h +1 -2
  129. data/ext/v8/upstream/2.3.3/src/fixed-dtoa.cc +405 -0
  130. data/ext/v8/upstream/{2.1.10/src/jump-target-light.cc → 2.3.3/src/fixed-dtoa.h} +22 -53
  131. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flag-definitions.h +14 -6
  132. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.cc +5 -9
  133. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flags.h +0 -0
  134. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.cc +0 -0
  135. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/flow-graph.h +0 -0
  136. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.cc +0 -0
  137. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frame-element.h +0 -0
  138. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames-inl.h +0 -0
  139. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.cc +5 -2
  140. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/frames.h +1 -0
  141. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.cc +387 -20
  142. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/full-codegen.h +102 -5
  143. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.cc +0 -0
  144. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/func-name-inferrer.h +0 -0
  145. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.cc +8 -4
  146. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/global-handles.h +0 -0
  147. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/globals.h +44 -7
  148. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles-inl.h +0 -0
  149. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.cc +19 -0
  150. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/handles.h +8 -0
  151. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.cc +0 -0
  152. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/hashmap.h +0 -0
  153. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-inl.h +56 -14
  154. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.cc +85 -1
  155. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap-profiler.h +45 -1
  156. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.cc +994 -396
  157. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/heap.h +220 -65
  158. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32-inl.h +41 -12
  159. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.cc +94 -24
  160. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/assembler-ia32.h +32 -4
  161. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/builtins-ia32.cc +42 -30
  162. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32-inl.h +0 -0
  163. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.cc +1758 -916
  164. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/codegen-ia32.h +67 -74
  165. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/cpu-ia32.cc +4 -0
  166. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/debug-ia32.cc +46 -0
  167. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/disasm-ia32.cc +37 -6
  168. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.cc +4 -0
  169. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/fast-codegen-ia32.h +0 -0
  170. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.cc +4 -0
  171. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/frames-ia32.h +0 -0
  172. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/full-codegen-ia32.cc +1465 -198
  173. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/ic-ia32.cc +688 -367
  174. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/jump-target-ia32.cc +4 -0
  175. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.cc +82 -180
  176. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/macro-assembler-ia32.h +41 -25
  177. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.cc +68 -24
  178. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/regexp-macro-assembler-ia32.h +1 -2
  179. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32-inl.h +0 -0
  180. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.cc +4 -0
  181. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/register-allocator-ia32.h +0 -0
  182. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.cc +0 -0
  183. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/simulator-ia32.h +0 -0
  184. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/stub-cache-ia32.cc +649 -302
  185. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.cc +23 -1
  186. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ia32/virtual-frame-ia32.h +18 -27
  187. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic-inl.h +30 -3
  188. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.cc +384 -66
  189. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/ic.h +65 -24
  190. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.cc +0 -0
  191. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/interpreter-irregexp.h +0 -0
  192. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/json.js +3 -3
  193. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.cc +20 -4
  194. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jsregexp.h +0 -0
  195. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy-inl.h +0 -0
  196. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-heavy.cc +79 -13
  197. data/ext/v8/upstream/{2.1.10/src/jump-target.h → 2.3.3/src/jump-target-heavy.h} +5 -47
  198. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-inl.h +0 -0
  199. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target-light-inl.h +16 -2
  200. data/ext/v8/upstream/2.3.3/src/jump-target-light.cc +110 -0
  201. data/ext/v8/upstream/2.3.3/src/jump-target-light.h +192 -0
  202. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/jump-target.cc +0 -64
  203. data/ext/v8/upstream/2.3.3/src/jump-target.h +90 -0
  204. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list-inl.h +0 -0
  205. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/list.h +0 -0
  206. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit-debugger.js +141 -28
  207. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.cc +19 -7
  208. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/liveedit.h +0 -0
  209. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-inl.h +0 -0
  210. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.cc +0 -0
  211. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log-utils.h +0 -0
  212. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.cc +12 -11
  213. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/log.h +12 -0
  214. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macro-assembler.h +0 -16
  215. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/macros.py +21 -0
  216. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.cc +120 -109
  217. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mark-compact.h +25 -37
  218. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/math.js +0 -0
  219. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/memory.h +0 -0
  220. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.cc +8 -3
  221. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.h +2 -1
  222. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/messages.js +15 -7
  223. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips-inl.h +0 -0
  224. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.cc +12 -1
  225. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/assembler-mips.h +4 -1
  226. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/builtins-mips.cc +3 -0
  227. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips-inl.h +0 -0
  228. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.cc +9 -0
  229. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/codegen-mips.h +1 -0
  230. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.cc +5 -0
  231. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/constants-mips.h +0 -0
  232. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/cpu-mips.cc +4 -0
  233. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/debug-mips.cc +3 -0
  234. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/disasm-mips.cc +3 -0
  235. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/fast-codegen-mips.cc +3 -0
  236. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.cc +3 -0
  237. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/frames-mips.h +0 -0
  238. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/full-codegen-mips.cc +5 -1
  239. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/ic-mips.cc +3 -0
  240. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/jump-target-mips.cc +3 -0
  241. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.cc +3 -0
  242. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/macro-assembler-mips.h +0 -0
  243. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips-inl.h +0 -0
  244. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.cc +3 -0
  245. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/register-allocator-mips.h +0 -0
  246. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.cc +3 -0
  247. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/simulator-mips.h +0 -0
  248. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/stub-cache-mips.cc +3 -0
  249. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.cc +3 -0
  250. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mips/virtual-frame-mips.h +0 -0
  251. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mirror-debugger.js +46 -4
  252. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/mksnapshot.cc +0 -0
  253. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/natives.h +0 -0
  254. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-debug.cc +8 -1
  255. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects-inl.h +235 -62
  256. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.cc +497 -231
  257. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/objects.h +355 -149
  258. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.cc +0 -0
  259. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/oprofile-agent.h +0 -0
  260. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.cc +31 -6
  261. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/parser.h +1 -1
  262. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-freebsd.cc +9 -6
  263. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-linux.cc +26 -6
  264. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-macos.cc +11 -6
  265. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-nullos.cc +0 -0
  266. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-openbsd.cc +6 -0
  267. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-posix.cc +0 -0
  268. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-solaris.cc +69 -23
  269. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform-win32.cc +15 -11
  270. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/platform.h +10 -6
  271. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/powers-ten.h +0 -0
  272. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.cc +0 -0
  273. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/prettyprinter.h +0 -0
  274. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/profile-generator-inl.h +26 -2
  275. data/ext/v8/upstream/2.3.3/src/profile-generator.cc +1830 -0
  276. data/ext/v8/upstream/2.3.3/src/profile-generator.h +853 -0
  277. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.cc +0 -0
  278. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/property.h +0 -0
  279. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp-inl.h +0 -0
  280. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.cc +0 -0
  281. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-irregexp.h +0 -0
  282. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.cc +0 -0
  283. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler-tracer.h +0 -0
  284. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.cc +1 -3
  285. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-macro-assembler.h +0 -0
  286. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.cc +0 -0
  287. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp-stack.h +0 -0
  288. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/regexp.js +25 -4
  289. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator-inl.h +0 -0
  290. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.cc +4 -3
  291. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/register-allocator.h +0 -0
  292. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.cc +85 -8
  293. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/rewriter.h +0 -0
  294. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.cc +547 -221
  295. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.h +5 -1
  296. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/runtime.js +23 -31
  297. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.cc +12 -6
  298. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scanner.h +60 -53
  299. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.cc +156 -168
  300. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopeinfo.h +58 -62
  301. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.cc +0 -0
  302. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/scopes.h +0 -0
  303. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.cc +320 -242
  304. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/serialize.h +81 -48
  305. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/shell.h +0 -0
  306. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/simulator.h +0 -0
  307. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/smart-pointer.h +0 -0
  308. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-common.cc +0 -0
  309. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot-empty.cc +0 -0
  310. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/snapshot.h +0 -0
  311. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces-inl.h +177 -74
  312. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.cc +138 -315
  313. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/spaces.h +155 -124
  314. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree-inl.h +0 -0
  315. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/splay-tree.h +0 -0
  316. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.cc +0 -0
  317. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string-stream.h +0 -0
  318. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/string.js +113 -119
  319. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.cc +242 -97
  320. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/stub-cache.h +118 -55
  321. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/COPYING +0 -0
  322. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/dtoa/dtoa.c +4 -0
  323. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/third_party/valgrind/valgrind.h +0 -0
  324. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.cc +0 -0
  325. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/token.h +0 -0
  326. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.cc +107 -26
  327. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/top.h +9 -4
  328. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.cc +0 -0
  329. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/type-info.h +2 -2
  330. data/ext/v8/upstream/2.3.3/src/unbound-queue-inl.h +95 -0
  331. data/ext/v8/upstream/2.3.3/src/unbound-queue.h +67 -0
  332. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode-inl.h +0 -0
  333. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.cc +0 -0
  334. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/unicode.h +0 -0
  335. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/uri.js +0 -0
  336. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.cc +0 -0
  337. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/utils.h +83 -1
  338. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.cc +0 -0
  339. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8-counters.h +20 -0
  340. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.cc +5 -1
  341. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8.h +0 -0
  342. data/ext/v8/upstream/2.3.3/src/v8dll-main.cc +39 -0
  343. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8natives.js +210 -33
  344. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.cc +1 -1
  345. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/v8threads.h +1 -1
  346. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.cc +0 -0
  347. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/variables.h +0 -0
  348. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.cc +3 -3
  349. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/version.h +0 -0
  350. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy-inl.h +40 -0
  351. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-heavy.cc +0 -0
  352. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-inl.h +0 -0
  353. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light-inl.h +106 -5
  354. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame-light.cc +4 -1
  355. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.cc +0 -0
  356. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/virtual-frame.h +0 -0
  357. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state-inl.h +6 -3
  358. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.cc +1 -1
  359. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/vm-state.h +6 -4
  360. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64-inl.h +42 -5
  361. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.cc +285 -53
  362. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/assembler-x64.h +54 -18
  363. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/builtins-x64.cc +31 -33
  364. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64-inl.h +0 -0
  365. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.cc +9787 -8722
  366. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/codegen-x64.h +82 -47
  367. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/cpu-x64.cc +4 -0
  368. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/debug-x64.cc +55 -6
  369. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/disasm-x64.cc +42 -19
  370. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/fast-codegen-x64.cc +4 -0
  371. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.cc +4 -0
  372. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/frames-x64.h +4 -0
  373. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/full-codegen-x64.cc +1487 -210
  374. data/ext/v8/upstream/2.3.3/src/x64/ic-x64.cc +1907 -0
  375. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/jump-target-x64.cc +4 -0
  376. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.cc +366 -338
  377. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/macro-assembler-x64.h +83 -38
  378. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.cc +82 -23
  379. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/regexp-macro-assembler-x64.h +1 -2
  380. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64-inl.h +6 -5
  381. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.cc +4 -0
  382. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/register-allocator-x64.h +1 -1
  383. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.cc +0 -0
  384. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/simulator-x64.h +0 -0
  385. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/stub-cache-x64.cc +556 -377
  386. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.cc +197 -98
  387. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/x64/virtual-frame-x64.h +37 -28
  388. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone-inl.h +0 -0
  389. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.cc +0 -0
  390. data/ext/v8/upstream/{2.1.10 → 2.3.3}/src/zone.h +0 -0
  391. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/codemap.js +0 -0
  392. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/consarray.js +0 -0
  393. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/csvparser.js +0 -0
  394. data/ext/v8/upstream/2.3.3/tools/gc-nvp-trace-processor.py +317 -0
  395. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/generate-ten-powers.scm +0 -0
  396. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/gyp/v8.gyp +87 -20
  397. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/js2c.py +19 -15
  398. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/jsmin.py +0 -0
  399. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor +0 -0
  400. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/linux-tick-processor.py +0 -0
  401. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/logreader.js +0 -0
  402. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-nm +0 -0
  403. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/mac-tick-processor +0 -0
  404. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/annotate +0 -0
  405. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/common +0 -0
  406. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/dump +0 -0
  407. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/report +0 -0
  408. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/reset +0 -0
  409. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/run +0 -0
  410. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/shutdown +0 -0
  411. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/oprofile/start +0 -0
  412. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/presubmit.py +0 -0
  413. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/process-heap-prof.py +0 -0
  414. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile.js +0 -0
  415. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/profile_view.js +0 -0
  416. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/run-valgrind.py +0 -0
  417. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.js +0 -0
  418. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/splaytree.py +0 -0
  419. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/stats-viewer.py +25 -13
  420. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/test.py +0 -0
  421. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor-driver.js +0 -0
  422. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.js +0 -0
  423. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/tickprocessor.py +0 -0
  424. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/utils.py +0 -0
  425. data/ext/v8/upstream/2.3.3/tools/v8.xcodeproj/project.pbxproj +1855 -0
  426. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/README.txt +0 -0
  427. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/arm.vsprops +0 -0
  428. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/common.vsprops +0 -0
  429. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8.vcproj +0 -0
  430. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_arm.vcproj +0 -0
  431. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8_x64.vcproj +0 -0
  432. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/d8js2c.cmd +0 -0
  433. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/debug.vsprops +0 -0
  434. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/ia32.vsprops +0 -0
  435. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/js2c.cmd +0 -0
  436. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/release.vsprops +0 -0
  437. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.sln +0 -0
  438. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8.vcproj +0 -0
  439. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.sln +0 -0
  440. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_arm.vcproj +0 -0
  441. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base.vcproj +40 -0
  442. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_arm.vcproj +20 -0
  443. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_base_x64.vcproj +16 -0
  444. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest.vcproj +4 -0
  445. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_arm.vcproj +0 -0
  446. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_cctest_x64.vcproj +0 -0
  447. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot.vcproj +0 -0
  448. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -0
  449. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample.vcproj +0 -0
  450. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_arm.vcproj +0 -0
  451. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_process_sample_x64.vcproj +0 -0
  452. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample.vcproj +0 -0
  453. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -0
  454. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -0
  455. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot.vcproj +0 -0
  456. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc.vcproj +0 -0
  457. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -0
  458. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_snapshot_x64.vcproj +0 -0
  459. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.sln +0 -0
  460. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/v8_x64.vcproj +0 -0
  461. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/visual_studio/x64.vsprops +0 -0
  462. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.bat +0 -0
  463. data/ext/v8/upstream/{2.1.10 → 2.3.3}/tools/windows-tick-processor.py +0 -0
  464. data/ext/v8/upstream/Makefile +1 -1
  465. data/ext/v8/v8_template.cpp +94 -2
  466. data/ext/v8/v8_try_catch.cpp +2 -2
  467. data/lib/v8.rb +1 -1
  468. data/lib/v8/access.rb +93 -40
  469. data/lib/v8/cli.rb +1 -1
  470. data/lib/v8/function.rb +14 -2
  471. data/spec/redjs/jsapi_spec.rb +231 -42
  472. data/therubyracer.gemspec +3 -3
  473. metadata +463 -453
  474. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2-inl.h +0 -263
  475. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.cc +0 -1878
  476. data/ext/v8/upstream/2.1.10/src/arm/assembler-thumb2.h +0 -1036
  477. data/ext/v8/upstream/2.1.10/src/arm/codegen-arm-inl.h +0 -72
  478. data/ext/v8/upstream/2.1.10/src/arm/ic-arm.cc +0 -1833
  479. data/ext/v8/upstream/2.1.10/src/circular-queue-inl.h +0 -101
  480. data/ext/v8/upstream/2.1.10/src/profile-generator.cc +0 -583
  481. data/ext/v8/upstream/2.1.10/src/profile-generator.h +0 -364
  482. data/ext/v8/upstream/2.1.10/src/x64/ic-x64.cc +0 -1621
@@ -25,62 +25,31 @@
25
25
  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
26
  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
27
 
28
- #include "v8.h"
29
-
30
- #include "codegen-inl.h"
31
- #include "jump-target-inl.h"
28
+ #ifndef V8_FIXED_DTOA_H_
29
+ #define V8_FIXED_DTOA_H_
32
30
 
33
31
  namespace v8 {
34
32
  namespace internal {
35
33
 
36
-
37
- void JumpTarget::Jump(Result* arg) {
38
- UNIMPLEMENTED();
39
- }
40
-
41
-
42
- void JumpTarget::Branch(Condition cc, Result* arg, Hint hint) {
43
- UNIMPLEMENTED();
44
- }
45
-
46
-
47
- void JumpTarget::Branch(Condition cc, Result* arg0, Result* arg1, Hint hint) {
48
- UNIMPLEMENTED();
49
- }
50
-
51
-
52
- void BreakTarget::Branch(Condition cc, Result* arg, Hint hint) {
53
- UNIMPLEMENTED();
54
- }
55
-
56
-
57
- void JumpTarget::Bind(Result* arg) {
58
- UNIMPLEMENTED();
59
- }
60
-
61
-
62
- void JumpTarget::Bind(Result* arg0, Result* arg1) {
63
- UNIMPLEMENTED();
64
- }
65
-
66
-
67
- void JumpTarget::ComputeEntryFrame() {
68
- UNIMPLEMENTED();
69
- }
70
-
71
-
72
- DeferredCode::DeferredCode()
73
- : masm_(CodeGeneratorScope::Current()->masm()),
74
- statement_position_(masm_->current_statement_position()),
75
- position_(masm_->current_position()) {
76
- ASSERT(statement_position_ != RelocInfo::kNoPosition);
77
- ASSERT(position_ != RelocInfo::kNoPosition);
78
-
79
- CodeGeneratorScope::Current()->AddDeferred(this);
80
-
81
- #ifdef DEBUG
82
- CodeGeneratorScope::Current()->frame()->AssertIsSpilled();
83
- #endif
84
- }
34
+ // Produces digits necessary to print a given number with
35
+ // 'fractional_count' digits after the decimal point.
36
+ // The buffer must be big enough to hold the result plus one terminating null
37
+ // character.
38
+ //
39
+ // The produced digits might be too short in which case the caller has to fill
40
+ // the gaps with '0's.
41
+ // Example: FastFixedDtoa(0.001, 5, ...) is allowed to return buffer = "1", and
42
+ // decimal_point = -2.
43
+ // Halfway cases are rounded towards +/-Infinity (away from 0). The call
44
+ // FastFixedDtoa(0.15, 2, ...) thus returns buffer = "2", decimal_point = 0.
45
+ // The returned buffer may contain digits that would be truncated from the
46
+ // shortest representation of the input.
47
+ //
48
+ // This method only works for some parameters. If it can't handle the input it
49
+ // returns false. The output is null-terminated when the function succeeds.
50
+ bool FastFixedDtoa(double v, int fractional_count,
51
+ Vector<char> buffer, int* length, int* decimal_point);
85
52
 
86
53
  } } // namespace v8::internal
54
+
55
+ #endif // V8_FIXED_DTOA_H_
@@ -100,10 +100,10 @@ private:
100
100
  DEFINE_bool(debug_code, false,
101
101
  "generate extra code (comments, assertions) for debugging")
102
102
  DEFINE_bool(emit_branch_hints, false, "emit branch hints")
103
- DEFINE_bool(push_pop_elimination, true,
104
- "eliminate redundant push/pops in assembly code")
105
- DEFINE_bool(print_push_pop_elimination, false,
106
- "print elimination of redundant push/pops in assembly code")
103
+ DEFINE_bool(peephole_optimization, true,
104
+ "perform peephole optimizations in assembly code")
105
+ DEFINE_bool(print_peephole_optimization, false,
106
+ "print peephole optimizations in assembly code")
107
107
  DEFINE_bool(enable_sse2, true,
108
108
  "enable use of SSE2 instructions if available")
109
109
  DEFINE_bool(enable_sse3, true,
@@ -123,6 +123,8 @@ DEFINE_bool(enable_armv7, true,
123
123
  DEFINE_string(expose_natives_as, NULL, "expose natives in global object")
124
124
  DEFINE_string(expose_debug_as, NULL, "expose debug in global object")
125
125
  DEFINE_bool(expose_gc, false, "expose gc extension")
126
+ DEFINE_bool(expose_externalize_string, false,
127
+ "expose externalize string extension")
126
128
  DEFINE_int(stack_trace_limit, 10, "number of stack frames to capture")
127
129
  DEFINE_bool(disable_native_files, false, "disable builtin natives files")
128
130
 
@@ -182,10 +184,17 @@ DEFINE_bool(gc_global, false, "always perform global GCs")
182
184
  DEFINE_int(gc_interval, -1, "garbage collect after <n> allocations")
183
185
  DEFINE_bool(trace_gc, false,
184
186
  "print one trace line following each garbage collection")
187
+ DEFINE_bool(trace_gc_nvp, false,
188
+ "print one detailed trace line in name=value format "
189
+ "after each garbage collection")
190
+ DEFINE_bool(print_cumulative_gc_stat, false,
191
+ "print cumulative GC statistics in name=value format on exit")
185
192
  DEFINE_bool(trace_gc_verbose, false,
186
193
  "print more details following each garbage collection")
187
194
  DEFINE_bool(collect_maps, true,
188
195
  "garbage collect maps from which no objects can be reached")
196
+ DEFINE_bool(flush_code, true,
197
+ "flush code that we expect not to use again before full gc")
189
198
 
190
199
  // v8.cc
191
200
  DEFINE_bool(use_idle_notification, true,
@@ -272,7 +281,7 @@ DEFINE_string(testing_serialization_file, "/tmp/serdes",
272
281
 
273
282
  DEFINE_bool(help, false, "Print usage message, including flags, on console")
274
283
  DEFINE_bool(dump_counters, false, "Dump counters on exit")
275
- DEFINE_bool(debugger, true, "Enable JavaScript debugger")
284
+ DEFINE_bool(debugger, false, "Enable JavaScript debugger")
276
285
  DEFINE_bool(remote_debugger, false, "Connect JavaScript debugger to the "
277
286
  "debugger agent in another process")
278
287
  DEFINE_bool(debugger_agent, false, "Enable debugger agent")
@@ -328,7 +337,6 @@ DEFINE_bool(code_stats, false, "report code statistics after GC")
328
337
  DEFINE_bool(verify_heap, false, "verify heap pointers before and after GC")
329
338
  DEFINE_bool(print_handles, false, "report handles after GC")
330
339
  DEFINE_bool(print_global_handles, false, "report global handles after GC")
331
- DEFINE_bool(print_rset, false, "print remembered sets before GC")
332
340
 
333
341
  // ic.cc
334
342
  DEFINE_bool(trace_ic, false, "trace inline cache state transitions")
@@ -470,12 +470,12 @@ static char* SkipBlackSpace(char* p) {
470
470
  // static
471
471
  int FlagList::SetFlagsFromString(const char* str, int len) {
472
472
  // make a 0-terminated copy of str
473
- char* copy0 = NewArray<char>(len + 1);
474
- memcpy(copy0, str, len);
473
+ ScopedVector<char> copy0(len + 1);
474
+ memcpy(copy0.start(), str, len);
475
475
  copy0[len] = '\0';
476
476
 
477
477
  // strip leading white space
478
- char* copy = SkipWhiteSpace(copy0);
478
+ char* copy = SkipWhiteSpace(copy0.start());
479
479
 
480
480
  // count the number of 'arguments'
481
481
  int argc = 1; // be compatible with SetFlagsFromCommandLine()
@@ -485,7 +485,7 @@ int FlagList::SetFlagsFromString(const char* str, int len) {
485
485
  }
486
486
 
487
487
  // allocate argument array
488
- char** argv = NewArray<char*>(argc);
488
+ ScopedVector<char*> argv(argc);
489
489
 
490
490
  // split the flags string into arguments
491
491
  argc = 1; // be compatible with SetFlagsFromCommandLine()
@@ -497,11 +497,7 @@ int FlagList::SetFlagsFromString(const char* str, int len) {
497
497
  }
498
498
 
499
499
  // set the flags
500
- int result = SetFlagsFromCommandLine(&argc, argv, false);
501
-
502
- // cleanup
503
- DeleteArray(argv);
504
- DeleteArray(copy0);
500
+ int result = SetFlagsFromCommandLine(&argc, argv.start(), false);
505
501
 
506
502
  return result;
507
503
  }
File without changes
File without changes
File without changes
File without changes
@@ -532,8 +532,11 @@ void JavaScriptFrame::Print(StringStream* accumulator,
532
532
  if (IsConstructor()) accumulator->Add("new ");
533
533
  accumulator->PrintFunction(function, receiver, &code);
534
534
 
535
+ Handle<SerializedScopeInfo> scope_info(SerializedScopeInfo::Empty());
536
+
535
537
  if (function->IsJSFunction()) {
536
538
  Handle<SharedFunctionInfo> shared(JSFunction::cast(function)->shared());
539
+ scope_info = Handle<SerializedScopeInfo>(shared->scope_info());
537
540
  Object* script_obj = shared->script();
538
541
  if (script_obj->IsScript()) {
539
542
  Handle<Script> script(Script::cast(script_obj));
@@ -542,7 +545,7 @@ void JavaScriptFrame::Print(StringStream* accumulator,
542
545
 
543
546
  Address pc = this->pc();
544
547
  if (code != NULL && code->kind() == Code::FUNCTION &&
545
- pc >= code->instruction_start() && pc < code->relocation_start()) {
548
+ pc >= code->instruction_start() && pc < code->instruction_end()) {
546
549
  int source_pos = code->SourcePosition(pc);
547
550
  int line = GetScriptLineNumberSafe(script, source_pos) + 1;
548
551
  accumulator->Add(":%d", line);
@@ -561,7 +564,7 @@ void JavaScriptFrame::Print(StringStream* accumulator,
561
564
  // Get scope information for nicer output, if possible. If code is
562
565
  // NULL, or doesn't contain scope info, info will return 0 for the
563
566
  // number of parameters, stack slots, or context slots.
564
- ScopeInfo<PreallocatedStorage> info(code);
567
+ ScopeInfo<PreallocatedStorage> info(*scope_info);
565
568
 
566
569
  // Print the parameters.
567
570
  int parameters_count = ComputeParametersCount();
@@ -357,6 +357,7 @@ class StandardFrame: public StackFrame {
357
357
 
358
358
  private:
359
359
  friend class StackFrame;
360
+ friend class StackFrameIterator;
360
361
  };
361
362
 
362
363
 
@@ -439,6 +439,231 @@ void FullCodeGenSyntaxChecker::VisitThisFunction(ThisFunction* expr) {
439
439
  #undef CHECK_BAILOUT
440
440
 
441
441
 
442
+ void BreakableStatementChecker::Check(Statement* stmt) {
443
+ Visit(stmt);
444
+ }
445
+
446
+
447
+ void BreakableStatementChecker::Check(Expression* expr) {
448
+ Visit(expr);
449
+ }
450
+
451
+
452
+ void BreakableStatementChecker::VisitDeclaration(Declaration* decl) {
453
+ }
454
+
455
+
456
+ void BreakableStatementChecker::VisitBlock(Block* stmt) {
457
+ }
458
+
459
+
460
+ void BreakableStatementChecker::VisitExpressionStatement(
461
+ ExpressionStatement* stmt) {
462
+ // Check if expression is breakable.
463
+ Visit(stmt->expression());
464
+ }
465
+
466
+
467
+ void BreakableStatementChecker::VisitEmptyStatement(EmptyStatement* stmt) {
468
+ }
469
+
470
+
471
+ void BreakableStatementChecker::VisitIfStatement(IfStatement* stmt) {
472
+ // If the condition is breakable the if statement is breakable.
473
+ Visit(stmt->condition());
474
+ }
475
+
476
+
477
+ void BreakableStatementChecker::VisitContinueStatement(
478
+ ContinueStatement* stmt) {
479
+ }
480
+
481
+
482
+ void BreakableStatementChecker::VisitBreakStatement(BreakStatement* stmt) {
483
+ }
484
+
485
+
486
+ void BreakableStatementChecker::VisitReturnStatement(ReturnStatement* stmt) {
487
+ // Return is breakable if the expression is.
488
+ Visit(stmt->expression());
489
+ }
490
+
491
+
492
+ void BreakableStatementChecker::VisitWithEnterStatement(
493
+ WithEnterStatement* stmt) {
494
+ Visit(stmt->expression());
495
+ }
496
+
497
+
498
+ void BreakableStatementChecker::VisitWithExitStatement(
499
+ WithExitStatement* stmt) {
500
+ }
501
+
502
+
503
+ void BreakableStatementChecker::VisitSwitchStatement(SwitchStatement* stmt) {
504
+ // Switch statements breakable if the tag expression is.
505
+ Visit(stmt->tag());
506
+ }
507
+
508
+
509
+ void BreakableStatementChecker::VisitDoWhileStatement(DoWhileStatement* stmt) {
510
+ // Mark do while as breakable to avoid adding a break slot in front of it.
511
+ is_breakable_ = true;
512
+ }
513
+
514
+
515
+ void BreakableStatementChecker::VisitWhileStatement(WhileStatement* stmt) {
516
+ // Mark while statements breakable if the condition expression is.
517
+ Visit(stmt->cond());
518
+ }
519
+
520
+
521
+ void BreakableStatementChecker::VisitForStatement(ForStatement* stmt) {
522
+ // Mark for statements breakable if the condition expression is.
523
+ if (stmt->cond() != NULL) {
524
+ Visit(stmt->cond());
525
+ }
526
+ }
527
+
528
+
529
+ void BreakableStatementChecker::VisitForInStatement(ForInStatement* stmt) {
530
+ // Mark for in statements breakable if the enumerable expression is.
531
+ Visit(stmt->enumerable());
532
+ }
533
+
534
+
535
+ void BreakableStatementChecker::VisitTryCatchStatement(
536
+ TryCatchStatement* stmt) {
537
+ // Mark try catch as breakable to avoid adding a break slot in front of it.
538
+ is_breakable_ = true;
539
+ }
540
+
541
+
542
+ void BreakableStatementChecker::VisitTryFinallyStatement(
543
+ TryFinallyStatement* stmt) {
544
+ // Mark try finally as breakable to avoid adding a break slot in front of it.
545
+ is_breakable_ = true;
546
+ }
547
+
548
+
549
+ void BreakableStatementChecker::VisitDebuggerStatement(
550
+ DebuggerStatement* stmt) {
551
+ // The debugger statement is breakable.
552
+ is_breakable_ = true;
553
+ }
554
+
555
+
556
+ void BreakableStatementChecker::VisitFunctionLiteral(FunctionLiteral* expr) {
557
+ }
558
+
559
+
560
+ void BreakableStatementChecker::VisitSharedFunctionInfoLiteral(
561
+ SharedFunctionInfoLiteral* expr) {
562
+ }
563
+
564
+
565
+ void BreakableStatementChecker::VisitConditional(Conditional* expr) {
566
+ }
567
+
568
+
569
+ void BreakableStatementChecker::VisitSlot(Slot* expr) {
570
+ }
571
+
572
+
573
+ void BreakableStatementChecker::VisitVariableProxy(VariableProxy* expr) {
574
+ }
575
+
576
+
577
+ void BreakableStatementChecker::VisitLiteral(Literal* expr) {
578
+ }
579
+
580
+
581
+ void BreakableStatementChecker::VisitRegExpLiteral(RegExpLiteral* expr) {
582
+ }
583
+
584
+
585
+ void BreakableStatementChecker::VisitObjectLiteral(ObjectLiteral* expr) {
586
+ }
587
+
588
+
589
+ void BreakableStatementChecker::VisitArrayLiteral(ArrayLiteral* expr) {
590
+ }
591
+
592
+
593
+ void BreakableStatementChecker::VisitCatchExtensionObject(
594
+ CatchExtensionObject* expr) {
595
+ }
596
+
597
+
598
+ void BreakableStatementChecker::VisitAssignment(Assignment* expr) {
599
+ // If assigning to a property (including a global property) the assignment is
600
+ // breakable.
601
+ Variable* var = expr->target()->AsVariableProxy()->AsVariable();
602
+ Property* prop = expr->target()->AsProperty();
603
+ if (prop != NULL || (var != NULL && var->is_global())) {
604
+ is_breakable_ = true;
605
+ return;
606
+ }
607
+
608
+ // Otherwise the assignment is breakable if the assigned value is.
609
+ Visit(expr->value());
610
+ }
611
+
612
+
613
+ void BreakableStatementChecker::VisitThrow(Throw* expr) {
614
+ // Throw is breakable if the expression is.
615
+ Visit(expr->exception());
616
+ }
617
+
618
+
619
+ void BreakableStatementChecker::VisitProperty(Property* expr) {
620
+ // Property load is breakable.
621
+ is_breakable_ = true;
622
+ }
623
+
624
+
625
+ void BreakableStatementChecker::VisitCall(Call* expr) {
626
+ // Function calls both through IC and call stub are breakable.
627
+ is_breakable_ = true;
628
+ }
629
+
630
+
631
+ void BreakableStatementChecker::VisitCallNew(CallNew* expr) {
632
+ // Function calls through new are breakable.
633
+ is_breakable_ = true;
634
+ }
635
+
636
+
637
+ void BreakableStatementChecker::VisitCallRuntime(CallRuntime* expr) {
638
+ }
639
+
640
+
641
+ void BreakableStatementChecker::VisitUnaryOperation(UnaryOperation* expr) {
642
+ Visit(expr->expression());
643
+ }
644
+
645
+
646
+ void BreakableStatementChecker::VisitCountOperation(CountOperation* expr) {
647
+ Visit(expr->expression());
648
+ }
649
+
650
+
651
+ void BreakableStatementChecker::VisitBinaryOperation(BinaryOperation* expr) {
652
+ Visit(expr->left());
653
+ Visit(expr->right());
654
+ }
655
+
656
+
657
+ void BreakableStatementChecker::VisitCompareOperation(CompareOperation* expr) {
658
+ Visit(expr->left());
659
+ Visit(expr->right());
660
+ }
661
+
662
+
663
+ void BreakableStatementChecker::VisitThisFunction(ThisFunction* expr) {
664
+ }
665
+
666
+
442
667
  #define __ ACCESS_MASM(masm())
443
668
 
444
669
  Handle<Code> FullCodeGenerator::MakeCode(CompilationInfo* info) {
@@ -552,7 +777,60 @@ void FullCodeGenerator::SetReturnPosition(FunctionLiteral* fun) {
552
777
 
553
778
  void FullCodeGenerator::SetStatementPosition(Statement* stmt) {
554
779
  if (FLAG_debug_info) {
780
+ #ifdef ENABLE_DEBUGGER_SUPPORT
781
+ if (!Debugger::IsDebuggerActive()) {
782
+ CodeGenerator::RecordPositions(masm_, stmt->statement_pos());
783
+ } else {
784
+ // Check if the statement will be breakable without adding a debug break
785
+ // slot.
786
+ BreakableStatementChecker checker;
787
+ checker.Check(stmt);
788
+ // Record the statement position right here if the statement is not
789
+ // breakable. For breakable statements the actual recording of the
790
+ // position will be postponed to the breakable code (typically an IC).
791
+ bool position_recorded = CodeGenerator::RecordPositions(
792
+ masm_, stmt->statement_pos(), !checker.is_breakable());
793
+ // If the position recording did record a new position generate a debug
794
+ // break slot to make the statement breakable.
795
+ if (position_recorded) {
796
+ Debug::GenerateSlot(masm_);
797
+ }
798
+ }
799
+ #else
555
800
  CodeGenerator::RecordPositions(masm_, stmt->statement_pos());
801
+ #endif
802
+ }
803
+ }
804
+
805
+
806
+ void FullCodeGenerator::SetExpressionPosition(Expression* expr, int pos) {
807
+ if (FLAG_debug_info) {
808
+ #ifdef ENABLE_DEBUGGER_SUPPORT
809
+ if (!Debugger::IsDebuggerActive()) {
810
+ CodeGenerator::RecordPositions(masm_, pos);
811
+ } else {
812
+ // Check if the expression will be breakable without adding a debug break
813
+ // slot.
814
+ BreakableStatementChecker checker;
815
+ checker.Check(expr);
816
+ // Record a statement position right here if the expression is not
817
+ // breakable. For breakable expressions the actual recording of the
818
+ // position will be postponed to the breakable code (typically an IC).
819
+ // NOTE this will record a statement position for something which might
820
+ // not be a statement. As stepping in the debugger will only stop at
821
+ // statement positions this is used for e.g. the condition expression of
822
+ // a do while loop.
823
+ bool position_recorded = CodeGenerator::RecordPositions(
824
+ masm_, pos, !checker.is_breakable());
825
+ // If the position recording did record a new position generate a debug
826
+ // break slot to make the statement breakable.
827
+ if (position_recorded) {
828
+ Debug::GenerateSlot(masm_);
829
+ }
830
+ }
831
+ #else
832
+ CodeGenerator::RecordPositions(masm_, pos);
833
+ #endif
556
834
  }
557
835
  }
558
836
 
@@ -571,6 +849,80 @@ void FullCodeGenerator::SetSourcePosition(int pos) {
571
849
  }
572
850
 
573
851
 
852
+ void FullCodeGenerator::EmitInlineRuntimeCall(CallRuntime* expr) {
853
+ Handle<String> name = expr->name();
854
+ if (strcmp("_IsSmi", *name->ToCString()) == 0) {
855
+ EmitIsSmi(expr->arguments());
856
+ } else if (strcmp("_IsNonNegativeSmi", *name->ToCString()) == 0) {
857
+ EmitIsNonNegativeSmi(expr->arguments());
858
+ } else if (strcmp("_IsObject", *name->ToCString()) == 0) {
859
+ EmitIsObject(expr->arguments());
860
+ } else if (strcmp("_IsSpecObject", *name->ToCString()) == 0) {
861
+ EmitIsSpecObject(expr->arguments());
862
+ } else if (strcmp("_IsUndetectableObject", *name->ToCString()) == 0) {
863
+ EmitIsUndetectableObject(expr->arguments());
864
+ } else if (strcmp("_IsFunction", *name->ToCString()) == 0) {
865
+ EmitIsFunction(expr->arguments());
866
+ } else if (strcmp("_IsArray", *name->ToCString()) == 0) {
867
+ EmitIsArray(expr->arguments());
868
+ } else if (strcmp("_IsRegExp", *name->ToCString()) == 0) {
869
+ EmitIsRegExp(expr->arguments());
870
+ } else if (strcmp("_IsConstructCall", *name->ToCString()) == 0) {
871
+ EmitIsConstructCall(expr->arguments());
872
+ } else if (strcmp("_ObjectEquals", *name->ToCString()) == 0) {
873
+ EmitObjectEquals(expr->arguments());
874
+ } else if (strcmp("_Arguments", *name->ToCString()) == 0) {
875
+ EmitArguments(expr->arguments());
876
+ } else if (strcmp("_ArgumentsLength", *name->ToCString()) == 0) {
877
+ EmitArgumentsLength(expr->arguments());
878
+ } else if (strcmp("_ClassOf", *name->ToCString()) == 0) {
879
+ EmitClassOf(expr->arguments());
880
+ } else if (strcmp("_Log", *name->ToCString()) == 0) {
881
+ EmitLog(expr->arguments());
882
+ } else if (strcmp("_RandomHeapNumber", *name->ToCString()) == 0) {
883
+ EmitRandomHeapNumber(expr->arguments());
884
+ } else if (strcmp("_SubString", *name->ToCString()) == 0) {
885
+ EmitSubString(expr->arguments());
886
+ } else if (strcmp("_RegExpExec", *name->ToCString()) == 0) {
887
+ EmitRegExpExec(expr->arguments());
888
+ } else if (strcmp("_ValueOf", *name->ToCString()) == 0) {
889
+ EmitValueOf(expr->arguments());
890
+ } else if (strcmp("_SetValueOf", *name->ToCString()) == 0) {
891
+ EmitSetValueOf(expr->arguments());
892
+ } else if (strcmp("_NumberToString", *name->ToCString()) == 0) {
893
+ EmitNumberToString(expr->arguments());
894
+ } else if (strcmp("_StringCharFromCode", *name->ToCString()) == 0) {
895
+ EmitStringCharFromCode(expr->arguments());
896
+ } else if (strcmp("_StringCharCodeAt", *name->ToCString()) == 0) {
897
+ EmitStringCharCodeAt(expr->arguments());
898
+ } else if (strcmp("_StringCharAt", *name->ToCString()) == 0) {
899
+ EmitStringCharAt(expr->arguments());
900
+ } else if (strcmp("_StringAdd", *name->ToCString()) == 0) {
901
+ EmitStringAdd(expr->arguments());
902
+ } else if (strcmp("_StringCompare", *name->ToCString()) == 0) {
903
+ EmitStringCompare(expr->arguments());
904
+ } else if (strcmp("_MathPow", *name->ToCString()) == 0) {
905
+ EmitMathPow(expr->arguments());
906
+ } else if (strcmp("_MathSin", *name->ToCString()) == 0) {
907
+ EmitMathSin(expr->arguments());
908
+ } else if (strcmp("_MathCos", *name->ToCString()) == 0) {
909
+ EmitMathCos(expr->arguments());
910
+ } else if (strcmp("_MathSqrt", *name->ToCString()) == 0) {
911
+ EmitMathSqrt(expr->arguments());
912
+ } else if (strcmp("_CallFunction", *name->ToCString()) == 0) {
913
+ EmitCallFunction(expr->arguments());
914
+ } else if (strcmp("_RegExpConstructResult", *name->ToCString()) == 0) {
915
+ EmitRegExpConstructResult(expr->arguments());
916
+ } else if (strcmp("_SwapElements", *name->ToCString()) == 0) {
917
+ EmitSwapElements(expr->arguments());
918
+ } else if (strcmp("_GetFromCache", *name->ToCString()) == 0) {
919
+ EmitGetFromCache(expr->arguments());
920
+ } else {
921
+ UNREACHABLE();
922
+ }
923
+ }
924
+
925
+
574
926
  void FullCodeGenerator::EmitLogicalOperation(BinaryOperation* expr) {
575
927
  Label eval_right, done;
576
928
 
@@ -727,7 +1079,7 @@ void FullCodeGenerator::VisitReturnStatement(ReturnStatement* stmt) {
727
1079
  }
728
1080
  __ Drop(stack_depth);
729
1081
 
730
- EmitReturnSequence(stmt->statement_pos());
1082
+ EmitReturnSequence();
731
1083
  }
732
1084
 
733
1085
 
@@ -760,11 +1112,6 @@ void FullCodeGenerator::VisitWithExitStatement(WithExitStatement* stmt) {
760
1112
  }
761
1113
 
762
1114
 
763
- void FullCodeGenerator::VisitSwitchStatement(SwitchStatement* stmt) {
764
- UNREACHABLE();
765
- }
766
-
767
-
768
1115
  void FullCodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
769
1116
  Comment cmnt(masm_, "[ DoWhileStatement");
770
1117
  SetStatementPosition(stmt);
@@ -781,7 +1128,11 @@ void FullCodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
781
1128
  __ bind(&stack_check_success);
782
1129
 
783
1130
  __ bind(loop_statement.continue_target());
784
- SetStatementPosition(stmt->condition_position());
1131
+
1132
+ // Record the position of the do while condition and make sure it is possible
1133
+ // to break on the condition.
1134
+ SetExpressionPosition(stmt->cond(), stmt->condition_position());
1135
+
785
1136
  VisitForControl(stmt->cond(), &body, loop_statement.break_target());
786
1137
 
787
1138
  __ bind(&stack_limit_hit);
@@ -797,7 +1148,6 @@ void FullCodeGenerator::VisitDoWhileStatement(DoWhileStatement* stmt) {
797
1148
 
798
1149
  void FullCodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
799
1150
  Comment cmnt(masm_, "[ WhileStatement");
800
- SetStatementPosition(stmt);
801
1151
  Label body, stack_limit_hit, stack_check_success;
802
1152
 
803
1153
  Iteration loop_statement(this, stmt);
@@ -810,6 +1160,10 @@ void FullCodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
810
1160
  Visit(stmt->body());
811
1161
 
812
1162
  __ bind(loop_statement.continue_target());
1163
+ // Emit the statement position here as this is where the while statement code
1164
+ // starts.
1165
+ SetStatementPosition(stmt);
1166
+
813
1167
  // Check stack before looping.
814
1168
  __ StackLimitCheck(&stack_limit_hit);
815
1169
  __ bind(&stack_check_success);
@@ -828,7 +1182,6 @@ void FullCodeGenerator::VisitWhileStatement(WhileStatement* stmt) {
828
1182
 
829
1183
  void FullCodeGenerator::VisitForStatement(ForStatement* stmt) {
830
1184
  Comment cmnt(masm_, "[ ForStatement");
831
- SetStatementPosition(stmt);
832
1185
  Label test, body, stack_limit_hit, stack_check_success;
833
1186
 
834
1187
  Iteration loop_statement(this, stmt);
@@ -851,6 +1204,9 @@ void FullCodeGenerator::VisitForStatement(ForStatement* stmt) {
851
1204
  }
852
1205
 
853
1206
  __ bind(&test);
1207
+ // Emit the statement position here as this is where the for statement code
1208
+ // starts.
1209
+ SetStatementPosition(stmt);
854
1210
 
855
1211
  // Check stack before looping.
856
1212
  __ StackLimitCheck(&stack_limit_hit);
@@ -872,11 +1228,6 @@ void FullCodeGenerator::VisitForStatement(ForStatement* stmt) {
872
1228
  }
873
1229
 
874
1230
 
875
- void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
876
- UNREACHABLE();
877
- }
878
-
879
-
880
1231
  void FullCodeGenerator::VisitTryCatchStatement(TryCatchStatement* stmt) {
881
1232
  Comment cmnt(masm_, "[ TryCatchStatement");
882
1233
  SetStatementPosition(stmt);
@@ -995,18 +1346,14 @@ void FullCodeGenerator::VisitDebuggerStatement(DebuggerStatement* stmt) {
995
1346
  }
996
1347
 
997
1348
 
998
- void FullCodeGenerator::VisitSharedFunctionInfoLiteral(
999
- SharedFunctionInfoLiteral* expr) {
1000
- UNREACHABLE();
1001
- }
1002
-
1003
-
1004
1349
  void FullCodeGenerator::VisitConditional(Conditional* expr) {
1005
1350
  Comment cmnt(masm_, "[ Conditional");
1006
1351
  Label true_case, false_case, done;
1007
1352
  VisitForControl(expr->condition(), &true_case, &false_case);
1008
1353
 
1009
1354
  __ bind(&true_case);
1355
+ SetExpressionPosition(expr->then_expression(),
1356
+ expr->then_expression_position());
1010
1357
  Visit(expr->then_expression());
1011
1358
  // If control flow falls through Visit, jump to done.
1012
1359
  if (context_ == Expression::kEffect || context_ == Expression::kValue) {
@@ -1014,6 +1361,8 @@ void FullCodeGenerator::VisitConditional(Conditional* expr) {
1014
1361
  }
1015
1362
 
1016
1363
  __ bind(&false_case);
1364
+ SetExpressionPosition(expr->else_expression(),
1365
+ expr->else_expression_position());
1017
1366
  Visit(expr->else_expression());
1018
1367
  // If control flow falls through Visit, merge it with true case here.
1019
1368
  if (context_ == Expression::kEffect || context_ == Expression::kValue) {
@@ -1034,6 +1383,24 @@ void FullCodeGenerator::VisitLiteral(Literal* expr) {
1034
1383
  }
1035
1384
 
1036
1385
 
1386
+ void FullCodeGenerator::VisitFunctionLiteral(FunctionLiteral* expr) {
1387
+ Comment cmnt(masm_, "[ FunctionLiteral");
1388
+
1389
+ // Build the function boilerplate and instantiate it.
1390
+ Handle<SharedFunctionInfo> function_info =
1391
+ Compiler::BuildFunctionInfo(expr, script(), this);
1392
+ if (HasStackOverflow()) return;
1393
+ EmitNewClosure(function_info);
1394
+ }
1395
+
1396
+
1397
+ void FullCodeGenerator::VisitSharedFunctionInfoLiteral(
1398
+ SharedFunctionInfoLiteral* expr) {
1399
+ Comment cmnt(masm_, "[ SharedFunctionInfoLiteral");
1400
+ EmitNewClosure(expr->shared_function_info());
1401
+ }
1402
+
1403
+
1037
1404
  void FullCodeGenerator::VisitCatchExtensionObject(CatchExtensionObject* expr) {
1038
1405
  // Call runtime routine to allocate the catch extension object and
1039
1406
  // assign the exception value to the catch variable.