therubyracer 0.5.0-x86-linux → 0.11.0beta5-x86-linux

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 (721) hide show
  1. data/.gitignore +23 -11
  2. data/.travis.yml +10 -0
  3. data/Changelog.md +242 -0
  4. data/Gemfile +16 -0
  5. data/README.md +185 -0
  6. data/Rakefile +42 -51
  7. data/benchmarks.rb +217 -0
  8. data/ext/v8/accessor.cc +181 -0
  9. data/ext/v8/array.cc +26 -0
  10. data/ext/v8/backref.cc +56 -0
  11. data/ext/v8/build.rb +52 -0
  12. data/ext/v8/constants.cc +34 -0
  13. data/ext/v8/constraints.cc +52 -0
  14. data/ext/v8/context.cc +130 -0
  15. data/ext/v8/date.cc +18 -0
  16. data/ext/v8/exception.cc +38 -0
  17. data/ext/v8/extconf.rb +16 -29
  18. data/ext/v8/external.cc +43 -0
  19. data/ext/v8/function.cc +58 -0
  20. data/ext/v8/gc.cc +43 -0
  21. data/ext/v8/handles.cc +34 -0
  22. data/ext/v8/heap.cc +31 -0
  23. data/ext/v8/init.cc +39 -0
  24. data/ext/v8/init.so +0 -0
  25. data/ext/v8/invocation.cc +86 -0
  26. data/ext/v8/locker.cc +77 -0
  27. data/ext/v8/message.cc +51 -0
  28. data/ext/v8/object.cc +334 -0
  29. data/ext/v8/primitive.cc +8 -0
  30. data/ext/v8/rr.cc +83 -0
  31. data/ext/v8/rr.h +883 -0
  32. data/ext/v8/script.cc +80 -0
  33. data/ext/v8/signature.cc +18 -0
  34. data/ext/v8/stack.cc +75 -0
  35. data/ext/v8/string.cc +47 -0
  36. data/ext/v8/template.cc +175 -0
  37. data/ext/v8/trycatch.cc +86 -0
  38. data/ext/v8/v8.cc +87 -0
  39. data/ext/v8/value.cc +239 -0
  40. data/lib/v8.rb +30 -9
  41. data/lib/v8/access.rb +5 -0
  42. data/lib/v8/access/indices.rb +40 -0
  43. data/lib/v8/access/invocation.rb +47 -0
  44. data/lib/v8/access/names.rb +65 -0
  45. data/lib/v8/array.rb +26 -0
  46. data/lib/v8/context.rb +217 -75
  47. data/lib/v8/conversion.rb +35 -0
  48. data/lib/v8/conversion/array.rb +11 -0
  49. data/lib/v8/conversion/class.rb +120 -0
  50. data/lib/v8/conversion/code.rb +38 -0
  51. data/lib/v8/conversion/fundamental.rb +11 -0
  52. data/lib/v8/conversion/hash.rb +11 -0
  53. data/lib/v8/conversion/indentity.rb +31 -0
  54. data/lib/v8/conversion/method.rb +26 -0
  55. data/lib/v8/conversion/object.rb +28 -0
  56. data/lib/v8/conversion/primitive.rb +7 -0
  57. data/lib/v8/conversion/proc.rb +5 -0
  58. data/lib/v8/conversion/reference.rb +16 -0
  59. data/lib/v8/conversion/string.rb +12 -0
  60. data/lib/v8/conversion/symbol.rb +7 -0
  61. data/lib/v8/conversion/time.rb +13 -0
  62. data/lib/v8/error.rb +25 -0
  63. data/lib/v8/error/protect.rb +20 -0
  64. data/lib/v8/error/try.rb +15 -0
  65. data/lib/v8/function.rb +28 -0
  66. data/lib/v8/object.rb +69 -28
  67. data/lib/v8/util/weakcell.rb +29 -0
  68. data/lib/v8/version.rb +3 -0
  69. data/spec/c/array_spec.rb +17 -0
  70. data/spec/c/constants_spec.rb +20 -0
  71. data/spec/c/exception_spec.rb +26 -0
  72. data/spec/c/external_spec.rb +9 -0
  73. data/spec/c/function_spec.rb +46 -0
  74. data/spec/c/handles_spec.rb +35 -0
  75. data/spec/c/locker_spec.rb +38 -0
  76. data/spec/c/object_spec.rb +46 -0
  77. data/spec/c/script_spec.rb +28 -0
  78. data/spec/c/string_spec.rb +16 -0
  79. data/spec/c/template_spec.rb +30 -0
  80. data/spec/c/trycatch_spec.rb +51 -0
  81. data/spec/mem/blunt_spec.rb +42 -0
  82. data/spec/redjs_spec.rb +10 -0
  83. data/spec/spec_helper.rb +43 -12
  84. data/spec/threading_spec.rb +52 -0
  85. data/spec/v8/context_spec.rb +19 -0
  86. data/spec/v8/conversion_spec.rb +9 -0
  87. data/spec/v8/error_spec.rb +21 -0
  88. data/spec/v8/function_spec.rb +9 -0
  89. data/spec/v8/object_spec.rb +15 -0
  90. data/thefrontside.png +0 -0
  91. data/therubyracer.gemspec +15 -676
  92. metadata +146 -680
  93. data/.gitmodules +0 -3
  94. data/Doxyfile +0 -1514
  95. data/History.txt +0 -51
  96. data/README.rdoc +0 -158
  97. data/docs/data_conversion.txt +0 -18
  98. data/ext/v8/callbacks.cpp +0 -160
  99. data/ext/v8/callbacks.h +0 -14
  100. data/ext/v8/convert_ruby.cpp +0 -8
  101. data/ext/v8/convert_ruby.h +0 -99
  102. data/ext/v8/convert_string.cpp +0 -10
  103. data/ext/v8/convert_string.h +0 -73
  104. data/ext/v8/convert_v8.cpp +0 -9
  105. data/ext/v8/convert_v8.h +0 -121
  106. data/ext/v8/converters.cpp +0 -83
  107. data/ext/v8/converters.h +0 -23
  108. data/ext/v8/upstream/2.0.6/.gitignore +0 -26
  109. data/ext/v8/upstream/2.0.6/AUTHORS +0 -23
  110. data/ext/v8/upstream/2.0.6/ChangeLog +0 -1479
  111. data/ext/v8/upstream/2.0.6/LICENSE +0 -55
  112. data/ext/v8/upstream/2.0.6/SConstruct +0 -1028
  113. data/ext/v8/upstream/2.0.6/include/v8-debug.h +0 -275
  114. data/ext/v8/upstream/2.0.6/include/v8.h +0 -3236
  115. data/ext/v8/upstream/2.0.6/src/SConscript +0 -283
  116. data/ext/v8/upstream/2.0.6/src/accessors.cc +0 -695
  117. data/ext/v8/upstream/2.0.6/src/accessors.h +0 -114
  118. data/ext/v8/upstream/2.0.6/src/allocation.cc +0 -198
  119. data/ext/v8/upstream/2.0.6/src/allocation.h +0 -169
  120. data/ext/v8/upstream/2.0.6/src/api.cc +0 -3831
  121. data/ext/v8/upstream/2.0.6/src/api.h +0 -479
  122. data/ext/v8/upstream/2.0.6/src/apinatives.js +0 -110
  123. data/ext/v8/upstream/2.0.6/src/apiutils.h +0 -69
  124. data/ext/v8/upstream/2.0.6/src/arguments.h +0 -97
  125. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm-inl.h +0 -277
  126. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.cc +0 -1821
  127. data/ext/v8/upstream/2.0.6/src/arm/assembler-arm.h +0 -1027
  128. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2-inl.h +0 -267
  129. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.cc +0 -1821
  130. data/ext/v8/upstream/2.0.6/src/arm/assembler-thumb2.h +0 -1027
  131. data/ext/v8/upstream/2.0.6/src/arm/builtins-arm.cc +0 -1271
  132. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm-inl.h +0 -74
  133. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.cc +0 -6682
  134. data/ext/v8/upstream/2.0.6/src/arm/codegen-arm.h +0 -535
  135. data/ext/v8/upstream/2.0.6/src/arm/constants-arm.cc +0 -112
  136. data/ext/v8/upstream/2.0.6/src/arm/constants-arm.h +0 -347
  137. data/ext/v8/upstream/2.0.6/src/arm/cpu-arm.cc +0 -132
  138. data/ext/v8/upstream/2.0.6/src/arm/debug-arm.cc +0 -213
  139. data/ext/v8/upstream/2.0.6/src/arm/disasm-arm.cc +0 -1166
  140. data/ext/v8/upstream/2.0.6/src/arm/fast-codegen-arm.cc +0 -1698
  141. data/ext/v8/upstream/2.0.6/src/arm/frames-arm.cc +0 -123
  142. data/ext/v8/upstream/2.0.6/src/arm/frames-arm.h +0 -162
  143. data/ext/v8/upstream/2.0.6/src/arm/ic-arm.cc +0 -849
  144. data/ext/v8/upstream/2.0.6/src/arm/jump-target-arm.cc +0 -238
  145. data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.cc +0 -1259
  146. data/ext/v8/upstream/2.0.6/src/arm/macro-assembler-arm.h +0 -423
  147. data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.cc +0 -1266
  148. data/ext/v8/upstream/2.0.6/src/arm/regexp-macro-assembler-arm.h +0 -282
  149. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm-inl.h +0 -103
  150. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.cc +0 -59
  151. data/ext/v8/upstream/2.0.6/src/arm/register-allocator-arm.h +0 -43
  152. data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.cc +0 -2264
  153. data/ext/v8/upstream/2.0.6/src/arm/simulator-arm.h +0 -306
  154. data/ext/v8/upstream/2.0.6/src/arm/stub-cache-arm.cc +0 -1516
  155. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.cc +0 -412
  156. data/ext/v8/upstream/2.0.6/src/arm/virtual-frame-arm.h +0 -532
  157. data/ext/v8/upstream/2.0.6/src/array.js +0 -1154
  158. data/ext/v8/upstream/2.0.6/src/assembler.cc +0 -772
  159. data/ext/v8/upstream/2.0.6/src/assembler.h +0 -525
  160. data/ext/v8/upstream/2.0.6/src/ast.cc +0 -512
  161. data/ext/v8/upstream/2.0.6/src/ast.h +0 -1820
  162. data/ext/v8/upstream/2.0.6/src/bootstrapper.cc +0 -1680
  163. data/ext/v8/upstream/2.0.6/src/bootstrapper.h +0 -103
  164. data/ext/v8/upstream/2.0.6/src/builtins.cc +0 -851
  165. data/ext/v8/upstream/2.0.6/src/builtins.h +0 -245
  166. data/ext/v8/upstream/2.0.6/src/bytecodes-irregexp.h +0 -104
  167. data/ext/v8/upstream/2.0.6/src/char-predicates-inl.h +0 -86
  168. data/ext/v8/upstream/2.0.6/src/char-predicates.h +0 -65
  169. data/ext/v8/upstream/2.0.6/src/checks.cc +0 -100
  170. data/ext/v8/upstream/2.0.6/src/checks.h +0 -284
  171. data/ext/v8/upstream/2.0.6/src/code-stubs.cc +0 -164
  172. data/ext/v8/upstream/2.0.6/src/code-stubs.h +0 -164
  173. data/ext/v8/upstream/2.0.6/src/code.h +0 -68
  174. data/ext/v8/upstream/2.0.6/src/codegen-inl.h +0 -88
  175. data/ext/v8/upstream/2.0.6/src/codegen.cc +0 -504
  176. data/ext/v8/upstream/2.0.6/src/codegen.h +0 -522
  177. data/ext/v8/upstream/2.0.6/src/compilation-cache.cc +0 -490
  178. data/ext/v8/upstream/2.0.6/src/compilation-cache.h +0 -98
  179. data/ext/v8/upstream/2.0.6/src/compiler.cc +0 -1132
  180. data/ext/v8/upstream/2.0.6/src/compiler.h +0 -107
  181. data/ext/v8/upstream/2.0.6/src/contexts.cc +0 -256
  182. data/ext/v8/upstream/2.0.6/src/contexts.h +0 -345
  183. data/ext/v8/upstream/2.0.6/src/conversions-inl.h +0 -95
  184. data/ext/v8/upstream/2.0.6/src/conversions.cc +0 -709
  185. data/ext/v8/upstream/2.0.6/src/conversions.h +0 -118
  186. data/ext/v8/upstream/2.0.6/src/counters.cc +0 -78
  187. data/ext/v8/upstream/2.0.6/src/counters.h +0 -239
  188. data/ext/v8/upstream/2.0.6/src/cpu.h +0 -65
  189. data/ext/v8/upstream/2.0.6/src/d8-debug.cc +0 -345
  190. data/ext/v8/upstream/2.0.6/src/d8-debug.h +0 -155
  191. data/ext/v8/upstream/2.0.6/src/d8-posix.cc +0 -675
  192. data/ext/v8/upstream/2.0.6/src/d8-readline.cc +0 -128
  193. data/ext/v8/upstream/2.0.6/src/d8-windows.cc +0 -42
  194. data/ext/v8/upstream/2.0.6/src/d8.cc +0 -776
  195. data/ext/v8/upstream/2.0.6/src/d8.h +0 -225
  196. data/ext/v8/upstream/2.0.6/src/d8.js +0 -1625
  197. data/ext/v8/upstream/2.0.6/src/date-delay.js +0 -1138
  198. data/ext/v8/upstream/2.0.6/src/dateparser-inl.h +0 -114
  199. data/ext/v8/upstream/2.0.6/src/dateparser.cc +0 -186
  200. data/ext/v8/upstream/2.0.6/src/dateparser.h +0 -240
  201. data/ext/v8/upstream/2.0.6/src/debug-agent.cc +0 -425
  202. data/ext/v8/upstream/2.0.6/src/debug-agent.h +0 -129
  203. data/ext/v8/upstream/2.0.6/src/debug-delay.js +0 -2073
  204. data/ext/v8/upstream/2.0.6/src/debug.cc +0 -2751
  205. data/ext/v8/upstream/2.0.6/src/debug.h +0 -866
  206. data/ext/v8/upstream/2.0.6/src/disasm.h +0 -77
  207. data/ext/v8/upstream/2.0.6/src/disassembler.cc +0 -318
  208. data/ext/v8/upstream/2.0.6/src/disassembler.h +0 -56
  209. data/ext/v8/upstream/2.0.6/src/dtoa-config.c +0 -91
  210. data/ext/v8/upstream/2.0.6/src/execution.cc +0 -701
  211. data/ext/v8/upstream/2.0.6/src/execution.h +0 -312
  212. data/ext/v8/upstream/2.0.6/src/factory.cc +0 -957
  213. data/ext/v8/upstream/2.0.6/src/factory.h +0 -393
  214. data/ext/v8/upstream/2.0.6/src/fast-codegen.cc +0 -725
  215. data/ext/v8/upstream/2.0.6/src/fast-codegen.h +0 -371
  216. data/ext/v8/upstream/2.0.6/src/flag-definitions.h +0 -426
  217. data/ext/v8/upstream/2.0.6/src/flags.cc +0 -555
  218. data/ext/v8/upstream/2.0.6/src/flags.h +0 -81
  219. data/ext/v8/upstream/2.0.6/src/frame-element.cc +0 -45
  220. data/ext/v8/upstream/2.0.6/src/frame-element.h +0 -235
  221. data/ext/v8/upstream/2.0.6/src/frames-inl.h +0 -215
  222. data/ext/v8/upstream/2.0.6/src/frames.cc +0 -749
  223. data/ext/v8/upstream/2.0.6/src/frames.h +0 -659
  224. data/ext/v8/upstream/2.0.6/src/func-name-inferrer.cc +0 -76
  225. data/ext/v8/upstream/2.0.6/src/func-name-inferrer.h +0 -135
  226. data/ext/v8/upstream/2.0.6/src/global-handles.cc +0 -516
  227. data/ext/v8/upstream/2.0.6/src/global-handles.h +0 -180
  228. data/ext/v8/upstream/2.0.6/src/globals.h +0 -608
  229. data/ext/v8/upstream/2.0.6/src/handles-inl.h +0 -76
  230. data/ext/v8/upstream/2.0.6/src/handles.cc +0 -811
  231. data/ext/v8/upstream/2.0.6/src/handles.h +0 -367
  232. data/ext/v8/upstream/2.0.6/src/hashmap.cc +0 -226
  233. data/ext/v8/upstream/2.0.6/src/hashmap.h +0 -120
  234. data/ext/v8/upstream/2.0.6/src/heap-inl.h +0 -407
  235. data/ext/v8/upstream/2.0.6/src/heap-profiler.cc +0 -695
  236. data/ext/v8/upstream/2.0.6/src/heap-profiler.h +0 -277
  237. data/ext/v8/upstream/2.0.6/src/heap.cc +0 -4204
  238. data/ext/v8/upstream/2.0.6/src/heap.h +0 -1704
  239. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32-inl.h +0 -325
  240. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.cc +0 -2375
  241. data/ext/v8/upstream/2.0.6/src/ia32/assembler-ia32.h +0 -914
  242. data/ext/v8/upstream/2.0.6/src/ia32/builtins-ia32.cc +0 -1222
  243. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32-inl.h +0 -46
  244. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.cc +0 -9770
  245. data/ext/v8/upstream/2.0.6/src/ia32/codegen-ia32.h +0 -834
  246. data/ext/v8/upstream/2.0.6/src/ia32/cpu-ia32.cc +0 -79
  247. data/ext/v8/upstream/2.0.6/src/ia32/debug-ia32.cc +0 -208
  248. data/ext/v8/upstream/2.0.6/src/ia32/disasm-ia32.cc +0 -1357
  249. data/ext/v8/upstream/2.0.6/src/ia32/fast-codegen-ia32.cc +0 -1813
  250. data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.cc +0 -111
  251. data/ext/v8/upstream/2.0.6/src/ia32/frames-ia32.h +0 -135
  252. data/ext/v8/upstream/2.0.6/src/ia32/ic-ia32.cc +0 -1490
  253. data/ext/v8/upstream/2.0.6/src/ia32/jump-target-ia32.cc +0 -432
  254. data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.cc +0 -1517
  255. data/ext/v8/upstream/2.0.6/src/ia32/macro-assembler-ia32.h +0 -528
  256. data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.cc +0 -1219
  257. data/ext/v8/upstream/2.0.6/src/ia32/regexp-macro-assembler-ia32.h +0 -230
  258. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32-inl.h +0 -82
  259. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.cc +0 -99
  260. data/ext/v8/upstream/2.0.6/src/ia32/register-allocator-ia32.h +0 -43
  261. data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.cc +0 -30
  262. data/ext/v8/upstream/2.0.6/src/ia32/simulator-ia32.h +0 -62
  263. data/ext/v8/upstream/2.0.6/src/ia32/stub-cache-ia32.cc +0 -1961
  264. data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.cc +0 -1105
  265. data/ext/v8/upstream/2.0.6/src/ia32/virtual-frame-ia32.h +0 -580
  266. data/ext/v8/upstream/2.0.6/src/ic-inl.h +0 -93
  267. data/ext/v8/upstream/2.0.6/src/ic.cc +0 -1426
  268. data/ext/v8/upstream/2.0.6/src/ic.h +0 -443
  269. data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.cc +0 -646
  270. data/ext/v8/upstream/2.0.6/src/interpreter-irregexp.h +0 -48
  271. data/ext/v8/upstream/2.0.6/src/json-delay.js +0 -254
  272. data/ext/v8/upstream/2.0.6/src/jsregexp.cc +0 -5234
  273. data/ext/v8/upstream/2.0.6/src/jsregexp.h +0 -1439
  274. data/ext/v8/upstream/2.0.6/src/jump-target-inl.h +0 -49
  275. data/ext/v8/upstream/2.0.6/src/jump-target.cc +0 -383
  276. data/ext/v8/upstream/2.0.6/src/jump-target.h +0 -280
  277. data/ext/v8/upstream/2.0.6/src/list-inl.h +0 -166
  278. data/ext/v8/upstream/2.0.6/src/list.h +0 -158
  279. data/ext/v8/upstream/2.0.6/src/log-inl.h +0 -126
  280. data/ext/v8/upstream/2.0.6/src/log-utils.cc +0 -503
  281. data/ext/v8/upstream/2.0.6/src/log-utils.h +0 -292
  282. data/ext/v8/upstream/2.0.6/src/log.cc +0 -1457
  283. data/ext/v8/upstream/2.0.6/src/log.h +0 -371
  284. data/ext/v8/upstream/2.0.6/src/macro-assembler.h +0 -93
  285. data/ext/v8/upstream/2.0.6/src/macros.py +0 -137
  286. data/ext/v8/upstream/2.0.6/src/mark-compact.cc +0 -2007
  287. data/ext/v8/upstream/2.0.6/src/mark-compact.h +0 -442
  288. data/ext/v8/upstream/2.0.6/src/math.js +0 -263
  289. data/ext/v8/upstream/2.0.6/src/memory.h +0 -74
  290. data/ext/v8/upstream/2.0.6/src/messages.cc +0 -177
  291. data/ext/v8/upstream/2.0.6/src/messages.h +0 -112
  292. data/ext/v8/upstream/2.0.6/src/messages.js +0 -937
  293. data/ext/v8/upstream/2.0.6/src/mirror-delay.js +0 -2332
  294. data/ext/v8/upstream/2.0.6/src/mksnapshot.cc +0 -169
  295. data/ext/v8/upstream/2.0.6/src/natives.h +0 -63
  296. data/ext/v8/upstream/2.0.6/src/objects-debug.cc +0 -1317
  297. data/ext/v8/upstream/2.0.6/src/objects-inl.h +0 -3044
  298. data/ext/v8/upstream/2.0.6/src/objects.cc +0 -8306
  299. data/ext/v8/upstream/2.0.6/src/objects.h +0 -4960
  300. data/ext/v8/upstream/2.0.6/src/oprofile-agent.cc +0 -116
  301. data/ext/v8/upstream/2.0.6/src/oprofile-agent.h +0 -69
  302. data/ext/v8/upstream/2.0.6/src/parser.cc +0 -4810
  303. data/ext/v8/upstream/2.0.6/src/parser.h +0 -195
  304. data/ext/v8/upstream/2.0.6/src/platform-freebsd.cc +0 -645
  305. data/ext/v8/upstream/2.0.6/src/platform-linux.cc +0 -808
  306. data/ext/v8/upstream/2.0.6/src/platform-macos.cc +0 -643
  307. data/ext/v8/upstream/2.0.6/src/platform-nullos.cc +0 -454
  308. data/ext/v8/upstream/2.0.6/src/platform-openbsd.cc +0 -597
  309. data/ext/v8/upstream/2.0.6/src/platform-posix.cc +0 -380
  310. data/ext/v8/upstream/2.0.6/src/platform-win32.cc +0 -1908
  311. data/ext/v8/upstream/2.0.6/src/platform.h +0 -556
  312. data/ext/v8/upstream/2.0.6/src/prettyprinter.cc +0 -1511
  313. data/ext/v8/upstream/2.0.6/src/prettyprinter.h +0 -219
  314. data/ext/v8/upstream/2.0.6/src/property.cc +0 -96
  315. data/ext/v8/upstream/2.0.6/src/property.h +0 -327
  316. data/ext/v8/upstream/2.0.6/src/regexp-delay.js +0 -406
  317. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp-inl.h +0 -78
  318. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.cc +0 -464
  319. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-irregexp.h +0 -141
  320. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.cc +0 -356
  321. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler-tracer.h +0 -103
  322. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.cc +0 -240
  323. data/ext/v8/upstream/2.0.6/src/regexp-macro-assembler.h +0 -220
  324. data/ext/v8/upstream/2.0.6/src/regexp-stack.cc +0 -103
  325. data/ext/v8/upstream/2.0.6/src/regexp-stack.h +0 -123
  326. data/ext/v8/upstream/2.0.6/src/register-allocator-inl.h +0 -74
  327. data/ext/v8/upstream/2.0.6/src/register-allocator.cc +0 -100
  328. data/ext/v8/upstream/2.0.6/src/register-allocator.h +0 -295
  329. data/ext/v8/upstream/2.0.6/src/rewriter.cc +0 -855
  330. data/ext/v8/upstream/2.0.6/src/rewriter.h +0 -54
  331. data/ext/v8/upstream/2.0.6/src/runtime.cc +0 -8163
  332. data/ext/v8/upstream/2.0.6/src/runtime.h +0 -432
  333. data/ext/v8/upstream/2.0.6/src/runtime.js +0 -626
  334. data/ext/v8/upstream/2.0.6/src/scanner.cc +0 -1098
  335. data/ext/v8/upstream/2.0.6/src/scanner.h +0 -425
  336. data/ext/v8/upstream/2.0.6/src/scopeinfo.cc +0 -649
  337. data/ext/v8/upstream/2.0.6/src/scopeinfo.h +0 -236
  338. data/ext/v8/upstream/2.0.6/src/scopes.cc +0 -963
  339. data/ext/v8/upstream/2.0.6/src/scopes.h +0 -401
  340. data/ext/v8/upstream/2.0.6/src/serialize.cc +0 -1260
  341. data/ext/v8/upstream/2.0.6/src/serialize.h +0 -404
  342. data/ext/v8/upstream/2.0.6/src/shell.h +0 -55
  343. data/ext/v8/upstream/2.0.6/src/simulator.h +0 -41
  344. data/ext/v8/upstream/2.0.6/src/smart-pointer.h +0 -109
  345. data/ext/v8/upstream/2.0.6/src/snapshot-common.cc +0 -97
  346. data/ext/v8/upstream/2.0.6/src/snapshot-empty.cc +0 -40
  347. data/ext/v8/upstream/2.0.6/src/snapshot.h +0 -59
  348. data/ext/v8/upstream/2.0.6/src/spaces-inl.h +0 -372
  349. data/ext/v8/upstream/2.0.6/src/spaces.cc +0 -2864
  350. data/ext/v8/upstream/2.0.6/src/spaces.h +0 -2072
  351. data/ext/v8/upstream/2.0.6/src/string-stream.cc +0 -584
  352. data/ext/v8/upstream/2.0.6/src/string-stream.h +0 -189
  353. data/ext/v8/upstream/2.0.6/src/string.js +0 -901
  354. data/ext/v8/upstream/2.0.6/src/stub-cache.cc +0 -1108
  355. data/ext/v8/upstream/2.0.6/src/stub-cache.h +0 -578
  356. data/ext/v8/upstream/2.0.6/src/third_party/dtoa/COPYING +0 -15
  357. data/ext/v8/upstream/2.0.6/src/third_party/dtoa/dtoa.c +0 -3330
  358. data/ext/v8/upstream/2.0.6/src/third_party/valgrind/valgrind.h +0 -3925
  359. data/ext/v8/upstream/2.0.6/src/token.cc +0 -56
  360. data/ext/v8/upstream/2.0.6/src/token.h +0 -270
  361. data/ext/v8/upstream/2.0.6/src/top.cc +0 -991
  362. data/ext/v8/upstream/2.0.6/src/top.h +0 -459
  363. data/ext/v8/upstream/2.0.6/src/unicode-inl.h +0 -238
  364. data/ext/v8/upstream/2.0.6/src/unicode.cc +0 -749
  365. data/ext/v8/upstream/2.0.6/src/unicode.h +0 -279
  366. data/ext/v8/upstream/2.0.6/src/uri.js +0 -415
  367. data/ext/v8/upstream/2.0.6/src/usage-analyzer.cc +0 -426
  368. data/ext/v8/upstream/2.0.6/src/usage-analyzer.h +0 -40
  369. data/ext/v8/upstream/2.0.6/src/utils.cc +0 -322
  370. data/ext/v8/upstream/2.0.6/src/utils.h +0 -592
  371. data/ext/v8/upstream/2.0.6/src/v8-counters.cc +0 -55
  372. data/ext/v8/upstream/2.0.6/src/v8-counters.h +0 -198
  373. data/ext/v8/upstream/2.0.6/src/v8.cc +0 -193
  374. data/ext/v8/upstream/2.0.6/src/v8.h +0 -119
  375. data/ext/v8/upstream/2.0.6/src/v8natives.js +0 -846
  376. data/ext/v8/upstream/2.0.6/src/v8threads.cc +0 -450
  377. data/ext/v8/upstream/2.0.6/src/v8threads.h +0 -144
  378. data/ext/v8/upstream/2.0.6/src/variables.cc +0 -163
  379. data/ext/v8/upstream/2.0.6/src/variables.h +0 -235
  380. data/ext/v8/upstream/2.0.6/src/version.cc +0 -88
  381. data/ext/v8/upstream/2.0.6/src/version.h +0 -64
  382. data/ext/v8/upstream/2.0.6/src/virtual-frame.cc +0 -381
  383. data/ext/v8/upstream/2.0.6/src/virtual-frame.h +0 -44
  384. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64-inl.h +0 -352
  385. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.cc +0 -2539
  386. data/ext/v8/upstream/2.0.6/src/x64/assembler-x64.h +0 -1399
  387. data/ext/v8/upstream/2.0.6/src/x64/builtins-x64.cc +0 -1255
  388. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64-inl.h +0 -46
  389. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.cc +0 -8223
  390. data/ext/v8/upstream/2.0.6/src/x64/codegen-x64.h +0 -785
  391. data/ext/v8/upstream/2.0.6/src/x64/cpu-x64.cc +0 -79
  392. data/ext/v8/upstream/2.0.6/src/x64/debug-x64.cc +0 -202
  393. data/ext/v8/upstream/2.0.6/src/x64/disasm-x64.cc +0 -1596
  394. data/ext/v8/upstream/2.0.6/src/x64/fast-codegen-x64.cc +0 -1820
  395. data/ext/v8/upstream/2.0.6/src/x64/frames-x64.cc +0 -109
  396. data/ext/v8/upstream/2.0.6/src/x64/frames-x64.h +0 -121
  397. data/ext/v8/upstream/2.0.6/src/x64/ic-x64.cc +0 -1392
  398. data/ext/v8/upstream/2.0.6/src/x64/jump-target-x64.cc +0 -432
  399. data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.cc +0 -2409
  400. data/ext/v8/upstream/2.0.6/src/x64/macro-assembler-x64.h +0 -765
  401. data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.cc +0 -1337
  402. data/ext/v8/upstream/2.0.6/src/x64/regexp-macro-assembler-x64.h +0 -295
  403. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64-inl.h +0 -86
  404. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.cc +0 -84
  405. data/ext/v8/upstream/2.0.6/src/x64/register-allocator-x64.h +0 -43
  406. data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.cc +0 -27
  407. data/ext/v8/upstream/2.0.6/src/x64/simulator-x64.h +0 -63
  408. data/ext/v8/upstream/2.0.6/src/x64/stub-cache-x64.cc +0 -1884
  409. data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.cc +0 -1089
  410. data/ext/v8/upstream/2.0.6/src/x64/virtual-frame-x64.h +0 -560
  411. data/ext/v8/upstream/2.0.6/src/zone-inl.h +0 -297
  412. data/ext/v8/upstream/2.0.6/src/zone.cc +0 -193
  413. data/ext/v8/upstream/2.0.6/src/zone.h +0 -305
  414. data/ext/v8/upstream/2.0.6/tools/codemap.js +0 -258
  415. data/ext/v8/upstream/2.0.6/tools/consarray.js +0 -93
  416. data/ext/v8/upstream/2.0.6/tools/csvparser.js +0 -98
  417. data/ext/v8/upstream/2.0.6/tools/gyp/v8.gyp +0 -620
  418. data/ext/v8/upstream/2.0.6/tools/js2c.py +0 -376
  419. data/ext/v8/upstream/2.0.6/tools/jsmin.py +0 -280
  420. data/ext/v8/upstream/2.0.6/tools/linux-tick-processor +0 -24
  421. data/ext/v8/upstream/2.0.6/tools/linux-tick-processor.py +0 -78
  422. data/ext/v8/upstream/2.0.6/tools/logreader.js +0 -320
  423. data/ext/v8/upstream/2.0.6/tools/mac-nm +0 -18
  424. data/ext/v8/upstream/2.0.6/tools/mac-tick-processor +0 -6
  425. data/ext/v8/upstream/2.0.6/tools/oprofile/annotate +0 -7
  426. data/ext/v8/upstream/2.0.6/tools/oprofile/common +0 -19
  427. data/ext/v8/upstream/2.0.6/tools/oprofile/dump +0 -7
  428. data/ext/v8/upstream/2.0.6/tools/oprofile/report +0 -7
  429. data/ext/v8/upstream/2.0.6/tools/oprofile/reset +0 -7
  430. data/ext/v8/upstream/2.0.6/tools/oprofile/run +0 -14
  431. data/ext/v8/upstream/2.0.6/tools/oprofile/shutdown +0 -7
  432. data/ext/v8/upstream/2.0.6/tools/oprofile/start +0 -7
  433. data/ext/v8/upstream/2.0.6/tools/presubmit.py +0 -299
  434. data/ext/v8/upstream/2.0.6/tools/process-heap-prof.py +0 -120
  435. data/ext/v8/upstream/2.0.6/tools/profile.js +0 -621
  436. data/ext/v8/upstream/2.0.6/tools/profile_view.js +0 -224
  437. data/ext/v8/upstream/2.0.6/tools/run-valgrind.py +0 -77
  438. data/ext/v8/upstream/2.0.6/tools/splaytree.js +0 -322
  439. data/ext/v8/upstream/2.0.6/tools/splaytree.py +0 -226
  440. data/ext/v8/upstream/2.0.6/tools/stats-viewer.py +0 -456
  441. data/ext/v8/upstream/2.0.6/tools/test.py +0 -1370
  442. data/ext/v8/upstream/2.0.6/tools/tickprocessor-driver.js +0 -53
  443. data/ext/v8/upstream/2.0.6/tools/tickprocessor.js +0 -731
  444. data/ext/v8/upstream/2.0.6/tools/tickprocessor.py +0 -535
  445. data/ext/v8/upstream/2.0.6/tools/utils.py +0 -82
  446. data/ext/v8/upstream/2.0.6/tools/visual_studio/README.txt +0 -71
  447. data/ext/v8/upstream/2.0.6/tools/visual_studio/arm.vsprops +0 -14
  448. data/ext/v8/upstream/2.0.6/tools/visual_studio/common.vsprops +0 -35
  449. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8.vcproj +0 -199
  450. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_arm.vcproj +0 -199
  451. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8_x64.vcproj +0 -201
  452. data/ext/v8/upstream/2.0.6/tools/visual_studio/d8js2c.cmd +0 -6
  453. data/ext/v8/upstream/2.0.6/tools/visual_studio/debug.vsprops +0 -17
  454. data/ext/v8/upstream/2.0.6/tools/visual_studio/ia32.vsprops +0 -13
  455. data/ext/v8/upstream/2.0.6/tools/visual_studio/js2c.cmd +0 -6
  456. data/ext/v8/upstream/2.0.6/tools/visual_studio/release.vsprops +0 -24
  457. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.sln +0 -101
  458. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8.vcproj +0 -223
  459. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.sln +0 -74
  460. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_arm.vcproj +0 -223
  461. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base.vcproj +0 -971
  462. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_arm.vcproj +0 -983
  463. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_base_x64.vcproj +0 -959
  464. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest.vcproj +0 -255
  465. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_arm.vcproj +0 -243
  466. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_cctest_x64.vcproj +0 -257
  467. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot.vcproj +0 -151
  468. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_mksnapshot_x64.vcproj +0 -151
  469. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample.vcproj +0 -151
  470. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_arm.vcproj +0 -151
  471. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_process_sample_x64.vcproj +0 -151
  472. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample.vcproj +0 -151
  473. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_arm.vcproj +0 -151
  474. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_shell_sample_x64.vcproj +0 -153
  475. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot.vcproj +0 -142
  476. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc.vcproj +0 -92
  477. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_cc_x64.vcproj +0 -92
  478. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_snapshot_x64.vcproj +0 -142
  479. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.sln +0 -101
  480. data/ext/v8/upstream/2.0.6/tools/visual_studio/v8_x64.vcproj +0 -223
  481. data/ext/v8/upstream/2.0.6/tools/visual_studio/x64.vsprops +0 -13
  482. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.bat +0 -5
  483. data/ext/v8/upstream/2.0.6/tools/windows-tick-processor.py +0 -137
  484. data/ext/v8/upstream/Makefile +0 -32
  485. data/ext/v8/upstream/fpic-on-linux-amd64.patch +0 -13
  486. data/ext/v8/upstream/no-strict-aliasing.patch +0 -13
  487. data/ext/v8/upstream/scons/CHANGES.txt +0 -5183
  488. data/ext/v8/upstream/scons/LICENSE.txt +0 -20
  489. data/ext/v8/upstream/scons/MANIFEST +0 -202
  490. data/ext/v8/upstream/scons/PKG-INFO +0 -13
  491. data/ext/v8/upstream/scons/README.txt +0 -273
  492. data/ext/v8/upstream/scons/RELEASE.txt +0 -1040
  493. data/ext/v8/upstream/scons/engine/SCons/Action.py +0 -1256
  494. data/ext/v8/upstream/scons/engine/SCons/Builder.py +0 -868
  495. data/ext/v8/upstream/scons/engine/SCons/CacheDir.py +0 -217
  496. data/ext/v8/upstream/scons/engine/SCons/Conftest.py +0 -794
  497. data/ext/v8/upstream/scons/engine/SCons/Debug.py +0 -237
  498. data/ext/v8/upstream/scons/engine/SCons/Defaults.py +0 -485
  499. data/ext/v8/upstream/scons/engine/SCons/Environment.py +0 -2327
  500. data/ext/v8/upstream/scons/engine/SCons/Errors.py +0 -207
  501. data/ext/v8/upstream/scons/engine/SCons/Executor.py +0 -636
  502. data/ext/v8/upstream/scons/engine/SCons/Job.py +0 -435
  503. data/ext/v8/upstream/scons/engine/SCons/Memoize.py +0 -292
  504. data/ext/v8/upstream/scons/engine/SCons/Node/Alias.py +0 -153
  505. data/ext/v8/upstream/scons/engine/SCons/Node/FS.py +0 -3220
  506. data/ext/v8/upstream/scons/engine/SCons/Node/Python.py +0 -128
  507. data/ext/v8/upstream/scons/engine/SCons/Node/__init__.py +0 -1341
  508. data/ext/v8/upstream/scons/engine/SCons/Options/BoolOption.py +0 -50
  509. data/ext/v8/upstream/scons/engine/SCons/Options/EnumOption.py +0 -50
  510. data/ext/v8/upstream/scons/engine/SCons/Options/ListOption.py +0 -50
  511. data/ext/v8/upstream/scons/engine/SCons/Options/PackageOption.py +0 -50
  512. data/ext/v8/upstream/scons/engine/SCons/Options/PathOption.py +0 -76
  513. data/ext/v8/upstream/scons/engine/SCons/Options/__init__.py +0 -74
  514. data/ext/v8/upstream/scons/engine/SCons/PathList.py +0 -232
  515. data/ext/v8/upstream/scons/engine/SCons/Platform/__init__.py +0 -236
  516. data/ext/v8/upstream/scons/engine/SCons/Platform/aix.py +0 -70
  517. data/ext/v8/upstream/scons/engine/SCons/Platform/cygwin.py +0 -55
  518. data/ext/v8/upstream/scons/engine/SCons/Platform/darwin.py +0 -46
  519. data/ext/v8/upstream/scons/engine/SCons/Platform/hpux.py +0 -46
  520. data/ext/v8/upstream/scons/engine/SCons/Platform/irix.py +0 -44
  521. data/ext/v8/upstream/scons/engine/SCons/Platform/os2.py +0 -58
  522. data/ext/v8/upstream/scons/engine/SCons/Platform/posix.py +0 -264
  523. data/ext/v8/upstream/scons/engine/SCons/Platform/sunos.py +0 -50
  524. data/ext/v8/upstream/scons/engine/SCons/Platform/win32.py +0 -386
  525. data/ext/v8/upstream/scons/engine/SCons/SConf.py +0 -1038
  526. data/ext/v8/upstream/scons/engine/SCons/SConsign.py +0 -381
  527. data/ext/v8/upstream/scons/engine/SCons/Scanner/C.py +0 -132
  528. data/ext/v8/upstream/scons/engine/SCons/Scanner/D.py +0 -74
  529. data/ext/v8/upstream/scons/engine/SCons/Scanner/Dir.py +0 -111
  530. data/ext/v8/upstream/scons/engine/SCons/Scanner/Fortran.py +0 -320
  531. data/ext/v8/upstream/scons/engine/SCons/Scanner/IDL.py +0 -48
  532. data/ext/v8/upstream/scons/engine/SCons/Scanner/LaTeX.py +0 -378
  533. data/ext/v8/upstream/scons/engine/SCons/Scanner/Prog.py +0 -103
  534. data/ext/v8/upstream/scons/engine/SCons/Scanner/RC.py +0 -55
  535. data/ext/v8/upstream/scons/engine/SCons/Scanner/__init__.py +0 -415
  536. data/ext/v8/upstream/scons/engine/SCons/Script/Interactive.py +0 -386
  537. data/ext/v8/upstream/scons/engine/SCons/Script/Main.py +0 -1360
  538. data/ext/v8/upstream/scons/engine/SCons/Script/SConsOptions.py +0 -944
  539. data/ext/v8/upstream/scons/engine/SCons/Script/SConscript.py +0 -642
  540. data/ext/v8/upstream/scons/engine/SCons/Script/__init__.py +0 -414
  541. data/ext/v8/upstream/scons/engine/SCons/Sig.py +0 -63
  542. data/ext/v8/upstream/scons/engine/SCons/Subst.py +0 -911
  543. data/ext/v8/upstream/scons/engine/SCons/Taskmaster.py +0 -1030
  544. data/ext/v8/upstream/scons/engine/SCons/Tool/386asm.py +0 -61
  545. data/ext/v8/upstream/scons/engine/SCons/Tool/BitKeeper.py +0 -65
  546. data/ext/v8/upstream/scons/engine/SCons/Tool/CVS.py +0 -73
  547. data/ext/v8/upstream/scons/engine/SCons/Tool/FortranCommon.py +0 -247
  548. data/ext/v8/upstream/scons/engine/SCons/Tool/JavaCommon.py +0 -324
  549. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/__init__.py +0 -56
  550. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/arch.py +0 -61
  551. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/common.py +0 -210
  552. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/netframework.py +0 -84
  553. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/sdk.py +0 -321
  554. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vc.py +0 -367
  555. data/ext/v8/upstream/scons/engine/SCons/Tool/MSCommon/vs.py +0 -497
  556. data/ext/v8/upstream/scons/engine/SCons/Tool/Perforce.py +0 -104
  557. data/ext/v8/upstream/scons/engine/SCons/Tool/PharLapCommon.py +0 -138
  558. data/ext/v8/upstream/scons/engine/SCons/Tool/RCS.py +0 -64
  559. data/ext/v8/upstream/scons/engine/SCons/Tool/SCCS.py +0 -64
  560. data/ext/v8/upstream/scons/engine/SCons/Tool/Subversion.py +0 -71
  561. data/ext/v8/upstream/scons/engine/SCons/Tool/__init__.py +0 -675
  562. data/ext/v8/upstream/scons/engine/SCons/Tool/aixc++.py +0 -82
  563. data/ext/v8/upstream/scons/engine/SCons/Tool/aixcc.py +0 -74
  564. data/ext/v8/upstream/scons/engine/SCons/Tool/aixf77.py +0 -80
  565. data/ext/v8/upstream/scons/engine/SCons/Tool/aixlink.py +0 -76
  566. data/ext/v8/upstream/scons/engine/SCons/Tool/applelink.py +0 -71
  567. data/ext/v8/upstream/scons/engine/SCons/Tool/ar.py +0 -63
  568. data/ext/v8/upstream/scons/engine/SCons/Tool/as.py +0 -78
  569. data/ext/v8/upstream/scons/engine/SCons/Tool/bcc32.py +0 -82
  570. data/ext/v8/upstream/scons/engine/SCons/Tool/c++.py +0 -99
  571. data/ext/v8/upstream/scons/engine/SCons/Tool/cc.py +0 -114
  572. data/ext/v8/upstream/scons/engine/SCons/Tool/cvf.py +0 -58
  573. data/ext/v8/upstream/scons/engine/SCons/Tool/default.py +0 -50
  574. data/ext/v8/upstream/scons/engine/SCons/Tool/dmd.py +0 -224
  575. data/ext/v8/upstream/scons/engine/SCons/Tool/dvi.py +0 -64
  576. data/ext/v8/upstream/scons/engine/SCons/Tool/dvipdf.py +0 -125
  577. data/ext/v8/upstream/scons/engine/SCons/Tool/dvips.py +0 -94
  578. data/ext/v8/upstream/scons/engine/SCons/Tool/f77.py +0 -62
  579. data/ext/v8/upstream/scons/engine/SCons/Tool/f90.py +0 -62
  580. data/ext/v8/upstream/scons/engine/SCons/Tool/f95.py +0 -63
  581. data/ext/v8/upstream/scons/engine/SCons/Tool/filesystem.py +0 -98
  582. data/ext/v8/upstream/scons/engine/SCons/Tool/fortran.py +0 -63
  583. data/ext/v8/upstream/scons/engine/SCons/Tool/g++.py +0 -90
  584. data/ext/v8/upstream/scons/engine/SCons/Tool/g77.py +0 -73
  585. data/ext/v8/upstream/scons/engine/SCons/Tool/gas.py +0 -53
  586. data/ext/v8/upstream/scons/engine/SCons/Tool/gcc.py +0 -80
  587. data/ext/v8/upstream/scons/engine/SCons/Tool/gfortran.py +0 -64
  588. data/ext/v8/upstream/scons/engine/SCons/Tool/gnulink.py +0 -63
  589. data/ext/v8/upstream/scons/engine/SCons/Tool/gs.py +0 -81
  590. data/ext/v8/upstream/scons/engine/SCons/Tool/hpc++.py +0 -85
  591. data/ext/v8/upstream/scons/engine/SCons/Tool/hpcc.py +0 -53
  592. data/ext/v8/upstream/scons/engine/SCons/Tool/hplink.py +0 -77
  593. data/ext/v8/upstream/scons/engine/SCons/Tool/icc.py +0 -59
  594. data/ext/v8/upstream/scons/engine/SCons/Tool/icl.py +0 -52
  595. data/ext/v8/upstream/scons/engine/SCons/Tool/ifl.py +0 -72
  596. data/ext/v8/upstream/scons/engine/SCons/Tool/ifort.py +0 -90
  597. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink.py +0 -59
  598. data/ext/v8/upstream/scons/engine/SCons/Tool/ilink32.py +0 -60
  599. data/ext/v8/upstream/scons/engine/SCons/Tool/install.py +0 -229
  600. data/ext/v8/upstream/scons/engine/SCons/Tool/intelc.py +0 -490
  601. data/ext/v8/upstream/scons/engine/SCons/Tool/ipkg.py +0 -71
  602. data/ext/v8/upstream/scons/engine/SCons/Tool/jar.py +0 -110
  603. data/ext/v8/upstream/scons/engine/SCons/Tool/javac.py +0 -234
  604. data/ext/v8/upstream/scons/engine/SCons/Tool/javah.py +0 -138
  605. data/ext/v8/upstream/scons/engine/SCons/Tool/latex.py +0 -79
  606. data/ext/v8/upstream/scons/engine/SCons/Tool/lex.py +0 -99
  607. data/ext/v8/upstream/scons/engine/SCons/Tool/link.py +0 -121
  608. data/ext/v8/upstream/scons/engine/SCons/Tool/linkloc.py +0 -112
  609. data/ext/v8/upstream/scons/engine/SCons/Tool/m4.py +0 -63
  610. data/ext/v8/upstream/scons/engine/SCons/Tool/masm.py +0 -77
  611. data/ext/v8/upstream/scons/engine/SCons/Tool/midl.py +0 -90
  612. data/ext/v8/upstream/scons/engine/SCons/Tool/mingw.py +0 -159
  613. data/ext/v8/upstream/scons/engine/SCons/Tool/mslib.py +0 -64
  614. data/ext/v8/upstream/scons/engine/SCons/Tool/mslink.py +0 -266
  615. data/ext/v8/upstream/scons/engine/SCons/Tool/mssdk.py +0 -50
  616. data/ext/v8/upstream/scons/engine/SCons/Tool/msvc.py +0 -269
  617. data/ext/v8/upstream/scons/engine/SCons/Tool/msvs.py +0 -1439
  618. data/ext/v8/upstream/scons/engine/SCons/Tool/mwcc.py +0 -208
  619. data/ext/v8/upstream/scons/engine/SCons/Tool/mwld.py +0 -107
  620. data/ext/v8/upstream/scons/engine/SCons/Tool/nasm.py +0 -72
  621. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/__init__.py +0 -314
  622. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/ipk.py +0 -185
  623. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/msi.py +0 -526
  624. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/rpm.py +0 -367
  625. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_tarbz2.py +0 -43
  626. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_targz.py +0 -43
  627. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/src_zip.py +0 -43
  628. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/tarbz2.py +0 -44
  629. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/targz.py +0 -44
  630. data/ext/v8/upstream/scons/engine/SCons/Tool/packaging/zip.py +0 -44
  631. data/ext/v8/upstream/scons/engine/SCons/Tool/pdf.py +0 -78
  632. data/ext/v8/upstream/scons/engine/SCons/Tool/pdflatex.py +0 -83
  633. data/ext/v8/upstream/scons/engine/SCons/Tool/pdftex.py +0 -108
  634. data/ext/v8/upstream/scons/engine/SCons/Tool/qt.py +0 -336
  635. data/ext/v8/upstream/scons/engine/SCons/Tool/rmic.py +0 -121
  636. data/ext/v8/upstream/scons/engine/SCons/Tool/rpcgen.py +0 -70
  637. data/ext/v8/upstream/scons/engine/SCons/Tool/rpm.py +0 -132
  638. data/ext/v8/upstream/scons/engine/SCons/Tool/sgiar.py +0 -68
  639. data/ext/v8/upstream/scons/engine/SCons/Tool/sgic++.py +0 -58
  640. data/ext/v8/upstream/scons/engine/SCons/Tool/sgicc.py +0 -53
  641. data/ext/v8/upstream/scons/engine/SCons/Tool/sgilink.py +0 -63
  642. data/ext/v8/upstream/scons/engine/SCons/Tool/sunar.py +0 -67
  643. data/ext/v8/upstream/scons/engine/SCons/Tool/sunc++.py +0 -142
  644. data/ext/v8/upstream/scons/engine/SCons/Tool/suncc.py +0 -58
  645. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf77.py +0 -63
  646. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf90.py +0 -64
  647. data/ext/v8/upstream/scons/engine/SCons/Tool/sunf95.py +0 -64
  648. data/ext/v8/upstream/scons/engine/SCons/Tool/sunlink.py +0 -77
  649. data/ext/v8/upstream/scons/engine/SCons/Tool/swig.py +0 -186
  650. data/ext/v8/upstream/scons/engine/SCons/Tool/tar.py +0 -73
  651. data/ext/v8/upstream/scons/engine/SCons/Tool/tex.py +0 -805
  652. data/ext/v8/upstream/scons/engine/SCons/Tool/textfile.py +0 -175
  653. data/ext/v8/upstream/scons/engine/SCons/Tool/tlib.py +0 -53
  654. data/ext/v8/upstream/scons/engine/SCons/Tool/wix.py +0 -100
  655. data/ext/v8/upstream/scons/engine/SCons/Tool/yacc.py +0 -131
  656. data/ext/v8/upstream/scons/engine/SCons/Tool/zip.py +0 -100
  657. data/ext/v8/upstream/scons/engine/SCons/Util.py +0 -1645
  658. data/ext/v8/upstream/scons/engine/SCons/Variables/BoolVariable.py +0 -91
  659. data/ext/v8/upstream/scons/engine/SCons/Variables/EnumVariable.py +0 -107
  660. data/ext/v8/upstream/scons/engine/SCons/Variables/ListVariable.py +0 -139
  661. data/ext/v8/upstream/scons/engine/SCons/Variables/PackageVariable.py +0 -109
  662. data/ext/v8/upstream/scons/engine/SCons/Variables/PathVariable.py +0 -147
  663. data/ext/v8/upstream/scons/engine/SCons/Variables/__init__.py +0 -317
  664. data/ext/v8/upstream/scons/engine/SCons/Warnings.py +0 -228
  665. data/ext/v8/upstream/scons/engine/SCons/__init__.py +0 -49
  666. data/ext/v8/upstream/scons/engine/SCons/compat/__init__.py +0 -302
  667. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_UserString.py +0 -98
  668. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_hashlib.py +0 -91
  669. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_itertools.py +0 -124
  670. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_optparse.py +0 -1725
  671. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets.py +0 -583
  672. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_sets15.py +0 -176
  673. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_shlex.py +0 -325
  674. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_subprocess.py +0 -1296
  675. data/ext/v8/upstream/scons/engine/SCons/compat/_scons_textwrap.py +0 -382
  676. data/ext/v8/upstream/scons/engine/SCons/compat/builtins.py +0 -187
  677. data/ext/v8/upstream/scons/engine/SCons/cpp.py +0 -598
  678. data/ext/v8/upstream/scons/engine/SCons/dblite.py +0 -248
  679. data/ext/v8/upstream/scons/engine/SCons/exitfuncs.py +0 -77
  680. data/ext/v8/upstream/scons/os_spawnv_fix.diff +0 -83
  681. data/ext/v8/upstream/scons/scons-time.1 +0 -1017
  682. data/ext/v8/upstream/scons/scons.1 +0 -15179
  683. data/ext/v8/upstream/scons/sconsign.1 +0 -208
  684. data/ext/v8/upstream/scons/script/scons +0 -184
  685. data/ext/v8/upstream/scons/script/scons-time +0 -1529
  686. data/ext/v8/upstream/scons/script/scons.bat +0 -31
  687. data/ext/v8/upstream/scons/script/sconsign +0 -508
  688. data/ext/v8/upstream/scons/setup.cfg +0 -6
  689. data/ext/v8/upstream/scons/setup.py +0 -427
  690. data/ext/v8/v8.cpp +0 -89
  691. data/ext/v8/v8_cxt.cpp +0 -92
  692. data/ext/v8/v8_cxt.h +0 -20
  693. data/ext/v8/v8_func.cpp +0 -10
  694. data/ext/v8/v8_func.h +0 -11
  695. data/ext/v8/v8_msg.cpp +0 -54
  696. data/ext/v8/v8_msg.h +0 -18
  697. data/ext/v8/v8_obj.cpp +0 -52
  698. data/ext/v8/v8_obj.h +0 -13
  699. data/ext/v8/v8_ref.cpp +0 -26
  700. data/ext/v8/v8_ref.h +0 -31
  701. data/ext/v8/v8_script.cpp +0 -20
  702. data/ext/v8/v8_script.h +0 -8
  703. data/ext/v8/v8_standalone.cpp +0 -69
  704. data/ext/v8/v8_standalone.h +0 -31
  705. data/ext/v8/v8_str.cpp +0 -17
  706. data/ext/v8/v8_str.h +0 -9
  707. data/ext/v8/v8_template.cpp +0 -53
  708. data/ext/v8/v8_template.h +0 -13
  709. data/lib/v8/to.rb +0 -33
  710. data/lib/v8/v8.so +0 -0
  711. data/script/console +0 -10
  712. data/script/destroy +0 -14
  713. data/script/generate +0 -14
  714. data/spec/ext/cxt_spec.rb +0 -25
  715. data/spec/ext/obj_spec.rb +0 -13
  716. data/spec/redjs/jsapi_spec.rb +0 -405
  717. data/spec/redjs/tap.rb +0 -8
  718. data/spec/redjs_helper.rb +0 -3
  719. data/spec/spec.opts +0 -1
  720. data/spec/v8/to_spec.rb +0 -15
  721. data/tasks/rspec.rake +0 -21
@@ -1,1027 +0,0 @@
1
- // Copyright (c) 1994-2006 Sun Microsystems Inc.
2
- // All Rights Reserved.
3
- //
4
- // Redistribution and use in source and binary forms, with or without
5
- // modification, are permitted provided that the following conditions
6
- // are met:
7
- //
8
- // - Redistributions of source code must retain the above copyright notice,
9
- // this list of conditions and the following disclaimer.
10
- //
11
- // - Redistribution in binary form must reproduce the above copyright
12
- // notice, this list of conditions and the following disclaimer in the
13
- // documentation and/or other materials provided with the
14
- // distribution.
15
- //
16
- // - Neither the name of Sun Microsystems or the names of contributors may
17
- // be used to endorse or promote products derived from this software without
18
- // specific prior written permission.
19
- //
20
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
- // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
- // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
- // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
- // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
29
- // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
- // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
31
- // OF THE POSSIBILITY OF SUCH DAMAGE.
32
-
33
- // The original source code covered by the above license above has been modified
34
- // significantly by Google Inc.
35
- // Copyright 2006-2008 the V8 project authors. All rights reserved.
36
-
37
- // A light-weight ARM Assembler
38
- // Generates user mode instructions for the ARM architecture up to version 5
39
-
40
- #ifndef V8_ARM_ASSEMBLER_THUMB2_H_
41
- #define V8_ARM_ASSEMBLER_THUMB2_H_
42
- #include <stdio.h>
43
- #include "assembler.h"
44
- #include "serialize.h"
45
-
46
- namespace v8 {
47
- namespace internal {
48
-
49
- // CPU Registers.
50
- //
51
- // 1) We would prefer to use an enum, but enum values are assignment-
52
- // compatible with int, which has caused code-generation bugs.
53
- //
54
- // 2) We would prefer to use a class instead of a struct but we don't like
55
- // the register initialization to depend on the particular initialization
56
- // order (which appears to be different on OS X, Linux, and Windows for the
57
- // installed versions of C++ we tried). Using a struct permits C-style
58
- // "initialization". Also, the Register objects cannot be const as this
59
- // forces initialization stubs in MSVC, making us dependent on initialization
60
- // order.
61
- //
62
- // 3) By not using an enum, we are possibly preventing the compiler from
63
- // doing certain constant folds, which may significantly reduce the
64
- // code generated for some assembly instructions (because they boil down
65
- // to a few constants). If this is a problem, we could change the code
66
- // such that we use an enum in optimized mode, and the struct in debug
67
- // mode. This way we get the compile-time error checking in debug mode
68
- // and best performance in optimized code.
69
- //
70
- // Core register
71
- struct Register {
72
- bool is_valid() const { return 0 <= code_ && code_ < 16; }
73
- bool is(Register reg) const { return code_ == reg.code_; }
74
- int code() const {
75
- ASSERT(is_valid());
76
- return code_;
77
- }
78
- int bit() const {
79
- ASSERT(is_valid());
80
- return 1 << code_;
81
- }
82
-
83
- // (unfortunately we can't make this private in a struct)
84
- int code_;
85
- };
86
-
87
-
88
- extern Register no_reg;
89
- extern Register r0;
90
- extern Register r1;
91
- extern Register r2;
92
- extern Register r3;
93
- extern Register r4;
94
- extern Register r5;
95
- extern Register r6;
96
- extern Register r7;
97
- extern Register r8;
98
- extern Register r9;
99
- extern Register r10;
100
- extern Register fp;
101
- extern Register ip;
102
- extern Register sp;
103
- extern Register lr;
104
- extern Register pc;
105
-
106
-
107
- // Single word VFP register.
108
- struct SwVfpRegister {
109
- bool is_valid() const { return 0 <= code_ && code_ < 32; }
110
- bool is(SwVfpRegister reg) const { return code_ == reg.code_; }
111
- int code() const {
112
- ASSERT(is_valid());
113
- return code_;
114
- }
115
- int bit() const {
116
- ASSERT(is_valid());
117
- return 1 << code_;
118
- }
119
-
120
- int code_;
121
- };
122
-
123
-
124
- // Double word VFP register.
125
- struct DwVfpRegister {
126
- // Supporting d0 to d15, can be later extended to d31.
127
- bool is_valid() const { return 0 <= code_ && code_ < 16; }
128
- bool is(DwVfpRegister reg) const { return code_ == reg.code_; }
129
- int code() const {
130
- ASSERT(is_valid());
131
- return code_;
132
- }
133
- int bit() const {
134
- ASSERT(is_valid());
135
- return 1 << code_;
136
- }
137
-
138
- int code_;
139
- };
140
-
141
-
142
- // Support for VFP registers s0 to s31 (d0 to d15).
143
- // Note that "s(N):s(N+1)" is the same as "d(N/2)".
144
- extern SwVfpRegister s0;
145
- extern SwVfpRegister s1;
146
- extern SwVfpRegister s2;
147
- extern SwVfpRegister s3;
148
- extern SwVfpRegister s4;
149
- extern SwVfpRegister s5;
150
- extern SwVfpRegister s6;
151
- extern SwVfpRegister s7;
152
- extern SwVfpRegister s8;
153
- extern SwVfpRegister s9;
154
- extern SwVfpRegister s10;
155
- extern SwVfpRegister s11;
156
- extern SwVfpRegister s12;
157
- extern SwVfpRegister s13;
158
- extern SwVfpRegister s14;
159
- extern SwVfpRegister s15;
160
- extern SwVfpRegister s16;
161
- extern SwVfpRegister s17;
162
- extern SwVfpRegister s18;
163
- extern SwVfpRegister s19;
164
- extern SwVfpRegister s20;
165
- extern SwVfpRegister s21;
166
- extern SwVfpRegister s22;
167
- extern SwVfpRegister s23;
168
- extern SwVfpRegister s24;
169
- extern SwVfpRegister s25;
170
- extern SwVfpRegister s26;
171
- extern SwVfpRegister s27;
172
- extern SwVfpRegister s28;
173
- extern SwVfpRegister s29;
174
- extern SwVfpRegister s30;
175
- extern SwVfpRegister s31;
176
-
177
- extern DwVfpRegister d0;
178
- extern DwVfpRegister d1;
179
- extern DwVfpRegister d2;
180
- extern DwVfpRegister d3;
181
- extern DwVfpRegister d4;
182
- extern DwVfpRegister d5;
183
- extern DwVfpRegister d6;
184
- extern DwVfpRegister d7;
185
- extern DwVfpRegister d8;
186
- extern DwVfpRegister d9;
187
- extern DwVfpRegister d10;
188
- extern DwVfpRegister d11;
189
- extern DwVfpRegister d12;
190
- extern DwVfpRegister d13;
191
- extern DwVfpRegister d14;
192
- extern DwVfpRegister d15;
193
-
194
-
195
- // Coprocessor register
196
- struct CRegister {
197
- bool is_valid() const { return 0 <= code_ && code_ < 16; }
198
- bool is(CRegister creg) const { return code_ == creg.code_; }
199
- int code() const {
200
- ASSERT(is_valid());
201
- return code_;
202
- }
203
- int bit() const {
204
- ASSERT(is_valid());
205
- return 1 << code_;
206
- }
207
-
208
- // (unfortunately we can't make this private in a struct)
209
- int code_;
210
- };
211
-
212
-
213
- extern CRegister no_creg;
214
- extern CRegister cr0;
215
- extern CRegister cr1;
216
- extern CRegister cr2;
217
- extern CRegister cr3;
218
- extern CRegister cr4;
219
- extern CRegister cr5;
220
- extern CRegister cr6;
221
- extern CRegister cr7;
222
- extern CRegister cr8;
223
- extern CRegister cr9;
224
- extern CRegister cr10;
225
- extern CRegister cr11;
226
- extern CRegister cr12;
227
- extern CRegister cr13;
228
- extern CRegister cr14;
229
- extern CRegister cr15;
230
-
231
-
232
- // Coprocessor number
233
- enum Coprocessor {
234
- p0 = 0,
235
- p1 = 1,
236
- p2 = 2,
237
- p3 = 3,
238
- p4 = 4,
239
- p5 = 5,
240
- p6 = 6,
241
- p7 = 7,
242
- p8 = 8,
243
- p9 = 9,
244
- p10 = 10,
245
- p11 = 11,
246
- p12 = 12,
247
- p13 = 13,
248
- p14 = 14,
249
- p15 = 15
250
- };
251
-
252
-
253
- // Condition field in instructions
254
- enum Condition {
255
- eq = 0 << 28, // Z set equal.
256
- ne = 1 << 28, // Z clear not equal.
257
- nz = 1 << 28, // Z clear not zero.
258
- cs = 2 << 28, // C set carry set.
259
- hs = 2 << 28, // C set unsigned higher or same.
260
- cc = 3 << 28, // C clear carry clear.
261
- lo = 3 << 28, // C clear unsigned lower.
262
- mi = 4 << 28, // N set negative.
263
- pl = 5 << 28, // N clear positive or zero.
264
- vs = 6 << 28, // V set overflow.
265
- vc = 7 << 28, // V clear no overflow.
266
- hi = 8 << 28, // C set, Z clear unsigned higher.
267
- ls = 9 << 28, // C clear or Z set unsigned lower or same.
268
- ge = 10 << 28, // N == V greater or equal.
269
- lt = 11 << 28, // N != V less than.
270
- gt = 12 << 28, // Z clear, N == V greater than.
271
- le = 13 << 28, // Z set or N != V less then or equal
272
- al = 14 << 28 // always.
273
- };
274
-
275
-
276
- // Returns the equivalent of !cc.
277
- INLINE(Condition NegateCondition(Condition cc));
278
-
279
-
280
- // Corresponds to transposing the operands of a comparison.
281
- inline Condition ReverseCondition(Condition cc) {
282
- switch (cc) {
283
- case lo:
284
- return hi;
285
- case hi:
286
- return lo;
287
- case hs:
288
- return ls;
289
- case ls:
290
- return hs;
291
- case lt:
292
- return gt;
293
- case gt:
294
- return lt;
295
- case ge:
296
- return le;
297
- case le:
298
- return ge;
299
- default:
300
- return cc;
301
- };
302
- }
303
-
304
-
305
- // Branch hints are not used on the ARM. They are defined so that they can
306
- // appear in shared function signatures, but will be ignored in ARM
307
- // implementations.
308
- enum Hint { no_hint };
309
-
310
- // Hints are not used on the arm. Negating is trivial.
311
- inline Hint NegateHint(Hint ignored) { return no_hint; }
312
-
313
-
314
- // -----------------------------------------------------------------------------
315
- // Addressing modes and instruction variants
316
-
317
- // Shifter operand shift operation
318
- enum ShiftOp {
319
- LSL = 0 << 5,
320
- LSR = 1 << 5,
321
- ASR = 2 << 5,
322
- ROR = 3 << 5,
323
- RRX = -1
324
- };
325
-
326
-
327
- // Condition code updating mode
328
- enum SBit {
329
- SetCC = 1 << 20, // set condition code
330
- LeaveCC = 0 << 20 // leave condition code unchanged
331
- };
332
-
333
-
334
- // Status register selection
335
- enum SRegister {
336
- CPSR = 0 << 22,
337
- SPSR = 1 << 22
338
- };
339
-
340
-
341
- // Status register fields
342
- enum SRegisterField {
343
- CPSR_c = CPSR | 1 << 16,
344
- CPSR_x = CPSR | 1 << 17,
345
- CPSR_s = CPSR | 1 << 18,
346
- CPSR_f = CPSR | 1 << 19,
347
- SPSR_c = SPSR | 1 << 16,
348
- SPSR_x = SPSR | 1 << 17,
349
- SPSR_s = SPSR | 1 << 18,
350
- SPSR_f = SPSR | 1 << 19
351
- };
352
-
353
- // Status register field mask (or'ed SRegisterField enum values)
354
- typedef uint32_t SRegisterFieldMask;
355
-
356
-
357
- // Memory operand addressing mode
358
- enum AddrMode {
359
- // bit encoding P U W
360
- Offset = (8|4|0) << 21, // offset (without writeback to base)
361
- PreIndex = (8|4|1) << 21, // pre-indexed addressing with writeback
362
- PostIndex = (0|4|0) << 21, // post-indexed addressing with writeback
363
- NegOffset = (8|0|0) << 21, // negative offset (without writeback to base)
364
- NegPreIndex = (8|0|1) << 21, // negative pre-indexed with writeback
365
- NegPostIndex = (0|0|0) << 21 // negative post-indexed with writeback
366
- };
367
-
368
-
369
- // Load/store multiple addressing mode
370
- enum BlockAddrMode {
371
- // bit encoding P U W
372
- da = (0|0|0) << 21, // decrement after
373
- ia = (0|4|0) << 21, // increment after
374
- db = (8|0|0) << 21, // decrement before
375
- ib = (8|4|0) << 21, // increment before
376
- da_w = (0|0|1) << 21, // decrement after with writeback to base
377
- ia_w = (0|4|1) << 21, // increment after with writeback to base
378
- db_w = (8|0|1) << 21, // decrement before with writeback to base
379
- ib_w = (8|4|1) << 21 // increment before with writeback to base
380
- };
381
-
382
-
383
- // Coprocessor load/store operand size
384
- enum LFlag {
385
- Long = 1 << 22, // long load/store coprocessor
386
- Short = 0 << 22 // short load/store coprocessor
387
- };
388
-
389
-
390
- // -----------------------------------------------------------------------------
391
- // Machine instruction Operands
392
-
393
- // Class Operand represents a shifter operand in data processing instructions
394
- class Operand BASE_EMBEDDED {
395
- public:
396
- // immediate
397
- INLINE(explicit Operand(int32_t immediate,
398
- RelocInfo::Mode rmode = RelocInfo::NONE));
399
- INLINE(explicit Operand(const ExternalReference& f));
400
- INLINE(explicit Operand(const char* s));
401
- INLINE(explicit Operand(Object** opp));
402
- INLINE(explicit Operand(Context** cpp));
403
- explicit Operand(Handle<Object> handle);
404
- INLINE(explicit Operand(Smi* value));
405
-
406
- // rm
407
- INLINE(explicit Operand(Register rm));
408
-
409
- // rm <shift_op> shift_imm
410
- explicit Operand(Register rm, ShiftOp shift_op, int shift_imm);
411
-
412
- // rm <shift_op> rs
413
- explicit Operand(Register rm, ShiftOp shift_op, Register rs);
414
-
415
- // Return true if this is a register operand.
416
- INLINE(bool is_reg() const);
417
-
418
- Register rm() const { return rm_; }
419
-
420
- private:
421
- Register rm_;
422
- Register rs_;
423
- ShiftOp shift_op_;
424
- int shift_imm_; // valid if rm_ != no_reg && rs_ == no_reg
425
- int32_t imm32_; // valid if rm_ == no_reg
426
- RelocInfo::Mode rmode_;
427
-
428
- friend class Assembler;
429
- };
430
-
431
-
432
- // Class MemOperand represents a memory operand in load and store instructions
433
- class MemOperand BASE_EMBEDDED {
434
- public:
435
- // [rn +/- offset] Offset/NegOffset
436
- // [rn +/- offset]! PreIndex/NegPreIndex
437
- // [rn], +/- offset PostIndex/NegPostIndex
438
- // offset is any signed 32-bit value; offset is first loaded to register ip if
439
- // it does not fit the addressing mode (12-bit unsigned and sign bit)
440
- explicit MemOperand(Register rn, int32_t offset = 0, AddrMode am = Offset);
441
-
442
- // [rn +/- rm] Offset/NegOffset
443
- // [rn +/- rm]! PreIndex/NegPreIndex
444
- // [rn], +/- rm PostIndex/NegPostIndex
445
- explicit MemOperand(Register rn, Register rm, AddrMode am = Offset);
446
-
447
- // [rn +/- rm <shift_op> shift_imm] Offset/NegOffset
448
- // [rn +/- rm <shift_op> shift_imm]! PreIndex/NegPreIndex
449
- // [rn], +/- rm <shift_op> shift_imm PostIndex/NegPostIndex
450
- explicit MemOperand(Register rn, Register rm,
451
- ShiftOp shift_op, int shift_imm, AddrMode am = Offset);
452
-
453
- private:
454
- Register rn_; // base
455
- Register rm_; // register offset
456
- int32_t offset_; // valid if rm_ == no_reg
457
- ShiftOp shift_op_;
458
- int shift_imm_; // valid if rm_ != no_reg && rs_ == no_reg
459
- AddrMode am_; // bits P, U, and W
460
-
461
- friend class Assembler;
462
- };
463
-
464
- // CpuFeatures keeps track of which features are supported by the target CPU.
465
- // Supported features must be enabled by a Scope before use.
466
- class CpuFeatures : public AllStatic {
467
- public:
468
- // Detect features of the target CPU. Set safe defaults if the serializer
469
- // is enabled (snapshots must be portable).
470
- static void Probe();
471
-
472
- // Check whether a feature is supported by the target CPU.
473
- static bool IsSupported(CpuFeature f) {
474
- if (f == VFP3 && !FLAG_enable_vfp3) return false;
475
- return (supported_ & (1u << f)) != 0;
476
- }
477
-
478
- // Check whether a feature is currently enabled.
479
- static bool IsEnabled(CpuFeature f) {
480
- return (enabled_ & (1u << f)) != 0;
481
- }
482
-
483
- // Enable a specified feature within a scope.
484
- class Scope BASE_EMBEDDED {
485
- #ifdef DEBUG
486
- public:
487
- explicit Scope(CpuFeature f) {
488
- ASSERT(CpuFeatures::IsSupported(f));
489
- ASSERT(!Serializer::enabled() ||
490
- (found_by_runtime_probing_ & (1u << f)) == 0);
491
- old_enabled_ = CpuFeatures::enabled_;
492
- CpuFeatures::enabled_ |= 1u << f;
493
- }
494
- ~Scope() { CpuFeatures::enabled_ = old_enabled_; }
495
- private:
496
- unsigned old_enabled_;
497
- #else
498
- public:
499
- explicit Scope(CpuFeature f) {}
500
- #endif
501
- };
502
-
503
- private:
504
- static unsigned supported_;
505
- static unsigned enabled_;
506
- static unsigned found_by_runtime_probing_;
507
- };
508
-
509
-
510
- typedef int32_t Instr;
511
-
512
-
513
- extern const Instr kMovLrPc;
514
- extern const Instr kLdrPCPattern;
515
-
516
-
517
- class Assembler : public Malloced {
518
- public:
519
- // Create an assembler. Instructions and relocation information are emitted
520
- // into a buffer, with the instructions starting from the beginning and the
521
- // relocation information starting from the end of the buffer. See CodeDesc
522
- // for a detailed comment on the layout (globals.h).
523
- //
524
- // If the provided buffer is NULL, the assembler allocates and grows its own
525
- // buffer, and buffer_size determines the initial buffer size. The buffer is
526
- // owned by the assembler and deallocated upon destruction of the assembler.
527
- //
528
- // If the provided buffer is not NULL, the assembler uses the provided buffer
529
- // for code generation and assumes its size to be buffer_size. If the buffer
530
- // is too small, a fatal error occurs. No deallocation of the buffer is done
531
- // upon destruction of the assembler.
532
- Assembler(void* buffer, int buffer_size);
533
- ~Assembler();
534
-
535
- // GetCode emits any pending (non-emitted) code and fills the descriptor
536
- // desc. GetCode() is idempotent; it returns the same result if no other
537
- // Assembler functions are invoked in between GetCode() calls.
538
- void GetCode(CodeDesc* desc);
539
-
540
- // Label operations & relative jumps (PPUM Appendix D)
541
- //
542
- // Takes a branch opcode (cc) and a label (L) and generates
543
- // either a backward branch or a forward branch and links it
544
- // to the label fixup chain. Usage:
545
- //
546
- // Label L; // unbound label
547
- // j(cc, &L); // forward branch to unbound label
548
- // bind(&L); // bind label to the current pc
549
- // j(cc, &L); // backward branch to bound label
550
- // bind(&L); // illegal: a label may be bound only once
551
- //
552
- // Note: The same Label can be used for forward and backward branches
553
- // but it may be bound only once.
554
-
555
- void bind(Label* L); // binds an unbound label L to the current code position
556
-
557
- // Returns the branch offset to the given label from the current code position
558
- // Links the label to the current position if it is still unbound
559
- // Manages the jump elimination optimization if the second parameter is true.
560
- int branch_offset(Label* L, bool jump_elimination_allowed);
561
-
562
- // Puts a labels target address at the given position.
563
- // The high 8 bits are set to zero.
564
- void label_at_put(Label* L, int at_offset);
565
-
566
- // Return the address in the constant pool of the code target address used by
567
- // the branch/call instruction at pc.
568
- INLINE(static Address target_address_address_at(Address pc));
569
-
570
- // Read/Modify the code target address in the branch/call instruction at pc.
571
- INLINE(static Address target_address_at(Address pc));
572
- INLINE(static void set_target_address_at(Address pc, Address target));
573
-
574
- // This sets the branch destination (which is in the constant pool on ARM).
575
- // This is for calls and branches within generated code.
576
- inline static void set_target_at(Address constant_pool_entry, Address target);
577
-
578
- // This sets the branch destination (which is in the constant pool on ARM).
579
- // This is for calls and branches to runtime code.
580
- inline static void set_external_target_at(Address constant_pool_entry,
581
- Address target) {
582
- set_target_at(constant_pool_entry, target);
583
- }
584
-
585
- // Here we are patching the address in the constant pool, not the actual call
586
- // instruction. The address in the constant pool is the same size as a
587
- // pointer.
588
- static const int kCallTargetSize = kPointerSize;
589
- static const int kExternalTargetSize = kPointerSize;
590
-
591
- // Size of an instruction.
592
- static const int kInstrSize = sizeof(Instr);
593
-
594
- // Distance between the instruction referring to the address of the call
595
- // target (ldr pc, [target addr in const pool]) and the return address
596
- static const int kCallTargetAddressOffset = kInstrSize;
597
-
598
- // Distance between start of patched return sequence and the emitted address
599
- // to jump to.
600
- static const int kPatchReturnSequenceAddressOffset = kInstrSize;
601
-
602
- // Difference between address of current opcode and value read from pc
603
- // register.
604
- static const int kPcLoadDelta = 8;
605
-
606
- static const int kJSReturnSequenceLength = 4;
607
-
608
- // ---------------------------------------------------------------------------
609
- // Code generation
610
-
611
- // Insert the smallest number of nop instructions
612
- // possible to align the pc offset to a multiple
613
- // of m. m must be a power of 2 (>= 4).
614
- void Align(int m);
615
-
616
- // Branch instructions
617
- void b(int branch_offset, Condition cond = al);
618
- void bl(int branch_offset, Condition cond = al);
619
- void blx(int branch_offset); // v5 and above
620
- void blx(Register target, Condition cond = al); // v5 and above
621
- void bx(Register target, Condition cond = al); // v5 and above, plus v4t
622
-
623
- // Convenience branch instructions using labels
624
- void b(Label* L, Condition cond = al) {
625
- b(branch_offset(L, cond == al), cond);
626
- }
627
- void b(Condition cond, Label* L) { b(branch_offset(L, cond == al), cond); }
628
- void bl(Label* L, Condition cond = al) { bl(branch_offset(L, false), cond); }
629
- void bl(Condition cond, Label* L) { bl(branch_offset(L, false), cond); }
630
- void blx(Label* L) { blx(branch_offset(L, false)); } // v5 and above
631
-
632
- // Data-processing instructions
633
- void and_(Register dst, Register src1, const Operand& src2,
634
- SBit s = LeaveCC, Condition cond = al);
635
-
636
- void eor(Register dst, Register src1, const Operand& src2,
637
- SBit s = LeaveCC, Condition cond = al);
638
-
639
- void sub(Register dst, Register src1, const Operand& src2,
640
- SBit s = LeaveCC, Condition cond = al);
641
- void sub(Register dst, Register src1, Register src2,
642
- SBit s = LeaveCC, Condition cond = al) {
643
- sub(dst, src1, Operand(src2), s, cond);
644
- }
645
-
646
- void rsb(Register dst, Register src1, const Operand& src2,
647
- SBit s = LeaveCC, Condition cond = al);
648
-
649
- void add(Register dst, Register src1, const Operand& src2,
650
- SBit s = LeaveCC, Condition cond = al);
651
-
652
- void adc(Register dst, Register src1, const Operand& src2,
653
- SBit s = LeaveCC, Condition cond = al);
654
-
655
- void sbc(Register dst, Register src1, const Operand& src2,
656
- SBit s = LeaveCC, Condition cond = al);
657
-
658
- void rsc(Register dst, Register src1, const Operand& src2,
659
- SBit s = LeaveCC, Condition cond = al);
660
-
661
- void tst(Register src1, const Operand& src2, Condition cond = al);
662
- void tst(Register src1, Register src2, Condition cond = al) {
663
- tst(src1, Operand(src2), cond);
664
- }
665
-
666
- void teq(Register src1, const Operand& src2, Condition cond = al);
667
-
668
- void cmp(Register src1, const Operand& src2, Condition cond = al);
669
- void cmp(Register src1, Register src2, Condition cond = al) {
670
- cmp(src1, Operand(src2), cond);
671
- }
672
-
673
- void cmn(Register src1, const Operand& src2, Condition cond = al);
674
-
675
- void orr(Register dst, Register src1, const Operand& src2,
676
- SBit s = LeaveCC, Condition cond = al);
677
- void orr(Register dst, Register src1, Register src2,
678
- SBit s = LeaveCC, Condition cond = al) {
679
- orr(dst, src1, Operand(src2), s, cond);
680
- }
681
-
682
- void mov(Register dst, const Operand& src,
683
- SBit s = LeaveCC, Condition cond = al);
684
- void mov(Register dst, Register src, SBit s = LeaveCC, Condition cond = al) {
685
- mov(dst, Operand(src), s, cond);
686
- }
687
-
688
- void bic(Register dst, Register src1, const Operand& src2,
689
- SBit s = LeaveCC, Condition cond = al);
690
-
691
- void mvn(Register dst, const Operand& src,
692
- SBit s = LeaveCC, Condition cond = al);
693
-
694
- // Multiply instructions
695
-
696
- void mla(Register dst, Register src1, Register src2, Register srcA,
697
- SBit s = LeaveCC, Condition cond = al);
698
-
699
- void mul(Register dst, Register src1, Register src2,
700
- SBit s = LeaveCC, Condition cond = al);
701
-
702
- void smlal(Register dstL, Register dstH, Register src1, Register src2,
703
- SBit s = LeaveCC, Condition cond = al);
704
-
705
- void smull(Register dstL, Register dstH, Register src1, Register src2,
706
- SBit s = LeaveCC, Condition cond = al);
707
-
708
- void umlal(Register dstL, Register dstH, Register src1, Register src2,
709
- SBit s = LeaveCC, Condition cond = al);
710
-
711
- void umull(Register dstL, Register dstH, Register src1, Register src2,
712
- SBit s = LeaveCC, Condition cond = al);
713
-
714
- // Miscellaneous arithmetic instructions
715
-
716
- void clz(Register dst, Register src, Condition cond = al); // v5 and above
717
-
718
- // Status register access instructions
719
-
720
- void mrs(Register dst, SRegister s, Condition cond = al);
721
- void msr(SRegisterFieldMask fields, const Operand& src, Condition cond = al);
722
-
723
- // Load/Store instructions
724
- void ldr(Register dst, const MemOperand& src, Condition cond = al);
725
- void str(Register src, const MemOperand& dst, Condition cond = al);
726
- void ldrb(Register dst, const MemOperand& src, Condition cond = al);
727
- void strb(Register src, const MemOperand& dst, Condition cond = al);
728
- void ldrh(Register dst, const MemOperand& src, Condition cond = al);
729
- void strh(Register src, const MemOperand& dst, Condition cond = al);
730
- void ldrsb(Register dst, const MemOperand& src, Condition cond = al);
731
- void ldrsh(Register dst, const MemOperand& src, Condition cond = al);
732
-
733
- // Load/Store multiple instructions
734
- void ldm(BlockAddrMode am, Register base, RegList dst, Condition cond = al);
735
- void stm(BlockAddrMode am, Register base, RegList src, Condition cond = al);
736
-
737
- // Semaphore instructions
738
- void swp(Register dst, Register src, Register base, Condition cond = al);
739
- void swpb(Register dst, Register src, Register base, Condition cond = al);
740
-
741
- // Exception-generating instructions and debugging support
742
- void stop(const char* msg);
743
-
744
- void bkpt(uint32_t imm16); // v5 and above
745
- void swi(uint32_t imm24, Condition cond = al);
746
-
747
- // Coprocessor instructions
748
-
749
- void cdp(Coprocessor coproc, int opcode_1,
750
- CRegister crd, CRegister crn, CRegister crm,
751
- int opcode_2, Condition cond = al);
752
-
753
- void cdp2(Coprocessor coproc, int opcode_1,
754
- CRegister crd, CRegister crn, CRegister crm,
755
- int opcode_2); // v5 and above
756
-
757
- void mcr(Coprocessor coproc, int opcode_1,
758
- Register rd, CRegister crn, CRegister crm,
759
- int opcode_2 = 0, Condition cond = al);
760
-
761
- void mcr2(Coprocessor coproc, int opcode_1,
762
- Register rd, CRegister crn, CRegister crm,
763
- int opcode_2 = 0); // v5 and above
764
-
765
- void mrc(Coprocessor coproc, int opcode_1,
766
- Register rd, CRegister crn, CRegister crm,
767
- int opcode_2 = 0, Condition cond = al);
768
-
769
- void mrc2(Coprocessor coproc, int opcode_1,
770
- Register rd, CRegister crn, CRegister crm,
771
- int opcode_2 = 0); // v5 and above
772
-
773
- void ldc(Coprocessor coproc, CRegister crd, const MemOperand& src,
774
- LFlag l = Short, Condition cond = al);
775
- void ldc(Coprocessor coproc, CRegister crd, Register base, int option,
776
- LFlag l = Short, Condition cond = al);
777
-
778
- void ldc2(Coprocessor coproc, CRegister crd, const MemOperand& src,
779
- LFlag l = Short); // v5 and above
780
- void ldc2(Coprocessor coproc, CRegister crd, Register base, int option,
781
- LFlag l = Short); // v5 and above
782
-
783
- void stc(Coprocessor coproc, CRegister crd, const MemOperand& dst,
784
- LFlag l = Short, Condition cond = al);
785
- void stc(Coprocessor coproc, CRegister crd, Register base, int option,
786
- LFlag l = Short, Condition cond = al);
787
-
788
- void stc2(Coprocessor coproc, CRegister crd, const MemOperand& dst,
789
- LFlag l = Short); // v5 and above
790
- void stc2(Coprocessor coproc, CRegister crd, Register base, int option,
791
- LFlag l = Short); // v5 and above
792
-
793
- // Support for VFP.
794
- // All these APIs support S0 to S31 and D0 to D15.
795
- // Currently these APIs do not support extended D registers, i.e, D16 to D31.
796
- // However, some simple modifications can allow
797
- // these APIs to support D16 to D31.
798
-
799
- void vmov(const DwVfpRegister dst,
800
- const Register src1,
801
- const Register src2,
802
- const Condition cond = al);
803
- void vmov(const Register dst1,
804
- const Register dst2,
805
- const DwVfpRegister src,
806
- const Condition cond = al);
807
- void vmov(const SwVfpRegister dst,
808
- const Register src,
809
- const Condition cond = al);
810
- void vmov(const Register dst,
811
- const SwVfpRegister src,
812
- const Condition cond = al);
813
- void vcvt(const DwVfpRegister dst,
814
- const SwVfpRegister src,
815
- const Condition cond = al);
816
- void vcvt(const SwVfpRegister dst,
817
- const DwVfpRegister src,
818
- const Condition cond = al);
819
-
820
- void vadd(const DwVfpRegister dst,
821
- const DwVfpRegister src1,
822
- const DwVfpRegister src2,
823
- const Condition cond = al);
824
- void vsub(const DwVfpRegister dst,
825
- const DwVfpRegister src1,
826
- const DwVfpRegister src2,
827
- const Condition cond = al);
828
- void vmul(const DwVfpRegister dst,
829
- const DwVfpRegister src1,
830
- const DwVfpRegister src2,
831
- const Condition cond = al);
832
- void vdiv(const DwVfpRegister dst,
833
- const DwVfpRegister src1,
834
- const DwVfpRegister src2,
835
- const Condition cond = al);
836
- void vcmp(const DwVfpRegister src1,
837
- const DwVfpRegister src2,
838
- const SBit s = LeaveCC,
839
- const Condition cond = al);
840
- void vmrs(const Register dst,
841
- const Condition cond = al);
842
-
843
- // Pseudo instructions
844
- void nop() { mov(r0, Operand(r0)); }
845
-
846
- void push(Register src, Condition cond = al) {
847
- str(src, MemOperand(sp, 4, NegPreIndex), cond);
848
- }
849
-
850
- void pop(Register dst, Condition cond = al) {
851
- ldr(dst, MemOperand(sp, 4, PostIndex), cond);
852
- }
853
-
854
- void pop() {
855
- add(sp, sp, Operand(kPointerSize));
856
- }
857
-
858
- // Load effective address of memory operand x into register dst
859
- void lea(Register dst, const MemOperand& x,
860
- SBit s = LeaveCC, Condition cond = al);
861
-
862
- // Jump unconditionally to given label.
863
- void jmp(Label* L) { b(L, al); }
864
-
865
- // Check the code size generated from label to here.
866
- int InstructionsGeneratedSince(Label* l) {
867
- return (pc_offset() - l->pos()) / kInstrSize;
868
- }
869
-
870
- // Check whether an immediate fits an addressing mode 1 instruction.
871
- bool ImmediateFitsAddrMode1Instruction(int32_t imm32);
872
-
873
- // Postpone the generation of the constant pool for the specified number of
874
- // instructions.
875
- void BlockConstPoolFor(int instructions);
876
-
877
- // Debugging
878
-
879
- // Mark address of the ExitJSFrame code.
880
- void RecordJSReturn();
881
-
882
- // Record a comment relocation entry that can be used by a disassembler.
883
- // Use --debug_code to enable.
884
- void RecordComment(const char* msg);
885
-
886
- void RecordPosition(int pos);
887
- void RecordStatementPosition(int pos);
888
- void WriteRecordedPositions();
889
-
890
- int pc_offset() const { return pc_ - buffer_; }
891
- int current_position() const { return current_position_; }
892
- int current_statement_position() const { return current_position_; }
893
-
894
- protected:
895
- int buffer_space() const { return reloc_info_writer.pos() - pc_; }
896
-
897
- // Read/patch instructions
898
- static Instr instr_at(byte* pc) { return *reinterpret_cast<Instr*>(pc); }
899
- void instr_at_put(byte* pc, Instr instr) {
900
- *reinterpret_cast<Instr*>(pc) = instr;
901
- }
902
- Instr instr_at(int pos) { return *reinterpret_cast<Instr*>(buffer_ + pos); }
903
- void instr_at_put(int pos, Instr instr) {
904
- *reinterpret_cast<Instr*>(buffer_ + pos) = instr;
905
- }
906
-
907
- // Decode branch instruction at pos and return branch target pos
908
- int target_at(int pos);
909
-
910
- // Patch branch instruction at pos to branch to given branch target pos
911
- void target_at_put(int pos, int target_pos);
912
-
913
- // Check if is time to emit a constant pool for pending reloc info entries
914
- void CheckConstPool(bool force_emit, bool require_jump);
915
-
916
- // Block the emission of the constant pool before pc_offset
917
- void BlockConstPoolBefore(int pc_offset) {
918
- if (no_const_pool_before_ < pc_offset) no_const_pool_before_ = pc_offset;
919
- }
920
-
921
- private:
922
- // Code buffer:
923
- // The buffer into which code and relocation info are generated.
924
- byte* buffer_;
925
- int buffer_size_;
926
- // True if the assembler owns the buffer, false if buffer is external.
927
- bool own_buffer_;
928
-
929
- // Buffer size and constant pool distance are checked together at regular
930
- // intervals of kBufferCheckInterval emitted bytes
931
- static const int kBufferCheckInterval = 1*KB/2;
932
- int next_buffer_check_; // pc offset of next buffer check
933
-
934
- // Code generation
935
- // The relocation writer's position is at least kGap bytes below the end of
936
- // the generated instructions. This is so that multi-instruction sequences do
937
- // not have to check for overflow. The same is true for writes of large
938
- // relocation info entries.
939
- static const int kGap = 32;
940
- byte* pc_; // the program counter; moves forward
941
-
942
- // Constant pool generation
943
- // Pools are emitted in the instruction stream, preferably after unconditional
944
- // jumps or after returns from functions (in dead code locations).
945
- // If a long code sequence does not contain unconditional jumps, it is
946
- // necessary to emit the constant pool before the pool gets too far from the
947
- // location it is accessed from. In this case, we emit a jump over the emitted
948
- // constant pool.
949
- // Constants in the pool may be addresses of functions that gets relocated;
950
- // if so, a relocation info entry is associated to the constant pool entry.
951
-
952
- // Repeated checking whether the constant pool should be emitted is rather
953
- // expensive. By default we only check again once a number of instructions
954
- // has been generated. That also means that the sizing of the buffers is not
955
- // an exact science, and that we rely on some slop to not overrun buffers.
956
- static const int kCheckConstIntervalInst = 32;
957
- static const int kCheckConstInterval = kCheckConstIntervalInst * kInstrSize;
958
-
959
-
960
- // Pools are emitted after function return and in dead code at (more or less)
961
- // regular intervals of kDistBetweenPools bytes
962
- static const int kDistBetweenPools = 1*KB;
963
-
964
- // Constants in pools are accessed via pc relative addressing, which can
965
- // reach +/-4KB thereby defining a maximum distance between the instruction
966
- // and the accessed constant. We satisfy this constraint by limiting the
967
- // distance between pools.
968
- static const int kMaxDistBetweenPools = 4*KB - 2*kBufferCheckInterval;
969
-
970
- // Emission of the constant pool may be blocked in some code sequences
971
- int no_const_pool_before_; // block emission before this pc offset
972
-
973
- // Keep track of the last emitted pool to guarantee a maximal distance
974
- int last_const_pool_end_; // pc offset following the last constant pool
975
-
976
- // Relocation info generation
977
- // Each relocation is encoded as a variable size value
978
- static const int kMaxRelocSize = RelocInfoWriter::kMaxSize;
979
- RelocInfoWriter reloc_info_writer;
980
- // Relocation info records are also used during code generation as temporary
981
- // containers for constants and code target addresses until they are emitted
982
- // to the constant pool. These pending relocation info records are temporarily
983
- // stored in a separate buffer until a constant pool is emitted.
984
- // If every instruction in a long sequence is accessing the pool, we need one
985
- // pending relocation entry per instruction.
986
- static const int kMaxNumPRInfo = kMaxDistBetweenPools/kInstrSize;
987
- RelocInfo prinfo_[kMaxNumPRInfo]; // the buffer of pending relocation info
988
- int num_prinfo_; // number of pending reloc info entries in the buffer
989
-
990
- // The bound position, before this we cannot do instruction elimination.
991
- int last_bound_pos_;
992
-
993
- // source position information
994
- int current_position_;
995
- int current_statement_position_;
996
- int written_position_;
997
- int written_statement_position_;
998
-
999
- // Code emission
1000
- inline void CheckBuffer();
1001
- void GrowBuffer();
1002
- inline void emit(Instr x);
1003
-
1004
- // Instruction generation
1005
- void addrmod1(Instr instr, Register rn, Register rd, const Operand& x);
1006
- void addrmod2(Instr instr, Register rd, const MemOperand& x);
1007
- void addrmod3(Instr instr, Register rd, const MemOperand& x);
1008
- void addrmod4(Instr instr, Register rn, RegList rl);
1009
- void addrmod5(Instr instr, CRegister crd, const MemOperand& x);
1010
-
1011
- // Labels
1012
- void print(Label* L);
1013
- void bind_to(Label* L, int pos);
1014
- void link_to(Label* L, Label* appendix);
1015
- void next(Label* L);
1016
-
1017
- // Record reloc info for current pc_
1018
- void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0);
1019
-
1020
- friend class RegExpMacroAssemblerARM;
1021
- friend class RelocInfo;
1022
- friend class CodePatcher;
1023
- };
1024
-
1025
- } } // namespace v8::internal
1026
-
1027
- #endif // V8_ARM_ASSEMBLER_THUMB2_H_