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
@@ -93,6 +93,38 @@ Code* StubCache::Set(String* name, Map* map, Code* code) {
93
93
  }
94
94
 
95
95
 
96
+ Object* StubCache::ComputeLoadNonexistent(String* name, JSObject* receiver) {
97
+ // If no global objects are present in the prototype chain, the load
98
+ // nonexistent IC stub can be shared for all names for a given map
99
+ // and we use the empty string for the map cache in that case. If
100
+ // there are global objects involved, we need to check global
101
+ // property cells in the stub and therefore the stub will be
102
+ // specific to the name.
103
+ String* cache_name = Heap::empty_string();
104
+ if (receiver->IsGlobalObject()) cache_name = name;
105
+ JSObject* last = receiver;
106
+ while (last->GetPrototype() != Heap::null_value()) {
107
+ last = JSObject::cast(last->GetPrototype());
108
+ if (last->IsGlobalObject()) cache_name = name;
109
+ }
110
+ // Compile the stub that is either shared for all names or
111
+ // name specific if there are global objects involved.
112
+ Code::Flags flags =
113
+ Code::ComputeMonomorphicFlags(Code::LOAD_IC, NONEXISTENT);
114
+ Object* code = receiver->map()->FindInCodeCache(cache_name, flags);
115
+ if (code->IsUndefined()) {
116
+ LoadStubCompiler compiler;
117
+ code = compiler.CompileLoadNonexistent(cache_name, receiver, last);
118
+ if (code->IsFailure()) return code;
119
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), cache_name));
120
+ Object* result =
121
+ receiver->map()->UpdateCodeCache(cache_name, Code::cast(code));
122
+ if (result->IsFailure()) return result;
123
+ }
124
+ return Set(name, receiver->map(), Code::cast(code));
125
+ }
126
+
127
+
96
128
  Object* StubCache::ComputeLoadField(String* name,
97
129
  JSObject* receiver,
98
130
  JSObject* holder,
@@ -103,9 +135,9 @@ Object* StubCache::ComputeLoadField(String* name,
103
135
  LoadStubCompiler compiler;
104
136
  code = compiler.CompileLoadField(receiver, holder, field_index, name);
105
137
  if (code->IsFailure()) return code;
106
- LOG(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
138
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
107
139
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
108
- if (result->IsFailure()) return code;
140
+ if (result->IsFailure()) return result;
109
141
  }
110
142
  return Set(name, receiver->map(), Code::cast(code));
111
143
  }
@@ -122,9 +154,9 @@ Object* StubCache::ComputeLoadCallback(String* name,
122
154
  LoadStubCompiler compiler;
123
155
  code = compiler.CompileLoadCallback(name, receiver, holder, callback);
124
156
  if (code->IsFailure()) return code;
125
- LOG(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
157
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
126
158
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
127
- if (result->IsFailure()) return code;
159
+ if (result->IsFailure()) return result;
128
160
  }
129
161
  return Set(name, receiver->map(), Code::cast(code));
130
162
  }
@@ -141,9 +173,9 @@ Object* StubCache::ComputeLoadConstant(String* name,
141
173
  LoadStubCompiler compiler;
142
174
  code = compiler.CompileLoadConstant(receiver, holder, value, name);
143
175
  if (code->IsFailure()) return code;
144
- LOG(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
176
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
145
177
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
146
- if (result->IsFailure()) return code;
178
+ if (result->IsFailure()) return result;
147
179
  }
148
180
  return Set(name, receiver->map(), Code::cast(code));
149
181
  }
@@ -158,9 +190,9 @@ Object* StubCache::ComputeLoadInterceptor(String* name,
158
190
  LoadStubCompiler compiler;
159
191
  code = compiler.CompileLoadInterceptor(receiver, holder, name);
160
192
  if (code->IsFailure()) return code;
161
- LOG(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
193
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
162
194
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
163
- if (result->IsFailure()) return code;
195
+ if (result->IsFailure()) return result;
164
196
  }
165
197
  return Set(name, receiver->map(), Code::cast(code));
166
198
  }
@@ -187,9 +219,9 @@ Object* StubCache::ComputeLoadGlobal(String* name,
187
219
  name,
188
220
  is_dont_delete);
189
221
  if (code->IsFailure()) return code;
190
- LOG(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
222
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
191
223
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
192
- if (result->IsFailure()) return code;
224
+ if (result->IsFailure()) return result;
193
225
  }
194
226
  return Set(name, receiver->map(), Code::cast(code));
195
227
  }
@@ -205,7 +237,7 @@ Object* StubCache::ComputeKeyedLoadField(String* name,
205
237
  KeyedLoadStubCompiler compiler;
206
238
  code = compiler.CompileLoadField(name, receiver, holder, field_index);
207
239
  if (code->IsFailure()) return code;
208
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
240
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
209
241
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
210
242
  if (result->IsFailure()) return result;
211
243
  }
@@ -224,7 +256,7 @@ Object* StubCache::ComputeKeyedLoadConstant(String* name,
224
256
  KeyedLoadStubCompiler compiler;
225
257
  code = compiler.CompileLoadConstant(name, receiver, holder, value);
226
258
  if (code->IsFailure()) return code;
227
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
259
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
228
260
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
229
261
  if (result->IsFailure()) return result;
230
262
  }
@@ -242,7 +274,7 @@ Object* StubCache::ComputeKeyedLoadInterceptor(String* name,
242
274
  KeyedLoadStubCompiler compiler;
243
275
  code = compiler.CompileLoadInterceptor(receiver, holder, name);
244
276
  if (code->IsFailure()) return code;
245
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
277
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
246
278
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
247
279
  if (result->IsFailure()) return result;
248
280
  }
@@ -261,7 +293,7 @@ Object* StubCache::ComputeKeyedLoadCallback(String* name,
261
293
  KeyedLoadStubCompiler compiler;
262
294
  code = compiler.CompileLoadCallback(name, receiver, holder, callback);
263
295
  if (code->IsFailure()) return code;
264
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
296
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
265
297
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
266
298
  if (result->IsFailure()) return result;
267
299
  }
@@ -279,7 +311,7 @@ Object* StubCache::ComputeKeyedLoadArrayLength(String* name,
279
311
  KeyedLoadStubCompiler compiler;
280
312
  code = compiler.CompileLoadArrayLength(name);
281
313
  if (code->IsFailure()) return code;
282
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
314
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
283
315
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
284
316
  if (result->IsFailure()) return result;
285
317
  }
@@ -296,7 +328,7 @@ Object* StubCache::ComputeKeyedLoadStringLength(String* name,
296
328
  KeyedLoadStubCompiler compiler;
297
329
  code = compiler.CompileLoadStringLength(name);
298
330
  if (code->IsFailure()) return code;
299
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
331
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
300
332
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
301
333
  if (result->IsFailure()) return result;
302
334
  }
@@ -313,7 +345,7 @@ Object* StubCache::ComputeKeyedLoadFunctionPrototype(String* name,
313
345
  KeyedLoadStubCompiler compiler;
314
346
  code = compiler.CompileLoadFunctionPrototype(name);
315
347
  if (code->IsFailure()) return code;
316
- LOG(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
348
+ PROFILE(CodeCreateEvent(Logger::KEYED_LOAD_IC_TAG, Code::cast(code), name));
317
349
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
318
350
  if (result->IsFailure()) return result;
319
351
  }
@@ -332,7 +364,7 @@ Object* StubCache::ComputeStoreField(String* name,
332
364
  StoreStubCompiler compiler;
333
365
  code = compiler.CompileStoreField(receiver, field_index, transition, name);
334
366
  if (code->IsFailure()) return code;
335
- LOG(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
367
+ PROFILE(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
336
368
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
337
369
  if (result->IsFailure()) return result;
338
370
  }
@@ -349,9 +381,9 @@ Object* StubCache::ComputeStoreGlobal(String* name,
349
381
  StoreStubCompiler compiler;
350
382
  code = compiler.CompileStoreGlobal(receiver, cell, name);
351
383
  if (code->IsFailure()) return code;
352
- LOG(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
384
+ PROFILE(CodeCreateEvent(Logger::LOAD_IC_TAG, Code::cast(code), name));
353
385
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
354
- if (result->IsFailure()) return code;
386
+ if (result->IsFailure()) return result;
355
387
  }
356
388
  return Set(name, receiver->map(), Code::cast(code));
357
389
  }
@@ -367,7 +399,7 @@ Object* StubCache::ComputeStoreCallback(String* name,
367
399
  StoreStubCompiler compiler;
368
400
  code = compiler.CompileStoreCallback(receiver, callback, name);
369
401
  if (code->IsFailure()) return code;
370
- LOG(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
402
+ PROFILE(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
371
403
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
372
404
  if (result->IsFailure()) return result;
373
405
  }
@@ -384,7 +416,7 @@ Object* StubCache::ComputeStoreInterceptor(String* name,
384
416
  StoreStubCompiler compiler;
385
417
  code = compiler.CompileStoreInterceptor(receiver, name);
386
418
  if (code->IsFailure()) return code;
387
- LOG(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
419
+ PROFILE(CodeCreateEvent(Logger::STORE_IC_TAG, Code::cast(code), name));
388
420
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
389
421
  if (result->IsFailure()) return result;
390
422
  }
@@ -401,7 +433,8 @@ Object* StubCache::ComputeKeyedStoreField(String* name, JSObject* receiver,
401
433
  KeyedStoreStubCompiler compiler;
402
434
  code = compiler.CompileStoreField(receiver, field_index, transition, name);
403
435
  if (code->IsFailure()) return code;
404
- LOG(CodeCreateEvent(Logger::KEYED_STORE_IC_TAG, Code::cast(code), name));
436
+ PROFILE(CodeCreateEvent(
437
+ Logger::KEYED_STORE_IC_TAG, Code::cast(code), name));
405
438
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
406
439
  if (result->IsFailure()) return result;
407
440
  }
@@ -435,14 +468,6 @@ Object* StubCache::ComputeCallConstant(int argc,
435
468
  argc);
436
469
  Object* code = map->FindInCodeCache(name, flags);
437
470
  if (code->IsUndefined()) {
438
- if (object->IsJSObject()) {
439
- Object* opt =
440
- Top::LookupSpecialFunction(JSObject::cast(object), holder, function);
441
- if (opt->IsJSFunction()) {
442
- check = StubCompiler::JSARRAY_HAS_FAST_ELEMENTS_CHECK;
443
- function = JSFunction::cast(opt);
444
- }
445
- }
446
471
  // If the function hasn't been compiled yet, we cannot do it now
447
472
  // because it may cause GC. To avoid this issue, we return an
448
473
  // internal error which will make sure we do not update any
@@ -453,7 +478,7 @@ Object* StubCache::ComputeCallConstant(int argc,
453
478
  code = compiler.CompileCallConstant(object, holder, function, name, check);
454
479
  if (code->IsFailure()) return code;
455
480
  ASSERT_EQ(flags, Code::cast(code)->flags());
456
- LOG(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
481
+ PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
457
482
  Object* result = map->UpdateCodeCache(name, Code::cast(code));
458
483
  if (result->IsFailure()) return result;
459
484
  }
@@ -484,10 +509,13 @@ Object* StubCache::ComputeCallField(int argc,
484
509
  Object* code = map->FindInCodeCache(name, flags);
485
510
  if (code->IsUndefined()) {
486
511
  CallStubCompiler compiler(argc, in_loop);
487
- code = compiler.CompileCallField(object, holder, index, name);
512
+ code = compiler.CompileCallField(JSObject::cast(object),
513
+ holder,
514
+ index,
515
+ name);
488
516
  if (code->IsFailure()) return code;
489
517
  ASSERT_EQ(flags, Code::cast(code)->flags());
490
- LOG(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
518
+ PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
491
519
  Object* result = map->UpdateCodeCache(name, Code::cast(code));
492
520
  if (result->IsFailure()) return result;
493
521
  }
@@ -518,10 +546,12 @@ Object* StubCache::ComputeCallInterceptor(int argc,
518
546
  Object* code = map->FindInCodeCache(name, flags);
519
547
  if (code->IsUndefined()) {
520
548
  CallStubCompiler compiler(argc, NOT_IN_LOOP);
521
- code = compiler.CompileCallInterceptor(object, holder, name);
549
+ code = compiler.CompileCallInterceptor(JSObject::cast(object),
550
+ holder,
551
+ name);
522
552
  if (code->IsFailure()) return code;
523
553
  ASSERT_EQ(flags, Code::cast(code)->flags());
524
- LOG(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
554
+ PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
525
555
  Object* result = map->UpdateCodeCache(name, Code::cast(code));
526
556
  if (result->IsFailure()) return result;
527
557
  }
@@ -559,9 +589,9 @@ Object* StubCache::ComputeCallGlobal(int argc,
559
589
  code = compiler.CompileCallGlobal(receiver, holder, cell, function, name);
560
590
  if (code->IsFailure()) return code;
561
591
  ASSERT_EQ(flags, Code::cast(code)->flags());
562
- LOG(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
592
+ PROFILE(CodeCreateEvent(Logger::CALL_IC_TAG, Code::cast(code), name));
563
593
  Object* result = receiver->map()->UpdateCodeCache(name, Code::cast(code));
564
- if (result->IsFailure()) return code;
594
+ if (result->IsFailure()) return result;
565
595
  }
566
596
  return Set(name, receiver->map(), Code::cast(code));
567
597
  }
@@ -704,8 +734,8 @@ Object* StubCache::ComputeLazyCompile(int argc) {
704
734
  if (result->IsCode()) {
705
735
  Code* code = Code::cast(result);
706
736
  USE(code);
707
- LOG(CodeCreateEvent(Logger::LAZY_COMPILE_TAG,
708
- code, code->arguments_count()));
737
+ PROFILE(CodeCreateEvent(Logger::LAZY_COMPILE_TAG,
738
+ code, code->arguments_count()));
709
739
  }
710
740
  return result;
711
741
  }
@@ -785,6 +815,10 @@ Object* StoreCallbackProperty(Arguments args) {
785
815
  return *value;
786
816
  }
787
817
 
818
+
819
+ static const int kAccessorInfoOffsetInInterceptorArgs = 2;
820
+
821
+
788
822
  /**
789
823
  * Attempts to load a property with an interceptor (which must be present),
790
824
  * but doesn't search the prototype chain.
@@ -793,11 +827,12 @@ Object* StoreCallbackProperty(Arguments args) {
793
827
  * provide any value for the given name.
794
828
  */
795
829
  Object* LoadPropertyWithInterceptorOnly(Arguments args) {
796
- JSObject* receiver_handle = JSObject::cast(args[0]);
797
- JSObject* holder_handle = JSObject::cast(args[1]);
798
- Handle<String> name_handle = args.at<String>(2);
799
- Handle<InterceptorInfo> interceptor_info = args.at<InterceptorInfo>(3);
800
- Object* data_handle = args[4];
830
+ Handle<String> name_handle = args.at<String>(0);
831
+ Handle<InterceptorInfo> interceptor_info = args.at<InterceptorInfo>(1);
832
+ ASSERT(kAccessorInfoOffsetInInterceptorArgs == 2);
833
+ ASSERT(args[2]->IsJSObject()); // Receiver.
834
+ ASSERT(args[3]->IsJSObject()); // Holder.
835
+ ASSERT(args.length() == 5); // Last arg is data object.
801
836
 
802
837
  Address getter_address = v8::ToCData<Address>(interceptor_info->getter());
803
838
  v8::NamedPropertyGetter getter =
@@ -806,8 +841,8 @@ Object* LoadPropertyWithInterceptorOnly(Arguments args) {
806
841
 
807
842
  {
808
843
  // Use the interceptor getter.
809
- CustomArguments args(data_handle, receiver_handle, holder_handle);
810
- v8::AccessorInfo info(args.end());
844
+ v8::AccessorInfo info(args.arguments() -
845
+ kAccessorInfoOffsetInInterceptorArgs);
811
846
  HandleScope scope;
812
847
  v8::Handle<v8::Value> r;
813
848
  {
@@ -845,11 +880,12 @@ static Object* ThrowReferenceError(String* name) {
845
880
 
846
881
  static Object* LoadWithInterceptor(Arguments* args,
847
882
  PropertyAttributes* attrs) {
848
- Handle<JSObject> receiver_handle = args->at<JSObject>(0);
849
- Handle<JSObject> holder_handle = args->at<JSObject>(1);
850
- Handle<String> name_handle = args->at<String>(2);
851
- Handle<InterceptorInfo> interceptor_info = args->at<InterceptorInfo>(3);
852
- Handle<Object> data_handle = args->at<Object>(4);
883
+ Handle<String> name_handle = args->at<String>(0);
884
+ Handle<InterceptorInfo> interceptor_info = args->at<InterceptorInfo>(1);
885
+ ASSERT(kAccessorInfoOffsetInInterceptorArgs == 2);
886
+ Handle<JSObject> receiver_handle = args->at<JSObject>(2);
887
+ Handle<JSObject> holder_handle = args->at<JSObject>(3);
888
+ ASSERT(args->length() == 5); // Last arg is data object.
853
889
 
854
890
  Address getter_address = v8::ToCData<Address>(interceptor_info->getter());
855
891
  v8::NamedPropertyGetter getter =
@@ -858,8 +894,8 @@ static Object* LoadWithInterceptor(Arguments* args,
858
894
 
859
895
  {
860
896
  // Use the interceptor getter.
861
- CustomArguments args(*data_handle, *receiver_handle, *holder_handle);
862
- v8::AccessorInfo info(args.end());
897
+ v8::AccessorInfo info(args->arguments() -
898
+ kAccessorInfoOffsetInInterceptorArgs);
863
899
  HandleScope scope;
864
900
  v8::Handle<v8::Value> r;
865
901
  {
@@ -894,7 +930,7 @@ Object* LoadPropertyWithInterceptorForLoad(Arguments args) {
894
930
 
895
931
  // If the property is present, return it.
896
932
  if (attr != ABSENT) return result;
897
- return ThrowReferenceError(String::cast(args[2]));
933
+ return ThrowReferenceError(String::cast(args[0]));
898
934
  }
899
935
 
900
936
 
@@ -920,6 +956,13 @@ Object* StoreInterceptorProperty(Arguments args) {
920
956
  }
921
957
 
922
958
 
959
+ Object* KeyedLoadPropertyWithInterceptor(Arguments args) {
960
+ JSObject* receiver = JSObject::cast(args[0]);
961
+ uint32_t index = Smi::cast(args[1])->value();
962
+ return receiver->GetElementWithInterceptor(receiver, index);
963
+ }
964
+
965
+
923
966
  Object* StubCompiler::CompileCallInitialize(Code::Flags flags) {
924
967
  HandleScope scope;
925
968
  int argc = Code::ExtractArgumentsCountFromFlags(flags);
@@ -929,8 +972,8 @@ Object* StubCompiler::CompileCallInitialize(Code::Flags flags) {
929
972
  Counters::call_initialize_stubs.Increment();
930
973
  Code* code = Code::cast(result);
931
974
  USE(code);
932
- LOG(CodeCreateEvent(Logger::CALL_INITIALIZE_TAG,
933
- code, code->arguments_count()));
975
+ PROFILE(CodeCreateEvent(Logger::CALL_INITIALIZE_TAG,
976
+ code, code->arguments_count()));
934
977
  }
935
978
  return result;
936
979
  }
@@ -947,8 +990,8 @@ Object* StubCompiler::CompileCallPreMonomorphic(Code::Flags flags) {
947
990
  Counters::call_premonomorphic_stubs.Increment();
948
991
  Code* code = Code::cast(result);
949
992
  USE(code);
950
- LOG(CodeCreateEvent(Logger::CALL_PRE_MONOMORPHIC_TAG,
951
- code, code->arguments_count()));
993
+ PROFILE(CodeCreateEvent(Logger::CALL_PRE_MONOMORPHIC_TAG,
994
+ code, code->arguments_count()));
952
995
  }
953
996
  return result;
954
997
  }
@@ -963,8 +1006,8 @@ Object* StubCompiler::CompileCallNormal(Code::Flags flags) {
963
1006
  Counters::call_normal_stubs.Increment();
964
1007
  Code* code = Code::cast(result);
965
1008
  USE(code);
966
- LOG(CodeCreateEvent(Logger::CALL_NORMAL_TAG,
967
- code, code->arguments_count()));
1009
+ PROFILE(CodeCreateEvent(Logger::CALL_NORMAL_TAG,
1010
+ code, code->arguments_count()));
968
1011
  }
969
1012
  return result;
970
1013
  }
@@ -979,8 +1022,8 @@ Object* StubCompiler::CompileCallMegamorphic(Code::Flags flags) {
979
1022
  Counters::call_megamorphic_stubs.Increment();
980
1023
  Code* code = Code::cast(result);
981
1024
  USE(code);
982
- LOG(CodeCreateEvent(Logger::CALL_MEGAMORPHIC_TAG,
983
- code, code->arguments_count()));
1025
+ PROFILE(CodeCreateEvent(Logger::CALL_MEGAMORPHIC_TAG,
1026
+ code, code->arguments_count()));
984
1027
  }
985
1028
  return result;
986
1029
  }
@@ -995,7 +1038,8 @@ Object* StubCompiler::CompileCallMiss(Code::Flags flags) {
995
1038
  Counters::call_megamorphic_stubs.Increment();
996
1039
  Code* code = Code::cast(result);
997
1040
  USE(code);
998
- LOG(CodeCreateEvent(Logger::CALL_MISS_TAG, code, code->arguments_count()));
1041
+ PROFILE(CodeCreateEvent(Logger::CALL_MISS_TAG,
1042
+ code, code->arguments_count()));
999
1043
  }
1000
1044
  return result;
1001
1045
  }
@@ -1009,8 +1053,8 @@ Object* StubCompiler::CompileCallDebugBreak(Code::Flags flags) {
1009
1053
  if (!result->IsFailure()) {
1010
1054
  Code* code = Code::cast(result);
1011
1055
  USE(code);
1012
- LOG(CodeCreateEvent(Logger::CALL_DEBUG_BREAK_TAG,
1013
- code, code->arguments_count()));
1056
+ PROFILE(CodeCreateEvent(Logger::CALL_DEBUG_BREAK_TAG,
1057
+ code, code->arguments_count()));
1014
1058
  }
1015
1059
  return result;
1016
1060
  }
@@ -1026,8 +1070,8 @@ Object* StubCompiler::CompileCallDebugPrepareStepIn(Code::Flags flags) {
1026
1070
  if (!result->IsFailure()) {
1027
1071
  Code* code = Code::cast(result);
1028
1072
  USE(code);
1029
- LOG(CodeCreateEvent(Logger::CALL_DEBUG_PREPARE_STEP_IN_TAG,
1030
- code, code->arguments_count()));
1073
+ PROFILE(CodeCreateEvent(Logger::CALL_DEBUG_PREPARE_STEP_IN_TAG,
1074
+ code, code->arguments_count()));
1031
1075
  }
1032
1076
  return result;
1033
1077
  }
@@ -1059,6 +1103,21 @@ Object* StubCompiler::GetCodeWithFlags(Code::Flags flags, String* name) {
1059
1103
  }
1060
1104
 
1061
1105
 
1106
+ void StubCompiler::LookupPostInterceptor(JSObject* holder,
1107
+ String* name,
1108
+ LookupResult* lookup) {
1109
+ holder->LocalLookupRealNamedProperty(name, lookup);
1110
+ if (!lookup->IsProperty()) {
1111
+ lookup->NotFound();
1112
+ Object* proto = holder->GetPrototype();
1113
+ if (proto != Heap::null_value()) {
1114
+ proto->Lookup(name, lookup);
1115
+ }
1116
+ }
1117
+ }
1118
+
1119
+
1120
+
1062
1121
  Object* LoadStubCompiler::GetCode(PropertyType type, String* name) {
1063
1122
  Code::Flags flags = Code::ComputeMonomorphicFlags(Code::LOAD_IC, type);
1064
1123
  return GetCodeWithFlags(flags, name);
@@ -1099,10 +1158,77 @@ Object* ConstructStubCompiler::GetCode() {
1099
1158
  if (!result->IsFailure()) {
1100
1159
  Code* code = Code::cast(result);
1101
1160
  USE(code);
1102
- LOG(CodeCreateEvent(Logger::STUB_TAG, code, "ConstructStub"));
1161
+ PROFILE(CodeCreateEvent(Logger::STUB_TAG, code, "ConstructStub"));
1103
1162
  }
1104
1163
  return result;
1105
1164
  }
1106
1165
 
1107
1166
 
1167
+ CallOptimization::CallOptimization(LookupResult* lookup) {
1168
+ if (!lookup->IsProperty() || !lookup->IsCacheable() ||
1169
+ lookup->type() != CONSTANT_FUNCTION) {
1170
+ Initialize(NULL);
1171
+ } else {
1172
+ // We only optimize constant function calls.
1173
+ Initialize(lookup->GetConstantFunction());
1174
+ }
1175
+ }
1176
+
1177
+ CallOptimization::CallOptimization(JSFunction* function) {
1178
+ Initialize(function);
1179
+ }
1180
+
1181
+
1182
+ int CallOptimization::GetPrototypeDepthOfExpectedType(JSObject* object,
1183
+ JSObject* holder) const {
1184
+ ASSERT(is_simple_api_call_);
1185
+ if (expected_receiver_type_ == NULL) return 0;
1186
+ int depth = 0;
1187
+ while (object != holder) {
1188
+ if (object->IsInstanceOf(expected_receiver_type_)) return depth;
1189
+ object = JSObject::cast(object->GetPrototype());
1190
+ ++depth;
1191
+ }
1192
+ if (holder->IsInstanceOf(expected_receiver_type_)) return depth;
1193
+ return kInvalidProtoDepth;
1194
+ }
1195
+
1196
+
1197
+ void CallOptimization::Initialize(JSFunction* function) {
1198
+ constant_function_ = NULL;
1199
+ is_simple_api_call_ = false;
1200
+ expected_receiver_type_ = NULL;
1201
+ api_call_info_ = NULL;
1202
+
1203
+ if (function == NULL || !function->is_compiled()) return;
1204
+
1205
+ constant_function_ = function;
1206
+ AnalyzePossibleApiFunction(function);
1207
+ }
1208
+
1209
+
1210
+ void CallOptimization::AnalyzePossibleApiFunction(JSFunction* function) {
1211
+ SharedFunctionInfo* sfi = function->shared();
1212
+ if (!sfi->IsApiFunction()) return;
1213
+ FunctionTemplateInfo* info = sfi->get_api_func_data();
1214
+
1215
+ // Require a C++ callback.
1216
+ if (info->call_code()->IsUndefined()) return;
1217
+ api_call_info_ = CallHandlerInfo::cast(info->call_code());
1218
+
1219
+ // Accept signatures that either have no restrictions at all or
1220
+ // only have restrictions on the receiver.
1221
+ if (!info->signature()->IsUndefined()) {
1222
+ SignatureInfo* signature = SignatureInfo::cast(info->signature());
1223
+ if (!signature->args()->IsUndefined()) return;
1224
+ if (!signature->receiver()->IsUndefined()) {
1225
+ expected_receiver_type_ =
1226
+ FunctionTemplateInfo::cast(signature->receiver());
1227
+ }
1228
+ }
1229
+
1230
+ is_simple_api_call_ = true;
1231
+ }
1232
+
1233
+
1108
1234
  } } // namespace v8::internal