@nxtedition/rocksdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/UPGRADING.md +91 -0
  5. package/binding.cc +1276 -0
  6. package/binding.gyp +73 -0
  7. package/binding.js +1 -0
  8. package/chained-batch.js +44 -0
  9. package/deps/rocksdb/build_version.cc +4 -0
  10. package/deps/rocksdb/rocksdb/CMakeLists.txt +1356 -0
  11. package/deps/rocksdb/rocksdb/COPYING +339 -0
  12. package/deps/rocksdb/rocksdb/LICENSE.Apache +202 -0
  13. package/deps/rocksdb/rocksdb/LICENSE.leveldb +29 -0
  14. package/deps/rocksdb/rocksdb/Makefile +2521 -0
  15. package/deps/rocksdb/rocksdb/TARGETS +2100 -0
  16. package/deps/rocksdb/rocksdb/cache/cache.cc +63 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +381 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +114 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_test.cc +775 -0
  20. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +769 -0
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.h +16 -0
  22. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +574 -0
  23. package/deps/rocksdb/rocksdb/cache/lru_cache.h +339 -0
  24. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +199 -0
  25. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +162 -0
  26. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +111 -0
  27. package/deps/rocksdb/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  28. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  29. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  30. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  37. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +108 -0
  38. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +115 -0
  39. package/deps/rocksdb/rocksdb/db/blob/blob_constants.h +16 -0
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +154 -0
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.h +67 -0
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +206 -0
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +316 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +91 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +660 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +99 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +49 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +268 -0
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.h +57 -0
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +173 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +55 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +164 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +423 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +81 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +771 -0
  57. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +184 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.cc +145 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +148 -0
  60. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +132 -0
  61. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +76 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +168 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +83 -0
  64. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +307 -0
  65. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +464 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +358 -0
  67. package/deps/rocksdb/rocksdb/db/builder.h +95 -0
  68. package/deps/rocksdb/rocksdb/db/c.cc +5281 -0
  69. package/deps/rocksdb/rocksdb/db/c_test.c +2883 -0
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +1602 -0
  71. package/deps/rocksdb/rocksdb/db/column_family.h +787 -0
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +3427 -0
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +425 -0
  74. package/deps/rocksdb/rocksdb/db/compacted_db_impl.cc +169 -0
  75. package/deps/rocksdb/rocksdb/db/compacted_db_impl.h +118 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +591 -0
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +389 -0
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +37 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +1023 -0
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +353 -0
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1254 -0
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1917 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +208 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +1037 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +1224 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1135 -0
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +318 -0
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +255 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +57 -0
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +510 -0
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +2190 -0
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1103 -0
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +32 -0
  95. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +44 -0
  96. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +660 -0
  97. package/deps/rocksdb/rocksdb/db/convenience.cc +78 -0
  98. package/deps/rocksdb/rocksdb/db/corruption_test.cc +921 -0
  99. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +359 -0
  100. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3820 -0
  101. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1058 -0
  102. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2128 -0
  103. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +851 -0
  104. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +6292 -0
  105. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +509 -0
  106. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +130 -0
  107. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +137 -0
  108. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1119 -0
  109. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5057 -0
  110. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +2274 -0
  111. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3421 -0
  112. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +298 -0
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +151 -0
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +967 -0
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1806 -0
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +270 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +146 -0
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +683 -0
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +333 -0
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2024 -0
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_secondary_test.cc +932 -0
  122. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +137 -0
  123. package/deps/rocksdb/rocksdb/db/db_info_dumper.h +15 -0
  124. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +178 -0
  125. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +592 -0
  126. package/deps/rocksdb/rocksdb/db/db_iter.cc +1493 -0
  127. package/deps/rocksdb/rocksdb/db/db_iter.h +390 -0
  128. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +657 -0
  129. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +3268 -0
  130. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +3197 -0
  131. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +299 -0
  132. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +513 -0
  133. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +329 -0
  134. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +241 -0
  135. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +671 -0
  136. package/deps/rocksdb/rocksdb/db/db_options_test.cc +1022 -0
  137. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1723 -0
  138. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1694 -0
  139. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1261 -0
  140. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +164 -0
  141. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +488 -0
  142. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +567 -0
  143. package/deps/rocksdb/rocksdb/db/db_test.cc +6736 -0
  144. package/deps/rocksdb/rocksdb/db/db_test2.cc +5408 -0
  145. package/deps/rocksdb/rocksdb/db/db_test_util.cc +1633 -0
  146. package/deps/rocksdb/rocksdb/db/db_test_util.h +1194 -0
  147. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +2235 -0
  148. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +1780 -0
  149. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2520 -0
  150. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +119 -0
  151. package/deps/rocksdb/rocksdb/db/db_write_test.cc +465 -0
  152. package/deps/rocksdb/rocksdb/db/dbformat.cc +222 -0
  153. package/deps/rocksdb/rocksdb/db/dbformat.h +786 -0
  154. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +206 -0
  155. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +580 -0
  156. package/deps/rocksdb/rocksdb/db/error_handler.cc +726 -0
  157. package/deps/rocksdb/rocksdb/db/error_handler.h +117 -0
  158. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +2598 -0
  159. package/deps/rocksdb/rocksdb/db/event_helpers.cc +233 -0
  160. package/deps/rocksdb/rocksdb/db/event_helpers.h +57 -0
  161. package/deps/rocksdb/rocksdb/db/experimental.cc +50 -0
  162. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1559 -0
  163. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +910 -0
  164. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +195 -0
  165. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2936 -0
  166. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +556 -0
  167. package/deps/rocksdb/rocksdb/db/file_indexer.cc +216 -0
  168. package/deps/rocksdb/rocksdb/db/file_indexer.h +142 -0
  169. package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +350 -0
  170. package/deps/rocksdb/rocksdb/db/filename_test.cc +179 -0
  171. package/deps/rocksdb/rocksdb/db/flush_job.cc +514 -0
  172. package/deps/rocksdb/rocksdb/db/flush_job.h +169 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +647 -0
  174. package/deps/rocksdb/rocksdb/db/flush_scheduler.cc +86 -0
  175. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +54 -0
  176. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1023 -0
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.h +163 -0
  178. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +377 -0
  179. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +282 -0
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +75 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +632 -0
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +1461 -0
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +712 -0
  184. package/deps/rocksdb/rocksdb/db/job_context.h +226 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +1118 -0
  186. package/deps/rocksdb/rocksdb/db/log_format.h +48 -0
  187. package/deps/rocksdb/rocksdb/db/log_reader.cc +654 -0
  188. package/deps/rocksdb/rocksdb/db/log_reader.h +192 -0
  189. package/deps/rocksdb/rocksdb/db/log_test.cc +901 -0
  190. package/deps/rocksdb/rocksdb/db/log_writer.cc +164 -0
  191. package/deps/rocksdb/rocksdb/db/log_writer.h +115 -0
  192. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  193. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +63 -0
  194. package/deps/rocksdb/rocksdb/db/lookup_key.h +66 -0
  195. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +54 -0
  196. package/deps/rocksdb/rocksdb/db/malloc_stats.h +24 -0
  197. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +296 -0
  198. package/deps/rocksdb/rocksdb/db/memtable.cc +1169 -0
  199. package/deps/rocksdb/rocksdb/db/memtable.h +554 -0
  200. package/deps/rocksdb/rocksdb/db/memtable_list.cc +888 -0
  201. package/deps/rocksdb/rocksdb/db/memtable_list.h +438 -0
  202. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +935 -0
  203. package/deps/rocksdb/rocksdb/db/merge_context.h +134 -0
  204. package/deps/rocksdb/rocksdb/db/merge_helper.cc +421 -0
  205. package/deps/rocksdb/rocksdb/db/merge_helper.h +197 -0
  206. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +290 -0
  207. package/deps/rocksdb/rocksdb/db/merge_operator.cc +86 -0
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +608 -0
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +338 -0
  210. package/deps/rocksdb/rocksdb/db/options_file_test.cc +119 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.cc +30 -0
  212. package/deps/rocksdb/rocksdb/db/output_validator.h +47 -0
  213. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +993 -0
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +113 -0
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +76 -0
  216. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +231 -0
  217. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +87 -0
  218. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1374 -0
  219. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +38 -0
  220. package/deps/rocksdb/rocksdb/db/prefix_test.cc +910 -0
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +489 -0
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +446 -0
  223. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +260 -0
  224. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +709 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +439 -0
  226. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +256 -0
  227. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +552 -0
  228. package/deps/rocksdb/rocksdb/db/read_callback.h +53 -0
  229. package/deps/rocksdb/rocksdb/db/repair.cc +722 -0
  230. package/deps/rocksdb/rocksdb/db/repair_test.cc +390 -0
  231. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +61 -0
  232. package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +26 -0
  233. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +167 -0
  234. package/deps/rocksdb/rocksdb/db/table_cache.cc +704 -0
  235. package/deps/rocksdb/rocksdb/db/table_cache.h +233 -0
  236. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +75 -0
  237. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +107 -0
  238. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +517 -0
  239. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +318 -0
  240. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +128 -0
  241. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.cc +54 -0
  242. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +44 -0
  243. package/deps/rocksdb/rocksdb/db/version_builder.cc +1078 -0
  244. package/deps/rocksdb/rocksdb/db/version_builder.h +69 -0
  245. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1551 -0
  246. package/deps/rocksdb/rocksdb/db/version_edit.cc +955 -0
  247. package/deps/rocksdb/rocksdb/db/version_edit.h +609 -0
  248. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +699 -0
  249. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +252 -0
  250. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +597 -0
  251. package/deps/rocksdb/rocksdb/db/version_set.cc +6333 -0
  252. package/deps/rocksdb/rocksdb/db/version_set.h +1485 -0
  253. package/deps/rocksdb/rocksdb/db/version_set_test.cc +3035 -0
  254. package/deps/rocksdb/rocksdb/db/wal_edit.cc +204 -0
  255. package/deps/rocksdb/rocksdb/db/wal_edit.h +166 -0
  256. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +214 -0
  257. package/deps/rocksdb/rocksdb/db/wal_manager.cc +517 -0
  258. package/deps/rocksdb/rocksdb/db/wal_manager.h +119 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +340 -0
  260. package/deps/rocksdb/rocksdb/db/write_batch.cc +2174 -0
  261. package/deps/rocksdb/rocksdb/db/write_batch_base.cc +94 -0
  262. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +250 -0
  263. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +907 -0
  264. package/deps/rocksdb/rocksdb/db/write_callback.h +27 -0
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +457 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +128 -0
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +144 -0
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +135 -0
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +796 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +433 -0
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +14 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +341 -0
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +520 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +23 -0
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +337 -0
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +554 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +79 -0
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +173 -0
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +17 -0
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +38 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +763 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +222 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +27 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +428 -0
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +218 -0
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +64 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2430 -0
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +237 -0
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +343 -0
  290. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +800 -0
  291. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +920 -0
  292. package/deps/rocksdb/rocksdb/env/env.cc +733 -0
  293. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +352 -0
  294. package/deps/rocksdb/rocksdb/env/env_chroot.cc +346 -0
  295. package/deps/rocksdb/rocksdb/env/env_chroot.h +22 -0
  296. package/deps/rocksdb/rocksdb/env/env_encryption.cc +1148 -0
  297. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +137 -0
  298. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +648 -0
  299. package/deps/rocksdb/rocksdb/env/env_posix.cc +514 -0
  300. package/deps/rocksdb/rocksdb/env/env_test.cc +2230 -0
  301. package/deps/rocksdb/rocksdb/env/file_system.cc +132 -0
  302. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +448 -0
  303. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +415 -0
  304. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1086 -0
  305. package/deps/rocksdb/rocksdb/env/io_posix.cc +1499 -0
  306. package/deps/rocksdb/rocksdb/env/io_posix.h +402 -0
  307. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +140 -0
  308. package/deps/rocksdb/rocksdb/env/mock_env.cc +1066 -0
  309. package/deps/rocksdb/rocksdb/env/mock_env.h +41 -0
  310. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +85 -0
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +402 -0
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +150 -0
  313. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +717 -0
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +156 -0
  315. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +99 -0
  316. package/deps/rocksdb/rocksdb/file/file_util.cc +268 -0
  317. package/deps/rocksdb/rocksdb/file/file_util.h +96 -0
  318. package/deps/rocksdb/rocksdb/file/filename.cc +473 -0
  319. package/deps/rocksdb/rocksdb/file/filename.h +182 -0
  320. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +188 -0
  321. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +315 -0
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +142 -0
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +482 -0
  324. package/deps/rocksdb/rocksdb/file/read_write_util.cc +67 -0
  325. package/deps/rocksdb/rocksdb/file/read_write_util.h +34 -0
  326. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +169 -0
  327. package/deps/rocksdb/rocksdb/file/readahead_raf.h +29 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +237 -0
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +63 -0
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +552 -0
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +203 -0
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +523 -0
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +251 -0
  334. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +386 -0
  335. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +839 -0
  336. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +2218 -0
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +294 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +71 -0
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +214 -0
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +98 -0
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +137 -0
  342. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +40 -0
  343. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +46 -0
  344. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +359 -0
  345. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +499 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +138 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1697 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/db_dump_tool.h +45 -0
  350. package/deps/rocksdb/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1671 -0
  352. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +405 -0
  353. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +29 -0
  354. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +129 -0
  355. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1472 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +238 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +61 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +269 -0
  359. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +56 -0
  360. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +128 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +43 -0
  362. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +556 -0
  363. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +77 -0
  364. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +385 -0
  365. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +257 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +155 -0
  367. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1702 -0
  368. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +237 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +35 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +73 -0
  371. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +139 -0
  372. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +10 -0
  373. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +269 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +103 -0
  375. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +48 -0
  376. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +19 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  378. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +47 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +145 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +135 -0
  381. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +592 -0
  382. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +69 -0
  383. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +608 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +711 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +280 -0
  386. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +188 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +58 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +48 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +121 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +74 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +86 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +535 -0
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +61 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +72 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +49 -0
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +175 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +180 -0
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +288 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +71 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +50 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +205 -0
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +100 -0
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +19 -0
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +876 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +128 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +94 -0
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +504 -0
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +95 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +626 -0
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +432 -0
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +92 -0
  417. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +34 -0
  418. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +279 -0
  419. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +16 -0
  420. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +102 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +377 -0
  422. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +127 -0
  423. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +106 -0
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +300 -0
  425. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +165 -0
  426. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +684 -0
  427. package/deps/rocksdb/rocksdb/logging/env_logger.h +165 -0
  428. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +162 -0
  429. package/deps/rocksdb/rocksdb/logging/event_logger.cc +70 -0
  430. package/deps/rocksdb/rocksdb/logging/event_logger.h +203 -0
  431. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +43 -0
  432. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +92 -0
  433. package/deps/rocksdb/rocksdb/logging/log_buffer.h +56 -0
  434. package/deps/rocksdb/rocksdb/logging/logging.h +68 -0
  435. package/deps/rocksdb/rocksdb/logging/posix_logger.h +185 -0
  436. package/deps/rocksdb/rocksdb/memory/allocator.h +57 -0
  437. package/deps/rocksdb/rocksdb/memory/arena.cc +233 -0
  438. package/deps/rocksdb/rocksdb/memory/arena.h +141 -0
  439. package/deps/rocksdb/rocksdb/memory/arena_test.cc +204 -0
  440. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +47 -0
  441. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +218 -0
  442. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +206 -0
  443. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +78 -0
  444. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +33 -0
  445. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +27 -0
  446. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +102 -0
  447. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +38 -0
  448. package/deps/rocksdb/rocksdb/memory/memory_usage.h +25 -0
  449. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +62 -0
  450. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +844 -0
  451. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +49 -0
  452. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +349 -0
  453. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +44 -0
  454. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +997 -0
  455. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +663 -0
  456. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +677 -0
  457. package/deps/rocksdb/rocksdb/memtable/skiplist.h +496 -0
  458. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +388 -0
  459. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +280 -0
  460. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +33 -0
  461. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +301 -0
  462. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -0
  463. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +203 -0
  464. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +23 -0
  465. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +287 -0
  466. package/deps/rocksdb/rocksdb/monitoring/histogram.h +149 -0
  467. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +231 -0
  468. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +200 -0
  469. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +84 -0
  470. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +49 -0
  471. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  472. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +71 -0
  473. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +98 -0
  474. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +62 -0
  475. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +60 -0
  476. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +29 -0
  477. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +566 -0
  478. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +97 -0
  479. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +28 -0
  480. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +18 -0
  481. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +79 -0
  482. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +169 -0
  483. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.h +83 -0
  484. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +431 -0
  485. package/deps/rocksdb/rocksdb/monitoring/statistics.h +138 -0
  486. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -0
  487. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +652 -0
  488. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +163 -0
  489. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +314 -0
  490. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +233 -0
  491. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  492. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +206 -0
  493. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +134 -0
  494. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +32 -0
  495. package/deps/rocksdb/rocksdb/options/cf_options.cc +1026 -0
  496. package/deps/rocksdb/rocksdb/options/cf_options.h +308 -0
  497. package/deps/rocksdb/rocksdb/options/configurable.cc +681 -0
  498. package/deps/rocksdb/rocksdb/options/configurable_helper.h +251 -0
  499. package/deps/rocksdb/rocksdb/options/configurable_test.cc +757 -0
  500. package/deps/rocksdb/rocksdb/options/configurable_test.h +127 -0
  501. package/deps/rocksdb/rocksdb/options/customizable.cc +77 -0
  502. package/deps/rocksdb/rocksdb/options/customizable_helper.h +216 -0
  503. package/deps/rocksdb/rocksdb/options/customizable_test.cc +625 -0
  504. package/deps/rocksdb/rocksdb/options/db_options.cc +835 -0
  505. package/deps/rocksdb/rocksdb/options/db_options.h +126 -0
  506. package/deps/rocksdb/rocksdb/options/options.cc +664 -0
  507. package/deps/rocksdb/rocksdb/options/options_helper.cc +1391 -0
  508. package/deps/rocksdb/rocksdb/options/options_helper.h +118 -0
  509. package/deps/rocksdb/rocksdb/options/options_parser.cc +721 -0
  510. package/deps/rocksdb/rocksdb/options/options_parser.h +151 -0
  511. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +583 -0
  512. package/deps/rocksdb/rocksdb/options/options_test.cc +3794 -0
  513. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +106 -0
  514. package/deps/rocksdb/rocksdb/port/lang.h +16 -0
  515. package/deps/rocksdb/rocksdb/port/likely.h +18 -0
  516. package/deps/rocksdb/rocksdb/port/malloc.h +17 -0
  517. package/deps/rocksdb/rocksdb/port/port.h +21 -0
  518. package/deps/rocksdb/rocksdb/port/port_dirent.h +44 -0
  519. package/deps/rocksdb/rocksdb/port/port_example.h +101 -0
  520. package/deps/rocksdb/rocksdb/port/port_posix.cc +266 -0
  521. package/deps/rocksdb/rocksdb/port/port_posix.h +223 -0
  522. package/deps/rocksdb/rocksdb/port/stack_trace.cc +179 -0
  523. package/deps/rocksdb/rocksdb/port/stack_trace.h +28 -0
  524. package/deps/rocksdb/rocksdb/port/sys_time.h +47 -0
  525. package/deps/rocksdb/rocksdb/port/util_logger.h +20 -0
  526. package/deps/rocksdb/rocksdb/port/win/env_default.cc +45 -0
  527. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1449 -0
  528. package/deps/rocksdb/rocksdb/port/win/env_win.h +294 -0
  529. package/deps/rocksdb/rocksdb/port/win/io_win.cc +1084 -0
  530. package/deps/rocksdb/rocksdb/port/win/io_win.h +494 -0
  531. package/deps/rocksdb/rocksdb/port/win/port_win.cc +283 -0
  532. package/deps/rocksdb/rocksdb/port/win/port_win.h +411 -0
  533. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +79 -0
  534. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +194 -0
  535. package/deps/rocksdb/rocksdb/port/win/win_logger.h +67 -0
  536. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +183 -0
  537. package/deps/rocksdb/rocksdb/port/win/win_thread.h +122 -0
  538. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +221 -0
  539. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +26 -0
  540. package/deps/rocksdb/rocksdb/port/xpress.h +17 -0
  541. package/deps/rocksdb/rocksdb/src.mk +631 -0
  542. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +126 -0
  543. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +57 -0
  544. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  545. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/block.cc +1049 -0
  547. package/deps/rocksdb/rocksdb/table/block_based/block.h +720 -0
  548. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +348 -0
  549. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +119 -0
  550. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +434 -0
  551. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1835 -0
  552. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +193 -0
  553. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +839 -0
  554. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +95 -0
  555. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +383 -0
  556. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +251 -0
  557. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3563 -0
  558. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +681 -0
  559. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +190 -0
  560. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +347 -0
  561. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +201 -0
  562. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +78 -0
  563. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +66 -0
  564. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +32 -0
  565. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +232 -0
  566. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +66 -0
  567. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +623 -0
  568. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  569. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +220 -0
  570. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +59 -0
  571. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +25 -0
  572. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +93 -0
  573. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +136 -0
  574. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +717 -0
  575. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +180 -0
  576. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +102 -0
  577. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +55 -0
  578. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1407 -0
  579. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +168 -0
  580. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +88 -0
  581. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +41 -0
  582. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +344 -0
  583. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +139 -0
  584. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +333 -0
  585. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  586. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.h +49 -0
  587. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +248 -0
  588. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +444 -0
  589. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +54 -0
  590. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +85 -0
  591. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +56 -0
  592. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +22 -0
  593. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +40 -0
  594. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +521 -0
  595. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +144 -0
  596. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +424 -0
  597. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  598. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +142 -0
  599. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +186 -0
  600. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +51 -0
  601. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +64 -0
  602. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +38 -0
  603. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +120 -0
  604. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +59 -0
  605. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +324 -0
  606. package/deps/rocksdb/rocksdb/table/block_fetcher.h +129 -0
  607. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +534 -0
  608. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +277 -0
  609. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +543 -0
  610. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  611. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +663 -0
  612. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +107 -0
  613. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +81 -0
  614. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +404 -0
  615. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +101 -0
  616. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +585 -0
  617. package/deps/rocksdb/rocksdb/table/format.cc +422 -0
  618. package/deps/rocksdb/rocksdb/table/format.h +348 -0
  619. package/deps/rocksdb/rocksdb/table/get_context.cc +408 -0
  620. package/deps/rocksdb/rocksdb/table/get_context.h +212 -0
  621. package/deps/rocksdb/rocksdb/table/internal_iterator.h +205 -0
  622. package/deps/rocksdb/rocksdb/table/iter_heap.h +42 -0
  623. package/deps/rocksdb/rocksdb/table/iterator.cc +210 -0
  624. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +180 -0
  625. package/deps/rocksdb/rocksdb/table/merger_test.cc +180 -0
  626. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +481 -0
  627. package/deps/rocksdb/rocksdb/table/merging_iterator.h +64 -0
  628. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +541 -0
  629. package/deps/rocksdb/rocksdb/table/meta_blocks.h +154 -0
  630. package/deps/rocksdb/rocksdb/table/mock_table.cc +328 -0
  631. package/deps/rocksdb/rocksdb/table/mock_table.h +89 -0
  632. package/deps/rocksdb/rocksdb/table/multiget_context.h +282 -0
  633. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +116 -0
  634. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +44 -0
  635. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +34 -0
  636. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  637. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +135 -0
  638. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +332 -0
  639. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +153 -0
  640. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +263 -0
  641. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +182 -0
  642. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +211 -0
  643. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +249 -0
  644. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +506 -0
  645. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +201 -0
  646. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +781 -0
  647. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +247 -0
  648. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +61 -0
  649. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +502 -0
  650. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +96 -0
  651. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +98 -0
  652. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +228 -0
  653. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +340 -0
  654. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +94 -0
  655. package/deps/rocksdb/rocksdb/table/table_builder.h +203 -0
  656. package/deps/rocksdb/rocksdb/table/table_factory.cc +38 -0
  657. package/deps/rocksdb/rocksdb/table/table_properties.cc +300 -0
  658. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +30 -0
  659. package/deps/rocksdb/rocksdb/table/table_reader.h +147 -0
  660. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +347 -0
  661. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +39 -0
  662. package/deps/rocksdb/rocksdb/table/table_test.cc +4769 -0
  663. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +215 -0
  664. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +43 -0
  665. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +38 -0
  666. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +74 -0
  667. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +93 -0
  668. package/deps/rocksdb/rocksdb/test_util/sync_point.h +161 -0
  669. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +129 -0
  670. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +74 -0
  671. package/deps/rocksdb/rocksdb/test_util/testharness.cc +56 -0
  672. package/deps/rocksdb/rocksdb/test_util/testharness.h +53 -0
  673. package/deps/rocksdb/rocksdb/test_util/testutil.cc +566 -0
  674. package/deps/rocksdb/rocksdb/test_util/testutil.h +887 -0
  675. package/deps/rocksdb/rocksdb/test_util/testutil_test.cc +43 -0
  676. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +388 -0
  677. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +132 -0
  678. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +27 -0
  679. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +45 -0
  680. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +166 -0
  681. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +570 -0
  682. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +92 -0
  683. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +54 -0
  684. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +152 -0
  685. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +59 -0
  686. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +141 -0
  687. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +33 -0
  688. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +74 -0
  689. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +117 -0
  690. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +263 -0
  691. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +96 -0
  692. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +40 -0
  693. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +29 -0
  694. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +144 -0
  695. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +30 -0
  696. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +51 -0
  697. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +28 -0
  698. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +10 -0
  699. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +26 -0
  700. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +138 -0
  701. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +23 -0
  702. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +57 -0
  703. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +260 -0
  704. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +52 -0
  705. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +328 -0
  706. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +1703 -0
  707. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +16 -0
  708. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +304 -0
  709. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +39 -0
  710. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +26 -0
  711. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +318 -0
  712. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.cpp +12 -0
  713. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +57 -0
  714. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +219 -0
  715. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +207 -0
  716. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +164 -0
  717. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +57 -0
  718. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +77 -0
  719. package/deps/rocksdb/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  720. package/deps/rocksdb/rocksdb/thirdparty.inc +268 -0
  721. package/deps/rocksdb/rocksdb/tools/CMakeLists.txt +30 -0
  722. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +110 -0
  723. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  724. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  725. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  726. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  727. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2307 -0
  728. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +395 -0
  729. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +721 -0
  730. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +719 -0
  731. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +25 -0
  732. package/deps/rocksdb/rocksdb/tools/db_bench.cc +21 -0
  733. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +7416 -0
  734. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +328 -0
  735. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +130 -0
  736. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +297 -0
  737. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +259 -0
  738. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_dump.cc +63 -0
  739. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +62 -0
  740. package/deps/rocksdb/rocksdb/tools/io_tracer_parser.cc +25 -0
  741. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +187 -0
  742. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +120 -0
  743. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.h +40 -0
  744. package/deps/rocksdb/rocksdb/tools/ldb.cc +21 -0
  745. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3609 -0
  746. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +665 -0
  747. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +746 -0
  748. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +159 -0
  749. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +221 -0
  750. package/deps/rocksdb/rocksdb/tools/sst_dump.cc +20 -0
  751. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +427 -0
  752. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +541 -0
  753. package/deps/rocksdb/rocksdb/tools/trace_analyzer.cc +25 -0
  754. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +752 -0
  755. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2001 -0
  756. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +292 -0
  757. package/deps/rocksdb/rocksdb/tools/write_stress.cc +305 -0
  758. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +496 -0
  759. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +294 -0
  760. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +379 -0
  761. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +229 -0
  762. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +174 -0
  763. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +215 -0
  764. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +491 -0
  765. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +195 -0
  766. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +255 -0
  767. package/deps/rocksdb/rocksdb/util/autovector.h +367 -0
  768. package/deps/rocksdb/rocksdb/util/autovector_test.cc +330 -0
  769. package/deps/rocksdb/rocksdb/util/bloom_impl.h +485 -0
  770. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1191 -0
  771. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -0
  772. package/deps/rocksdb/rocksdb/util/build_version.h +15 -0
  773. package/deps/rocksdb/rocksdb/util/cast_util.h +20 -0
  774. package/deps/rocksdb/rocksdb/util/channel.h +67 -0
  775. package/deps/rocksdb/rocksdb/util/coding.cc +89 -0
  776. package/deps/rocksdb/rocksdb/util/coding.h +419 -0
  777. package/deps/rocksdb/rocksdb/util/coding_lean.h +101 -0
  778. package/deps/rocksdb/rocksdb/util/coding_test.cc +217 -0
  779. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  780. package/deps/rocksdb/rocksdb/util/comparator.cc +219 -0
  781. package/deps/rocksdb/rocksdb/util/compression.h +1529 -0
  782. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +108 -0
  783. package/deps/rocksdb/rocksdb/util/compression_context_cache.h +47 -0
  784. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +67 -0
  785. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  786. package/deps/rocksdb/rocksdb/util/core_local.h +83 -0
  787. package/deps/rocksdb/rocksdb/util/crc32c.cc +1283 -0
  788. package/deps/rocksdb/rocksdb/util/crc32c.h +51 -0
  789. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +169 -0
  790. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +50 -0
  791. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +94 -0
  792. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +19 -0
  793. package/deps/rocksdb/rocksdb/util/crc32c_ppc_asm.S +756 -0
  794. package/deps/rocksdb/rocksdb/util/crc32c_ppc_constants.h +900 -0
  795. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +180 -0
  796. package/deps/rocksdb/rocksdb/util/defer.h +52 -0
  797. package/deps/rocksdb/rocksdb/util/defer_test.cc +39 -0
  798. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +68 -0
  799. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +70 -0
  800. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +214 -0
  801. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +323 -0
  802. package/deps/rocksdb/rocksdb/util/fastrange.h +112 -0
  803. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +136 -0
  804. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +98 -0
  805. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +449 -0
  806. package/deps/rocksdb/rocksdb/util/filelock_test.cc +152 -0
  807. package/deps/rocksdb/rocksdb/util/filter_bench.cc +781 -0
  808. package/deps/rocksdb/rocksdb/util/gflags_compat.h +20 -0
  809. package/deps/rocksdb/rocksdb/util/hash.cc +83 -0
  810. package/deps/rocksdb/rocksdb/util/hash.h +107 -0
  811. package/deps/rocksdb/rocksdb/util/hash_map.h +67 -0
  812. package/deps/rocksdb/rocksdb/util/hash_test.cc +593 -0
  813. package/deps/rocksdb/rocksdb/util/heap.h +166 -0
  814. package/deps/rocksdb/rocksdb/util/heap_test.cc +139 -0
  815. package/deps/rocksdb/rocksdb/util/kv_map.h +33 -0
  816. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +86 -0
  817. package/deps/rocksdb/rocksdb/util/math.h +186 -0
  818. package/deps/rocksdb/rocksdb/util/math128.h +298 -0
  819. package/deps/rocksdb/rocksdb/util/murmurhash.cc +191 -0
  820. package/deps/rocksdb/rocksdb/util/murmurhash.h +42 -0
  821. package/deps/rocksdb/rocksdb/util/mutexlock.h +186 -0
  822. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +27 -0
  823. package/deps/rocksdb/rocksdb/util/random.cc +56 -0
  824. package/deps/rocksdb/rocksdb/util/random.h +186 -0
  825. package/deps/rocksdb/rocksdb/util/random_test.cc +105 -0
  826. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +340 -0
  827. package/deps/rocksdb/rocksdb/util/rate_limiter.h +113 -0
  828. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +251 -0
  829. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +151 -0
  830. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +107 -0
  831. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1201 -0
  832. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +1062 -0
  833. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +931 -0
  834. package/deps/rocksdb/rocksdb/util/set_comparator.h +22 -0
  835. package/deps/rocksdb/rocksdb/util/slice.cc +243 -0
  836. package/deps/rocksdb/rocksdb/util/slice_test.cc +163 -0
  837. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +153 -0
  838. package/deps/rocksdb/rocksdb/util/status.cc +149 -0
  839. package/deps/rocksdb/rocksdb/util/stderr_logger.h +31 -0
  840. package/deps/rocksdb/rocksdb/util/stop_watch.h +118 -0
  841. package/deps/rocksdb/rocksdb/util/string_util.cc +422 -0
  842. package/deps/rocksdb/rocksdb/util/string_util.h +144 -0
  843. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +354 -0
  844. package/deps/rocksdb/rocksdb/util/thread_local.cc +554 -0
  845. package/deps/rocksdb/rocksdb/util/thread_local.h +101 -0
  846. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +583 -0
  847. package/deps/rocksdb/rocksdb/util/thread_operation.h +121 -0
  848. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +506 -0
  849. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +112 -0
  850. package/deps/rocksdb/rocksdb/util/timer.h +331 -0
  851. package/deps/rocksdb/rocksdb/util/timer_queue.h +230 -0
  852. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +72 -0
  853. package/deps/rocksdb/rocksdb/util/timer_test.cc +399 -0
  854. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +80 -0
  855. package/deps/rocksdb/rocksdb/util/vector_iterator.h +101 -0
  856. package/deps/rocksdb/rocksdb/util/work_queue.h +148 -0
  857. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +268 -0
  858. package/deps/rocksdb/rocksdb/util/xxh3p.h +1392 -0
  859. package/deps/rocksdb/rocksdb/util/xxhash.cc +1158 -0
  860. package/deps/rocksdb/rocksdb/util/xxhash.h +598 -0
  861. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +2354 -0
  862. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db_test.cc +2955 -0
  863. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  864. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +199 -0
  865. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  866. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +266 -0
  867. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +52 -0
  868. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2167 -0
  869. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +500 -0
  870. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +113 -0
  871. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +147 -0
  872. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +66 -0
  873. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +2386 -0
  874. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +281 -0
  875. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +58 -0
  876. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +314 -0
  877. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +244 -0
  878. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +47 -0
  879. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +42 -0
  880. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +375 -0
  881. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +327 -0
  882. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +114 -0
  883. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +187 -0
  884. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +390 -0
  885. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +184 -0
  886. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +67 -0
  887. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  888. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +75 -0
  889. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +72 -0
  890. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +43 -0
  891. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +588 -0
  892. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +82 -0
  893. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +821 -0
  894. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +37 -0
  895. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +29 -0
  896. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +27 -0
  897. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +25 -0
  898. package/deps/rocksdb/rocksdb/utilities/debug.cc +82 -0
  899. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +1497 -0
  900. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +1146 -0
  901. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +262 -0
  902. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +223 -0
  903. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +145 -0
  904. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +44 -0
  905. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +490 -0
  906. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +242 -0
  907. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +581 -0
  908. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +437 -0
  909. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +56 -0
  910. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +275 -0
  911. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +52 -0
  912. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +59 -0
  913. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +39 -0
  914. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +77 -0
  915. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +83 -0
  916. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +97 -0
  917. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +38 -0
  918. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +59 -0
  919. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +31 -0
  920. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +117 -0
  921. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +49 -0
  922. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +598 -0
  923. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +69 -0
  924. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +55 -0
  925. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +87 -0
  926. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +174 -0
  927. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +168 -0
  928. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +431 -0
  929. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +159 -0
  930. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +655 -0
  931. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +425 -0
  932. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +156 -0
  933. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +609 -0
  934. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +296 -0
  935. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  936. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +86 -0
  937. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +125 -0
  938. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +238 -0
  939. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +308 -0
  940. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +168 -0
  941. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +160 -0
  942. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +174 -0
  943. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +360 -0
  944. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +456 -0
  945. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +286 -0
  946. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +167 -0
  947. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +339 -0
  948. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  949. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +140 -0
  950. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +142 -0
  951. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +285 -0
  952. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  953. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +494 -0
  954. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +356 -0
  955. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +224 -0
  956. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +122 -0
  957. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +72 -0
  958. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +244 -0
  959. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +125 -0
  960. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  961. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +29 -0
  962. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +82 -0
  963. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_tracker.h +209 -0
  964. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +720 -0
  965. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +223 -0
  966. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +181 -0
  967. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +319 -0
  968. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +270 -0
  969. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +99 -0
  970. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +30 -0
  971. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +306 -0
  972. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  973. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  974. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  975. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  976. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  977. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  978. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +139 -0
  979. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  980. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +222 -0
  981. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  982. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  983. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +253 -0
  984. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1007 -0
  985. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +560 -0
  986. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +527 -0
  987. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +265 -0
  988. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  989. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +520 -0
  990. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  991. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +120 -0
  992. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  993. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +213 -0
  994. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  995. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  996. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  997. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  998. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +82 -0
  999. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1000. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1001. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1002. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1003. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +172 -0
  1004. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1005. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +132 -0
  1006. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +153 -0
  1007. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1008. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1009. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +201 -0
  1010. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1011. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1012. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1013. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1014. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1015. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +479 -0
  1016. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +130 -0
  1017. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +156 -0
  1018. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1019. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +196 -0
  1020. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +101 -0
  1021. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +111 -0
  1022. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +87 -0
  1023. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1418 -0
  1024. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +752 -0
  1025. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +232 -0
  1026. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +628 -0
  1027. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +228 -0
  1028. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +49 -0
  1029. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +678 -0
  1030. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +373 -0
  1031. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +135 -0
  1032. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +26 -0
  1033. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6350 -0
  1034. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +522 -0
  1035. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +188 -0
  1036. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +80 -0
  1037. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3531 -0
  1038. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +483 -0
  1039. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +119 -0
  1040. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +999 -0
  1041. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +1109 -0
  1042. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +786 -0
  1043. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1039 -0
  1044. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +341 -0
  1045. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +470 -0
  1046. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +108 -0
  1047. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +332 -0
  1048. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +353 -0
  1049. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +703 -0
  1050. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +99 -0
  1051. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +617 -0
  1052. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +345 -0
  1053. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +569 -0
  1054. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1867 -0
  1055. package/deps/rocksdb/rocksdb.gyp +475 -0
  1056. package/deps/snappy/freebsd/config.h +135 -0
  1057. package/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
  1058. package/deps/snappy/linux/config.h +135 -0
  1059. package/deps/snappy/linux/snappy-stubs-public.h +100 -0
  1060. package/deps/snappy/mac/config.h +137 -0
  1061. package/deps/snappy/mac/snappy-stubs-public.h +100 -0
  1062. package/deps/snappy/openbsd/config.h +135 -0
  1063. package/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
  1064. package/deps/snappy/snappy-1.1.7/COPYING +54 -0
  1065. package/deps/snappy/snappy-1.1.7/cmake/SnappyConfig.cmake +1 -0
  1066. package/deps/snappy/snappy-1.1.7/cmake/config.h.in +62 -0
  1067. package/deps/snappy/snappy-1.1.7/snappy-c.cc +90 -0
  1068. package/deps/snappy/snappy-1.1.7/snappy-c.h +138 -0
  1069. package/deps/snappy/snappy-1.1.7/snappy-internal.h +224 -0
  1070. package/deps/snappy/snappy-1.1.7/snappy-sinksource.cc +104 -0
  1071. package/deps/snappy/snappy-1.1.7/snappy-sinksource.h +182 -0
  1072. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.cc +42 -0
  1073. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.h +561 -0
  1074. package/deps/snappy/snappy-1.1.7/snappy-stubs-public.h.in +94 -0
  1075. package/deps/snappy/snappy-1.1.7/snappy-test.cc +612 -0
  1076. package/deps/snappy/snappy-1.1.7/snappy-test.h +573 -0
  1077. package/deps/snappy/snappy-1.1.7/snappy.cc +1515 -0
  1078. package/deps/snappy/snappy-1.1.7/snappy.h +203 -0
  1079. package/deps/snappy/snappy-1.1.7/snappy_unittest.cc +1410 -0
  1080. package/deps/snappy/snappy.gyp +90 -0
  1081. package/deps/snappy/solaris/config.h +135 -0
  1082. package/deps/snappy/solaris/snappy-stubs-public.h +100 -0
  1083. package/deps/snappy/win32/config.h +29 -0
  1084. package/deps/snappy/win32/snappy-stubs-public.h +100 -0
  1085. package/iterator.js +55 -0
  1086. package/leveldown.js +113 -0
  1087. package/package-lock.json +23687 -0
  1088. package/package.json +70 -0
@@ -0,0 +1,1283 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+ //
10
+ // A portable implementation of crc32c, optimized to handle
11
+ // four bytes at a time.
12
+ #include "util/crc32c.h"
13
+ #include <stdint.h>
14
+ #ifdef HAVE_SSE42
15
+ #include <nmmintrin.h>
16
+ #include <wmmintrin.h>
17
+ #endif
18
+ #include "port/lang.h"
19
+ #include "util/coding.h"
20
+
21
+ #include "util/crc32c_arm64.h"
22
+
23
+ #ifdef __powerpc64__
24
+ #include "util/crc32c_ppc.h"
25
+ #include "util/crc32c_ppc_constants.h"
26
+
27
+ #if __linux__
28
+ #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT
29
+ #include <sys/auxv.h>
30
+ #endif
31
+
32
+ #ifndef PPC_FEATURE2_VEC_CRYPTO
33
+ #define PPC_FEATURE2_VEC_CRYPTO 0x02000000
34
+ #endif
35
+
36
+ #ifndef AT_HWCAP2
37
+ #define AT_HWCAP2 26
38
+ #endif
39
+
40
+ #elif __FreeBSD__
41
+ #include <machine/cpu.h>
42
+ #include <sys/auxv.h>
43
+ #include <sys/elf_common.h>
44
+ #endif /* __linux__ */
45
+
46
+ #endif
47
+
48
+ #if defined(HAVE_ARM64_CRC)
49
+ bool pmull_runtime_flag = false;
50
+ #endif
51
+
52
+ namespace ROCKSDB_NAMESPACE {
53
+ namespace crc32c {
54
+
55
+ #if defined(HAVE_POWER8) && defined(HAS_ALTIVEC)
56
+ #ifdef __powerpc64__
57
+ static int arch_ppc_crc32 = 0;
58
+ #endif /* __powerpc64__ */
59
+ #endif
60
+
61
+ static const uint32_t table0_[256] = {
62
+ 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4,
63
+ 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,
64
+ 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b,
65
+ 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,
66
+ 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b,
67
+ 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,
68
+ 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54,
69
+ 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,
70
+ 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a,
71
+ 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,
72
+ 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5,
73
+ 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,
74
+ 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45,
75
+ 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,
76
+ 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a,
77
+ 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,
78
+ 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48,
79
+ 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,
80
+ 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687,
81
+ 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,
82
+ 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927,
83
+ 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,
84
+ 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8,
85
+ 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,
86
+ 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096,
87
+ 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,
88
+ 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859,
89
+ 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,
90
+ 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9,
91
+ 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,
92
+ 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36,
93
+ 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,
94
+ 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c,
95
+ 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,
96
+ 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043,
97
+ 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,
98
+ 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3,
99
+ 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,
100
+ 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c,
101
+ 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,
102
+ 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652,
103
+ 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,
104
+ 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d,
105
+ 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,
106
+ 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d,
107
+ 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,
108
+ 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2,
109
+ 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,
110
+ 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530,
111
+ 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,
112
+ 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff,
113
+ 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,
114
+ 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f,
115
+ 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,
116
+ 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90,
117
+ 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,
118
+ 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee,
119
+ 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,
120
+ 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321,
121
+ 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,
122
+ 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81,
123
+ 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,
124
+ 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,
125
+ 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351
126
+ };
127
+ static const uint32_t table1_[256] = {
128
+ 0x00000000, 0x13a29877, 0x274530ee, 0x34e7a899,
129
+ 0x4e8a61dc, 0x5d28f9ab, 0x69cf5132, 0x7a6dc945,
130
+ 0x9d14c3b8, 0x8eb65bcf, 0xba51f356, 0xa9f36b21,
131
+ 0xd39ea264, 0xc03c3a13, 0xf4db928a, 0xe7790afd,
132
+ 0x3fc5f181, 0x2c6769f6, 0x1880c16f, 0x0b225918,
133
+ 0x714f905d, 0x62ed082a, 0x560aa0b3, 0x45a838c4,
134
+ 0xa2d13239, 0xb173aa4e, 0x859402d7, 0x96369aa0,
135
+ 0xec5b53e5, 0xfff9cb92, 0xcb1e630b, 0xd8bcfb7c,
136
+ 0x7f8be302, 0x6c297b75, 0x58ced3ec, 0x4b6c4b9b,
137
+ 0x310182de, 0x22a31aa9, 0x1644b230, 0x05e62a47,
138
+ 0xe29f20ba, 0xf13db8cd, 0xc5da1054, 0xd6788823,
139
+ 0xac154166, 0xbfb7d911, 0x8b507188, 0x98f2e9ff,
140
+ 0x404e1283, 0x53ec8af4, 0x670b226d, 0x74a9ba1a,
141
+ 0x0ec4735f, 0x1d66eb28, 0x298143b1, 0x3a23dbc6,
142
+ 0xdd5ad13b, 0xcef8494c, 0xfa1fe1d5, 0xe9bd79a2,
143
+ 0x93d0b0e7, 0x80722890, 0xb4958009, 0xa737187e,
144
+ 0xff17c604, 0xecb55e73, 0xd852f6ea, 0xcbf06e9d,
145
+ 0xb19da7d8, 0xa23f3faf, 0x96d89736, 0x857a0f41,
146
+ 0x620305bc, 0x71a19dcb, 0x45463552, 0x56e4ad25,
147
+ 0x2c896460, 0x3f2bfc17, 0x0bcc548e, 0x186eccf9,
148
+ 0xc0d23785, 0xd370aff2, 0xe797076b, 0xf4359f1c,
149
+ 0x8e585659, 0x9dface2e, 0xa91d66b7, 0xbabffec0,
150
+ 0x5dc6f43d, 0x4e646c4a, 0x7a83c4d3, 0x69215ca4,
151
+ 0x134c95e1, 0x00ee0d96, 0x3409a50f, 0x27ab3d78,
152
+ 0x809c2506, 0x933ebd71, 0xa7d915e8, 0xb47b8d9f,
153
+ 0xce1644da, 0xddb4dcad, 0xe9537434, 0xfaf1ec43,
154
+ 0x1d88e6be, 0x0e2a7ec9, 0x3acdd650, 0x296f4e27,
155
+ 0x53028762, 0x40a01f15, 0x7447b78c, 0x67e52ffb,
156
+ 0xbf59d487, 0xacfb4cf0, 0x981ce469, 0x8bbe7c1e,
157
+ 0xf1d3b55b, 0xe2712d2c, 0xd69685b5, 0xc5341dc2,
158
+ 0x224d173f, 0x31ef8f48, 0x050827d1, 0x16aabfa6,
159
+ 0x6cc776e3, 0x7f65ee94, 0x4b82460d, 0x5820de7a,
160
+ 0xfbc3faf9, 0xe861628e, 0xdc86ca17, 0xcf245260,
161
+ 0xb5499b25, 0xa6eb0352, 0x920cabcb, 0x81ae33bc,
162
+ 0x66d73941, 0x7575a136, 0x419209af, 0x523091d8,
163
+ 0x285d589d, 0x3bffc0ea, 0x0f186873, 0x1cbaf004,
164
+ 0xc4060b78, 0xd7a4930f, 0xe3433b96, 0xf0e1a3e1,
165
+ 0x8a8c6aa4, 0x992ef2d3, 0xadc95a4a, 0xbe6bc23d,
166
+ 0x5912c8c0, 0x4ab050b7, 0x7e57f82e, 0x6df56059,
167
+ 0x1798a91c, 0x043a316b, 0x30dd99f2, 0x237f0185,
168
+ 0x844819fb, 0x97ea818c, 0xa30d2915, 0xb0afb162,
169
+ 0xcac27827, 0xd960e050, 0xed8748c9, 0xfe25d0be,
170
+ 0x195cda43, 0x0afe4234, 0x3e19eaad, 0x2dbb72da,
171
+ 0x57d6bb9f, 0x447423e8, 0x70938b71, 0x63311306,
172
+ 0xbb8de87a, 0xa82f700d, 0x9cc8d894, 0x8f6a40e3,
173
+ 0xf50789a6, 0xe6a511d1, 0xd242b948, 0xc1e0213f,
174
+ 0x26992bc2, 0x353bb3b5, 0x01dc1b2c, 0x127e835b,
175
+ 0x68134a1e, 0x7bb1d269, 0x4f567af0, 0x5cf4e287,
176
+ 0x04d43cfd, 0x1776a48a, 0x23910c13, 0x30339464,
177
+ 0x4a5e5d21, 0x59fcc556, 0x6d1b6dcf, 0x7eb9f5b8,
178
+ 0x99c0ff45, 0x8a626732, 0xbe85cfab, 0xad2757dc,
179
+ 0xd74a9e99, 0xc4e806ee, 0xf00fae77, 0xe3ad3600,
180
+ 0x3b11cd7c, 0x28b3550b, 0x1c54fd92, 0x0ff665e5,
181
+ 0x759baca0, 0x663934d7, 0x52de9c4e, 0x417c0439,
182
+ 0xa6050ec4, 0xb5a796b3, 0x81403e2a, 0x92e2a65d,
183
+ 0xe88f6f18, 0xfb2df76f, 0xcfca5ff6, 0xdc68c781,
184
+ 0x7b5fdfff, 0x68fd4788, 0x5c1aef11, 0x4fb87766,
185
+ 0x35d5be23, 0x26772654, 0x12908ecd, 0x013216ba,
186
+ 0xe64b1c47, 0xf5e98430, 0xc10e2ca9, 0xd2acb4de,
187
+ 0xa8c17d9b, 0xbb63e5ec, 0x8f844d75, 0x9c26d502,
188
+ 0x449a2e7e, 0x5738b609, 0x63df1e90, 0x707d86e7,
189
+ 0x0a104fa2, 0x19b2d7d5, 0x2d557f4c, 0x3ef7e73b,
190
+ 0xd98eedc6, 0xca2c75b1, 0xfecbdd28, 0xed69455f,
191
+ 0x97048c1a, 0x84a6146d, 0xb041bcf4, 0xa3e32483
192
+ };
193
+ static const uint32_t table2_[256] = {
194
+ 0x00000000, 0xa541927e, 0x4f6f520d, 0xea2ec073,
195
+ 0x9edea41a, 0x3b9f3664, 0xd1b1f617, 0x74f06469,
196
+ 0x38513ec5, 0x9d10acbb, 0x773e6cc8, 0xd27ffeb6,
197
+ 0xa68f9adf, 0x03ce08a1, 0xe9e0c8d2, 0x4ca15aac,
198
+ 0x70a27d8a, 0xd5e3eff4, 0x3fcd2f87, 0x9a8cbdf9,
199
+ 0xee7cd990, 0x4b3d4bee, 0xa1138b9d, 0x045219e3,
200
+ 0x48f3434f, 0xedb2d131, 0x079c1142, 0xa2dd833c,
201
+ 0xd62de755, 0x736c752b, 0x9942b558, 0x3c032726,
202
+ 0xe144fb14, 0x4405696a, 0xae2ba919, 0x0b6a3b67,
203
+ 0x7f9a5f0e, 0xdadbcd70, 0x30f50d03, 0x95b49f7d,
204
+ 0xd915c5d1, 0x7c5457af, 0x967a97dc, 0x333b05a2,
205
+ 0x47cb61cb, 0xe28af3b5, 0x08a433c6, 0xade5a1b8,
206
+ 0x91e6869e, 0x34a714e0, 0xde89d493, 0x7bc846ed,
207
+ 0x0f382284, 0xaa79b0fa, 0x40577089, 0xe516e2f7,
208
+ 0xa9b7b85b, 0x0cf62a25, 0xe6d8ea56, 0x43997828,
209
+ 0x37691c41, 0x92288e3f, 0x78064e4c, 0xdd47dc32,
210
+ 0xc76580d9, 0x622412a7, 0x880ad2d4, 0x2d4b40aa,
211
+ 0x59bb24c3, 0xfcfab6bd, 0x16d476ce, 0xb395e4b0,
212
+ 0xff34be1c, 0x5a752c62, 0xb05bec11, 0x151a7e6f,
213
+ 0x61ea1a06, 0xc4ab8878, 0x2e85480b, 0x8bc4da75,
214
+ 0xb7c7fd53, 0x12866f2d, 0xf8a8af5e, 0x5de93d20,
215
+ 0x29195949, 0x8c58cb37, 0x66760b44, 0xc337993a,
216
+ 0x8f96c396, 0x2ad751e8, 0xc0f9919b, 0x65b803e5,
217
+ 0x1148678c, 0xb409f5f2, 0x5e273581, 0xfb66a7ff,
218
+ 0x26217bcd, 0x8360e9b3, 0x694e29c0, 0xcc0fbbbe,
219
+ 0xb8ffdfd7, 0x1dbe4da9, 0xf7908dda, 0x52d11fa4,
220
+ 0x1e704508, 0xbb31d776, 0x511f1705, 0xf45e857b,
221
+ 0x80aee112, 0x25ef736c, 0xcfc1b31f, 0x6a802161,
222
+ 0x56830647, 0xf3c29439, 0x19ec544a, 0xbcadc634,
223
+ 0xc85da25d, 0x6d1c3023, 0x8732f050, 0x2273622e,
224
+ 0x6ed23882, 0xcb93aafc, 0x21bd6a8f, 0x84fcf8f1,
225
+ 0xf00c9c98, 0x554d0ee6, 0xbf63ce95, 0x1a225ceb,
226
+ 0x8b277743, 0x2e66e53d, 0xc448254e, 0x6109b730,
227
+ 0x15f9d359, 0xb0b84127, 0x5a968154, 0xffd7132a,
228
+ 0xb3764986, 0x1637dbf8, 0xfc191b8b, 0x595889f5,
229
+ 0x2da8ed9c, 0x88e97fe2, 0x62c7bf91, 0xc7862def,
230
+ 0xfb850ac9, 0x5ec498b7, 0xb4ea58c4, 0x11abcaba,
231
+ 0x655baed3, 0xc01a3cad, 0x2a34fcde, 0x8f756ea0,
232
+ 0xc3d4340c, 0x6695a672, 0x8cbb6601, 0x29faf47f,
233
+ 0x5d0a9016, 0xf84b0268, 0x1265c21b, 0xb7245065,
234
+ 0x6a638c57, 0xcf221e29, 0x250cde5a, 0x804d4c24,
235
+ 0xf4bd284d, 0x51fcba33, 0xbbd27a40, 0x1e93e83e,
236
+ 0x5232b292, 0xf77320ec, 0x1d5de09f, 0xb81c72e1,
237
+ 0xccec1688, 0x69ad84f6, 0x83834485, 0x26c2d6fb,
238
+ 0x1ac1f1dd, 0xbf8063a3, 0x55aea3d0, 0xf0ef31ae,
239
+ 0x841f55c7, 0x215ec7b9, 0xcb7007ca, 0x6e3195b4,
240
+ 0x2290cf18, 0x87d15d66, 0x6dff9d15, 0xc8be0f6b,
241
+ 0xbc4e6b02, 0x190ff97c, 0xf321390f, 0x5660ab71,
242
+ 0x4c42f79a, 0xe90365e4, 0x032da597, 0xa66c37e9,
243
+ 0xd29c5380, 0x77ddc1fe, 0x9df3018d, 0x38b293f3,
244
+ 0x7413c95f, 0xd1525b21, 0x3b7c9b52, 0x9e3d092c,
245
+ 0xeacd6d45, 0x4f8cff3b, 0xa5a23f48, 0x00e3ad36,
246
+ 0x3ce08a10, 0x99a1186e, 0x738fd81d, 0xd6ce4a63,
247
+ 0xa23e2e0a, 0x077fbc74, 0xed517c07, 0x4810ee79,
248
+ 0x04b1b4d5, 0xa1f026ab, 0x4bdee6d8, 0xee9f74a6,
249
+ 0x9a6f10cf, 0x3f2e82b1, 0xd50042c2, 0x7041d0bc,
250
+ 0xad060c8e, 0x08479ef0, 0xe2695e83, 0x4728ccfd,
251
+ 0x33d8a894, 0x96993aea, 0x7cb7fa99, 0xd9f668e7,
252
+ 0x9557324b, 0x3016a035, 0xda386046, 0x7f79f238,
253
+ 0x0b899651, 0xaec8042f, 0x44e6c45c, 0xe1a75622,
254
+ 0xdda47104, 0x78e5e37a, 0x92cb2309, 0x378ab177,
255
+ 0x437ad51e, 0xe63b4760, 0x0c158713, 0xa954156d,
256
+ 0xe5f54fc1, 0x40b4ddbf, 0xaa9a1dcc, 0x0fdb8fb2,
257
+ 0x7b2bebdb, 0xde6a79a5, 0x3444b9d6, 0x91052ba8
258
+ };
259
+ static const uint32_t table3_[256] = {
260
+ 0x00000000, 0xdd45aab8, 0xbf672381, 0x62228939,
261
+ 0x7b2231f3, 0xa6679b4b, 0xc4451272, 0x1900b8ca,
262
+ 0xf64463e6, 0x2b01c95e, 0x49234067, 0x9466eadf,
263
+ 0x8d665215, 0x5023f8ad, 0x32017194, 0xef44db2c,
264
+ 0xe964b13d, 0x34211b85, 0x560392bc, 0x8b463804,
265
+ 0x924680ce, 0x4f032a76, 0x2d21a34f, 0xf06409f7,
266
+ 0x1f20d2db, 0xc2657863, 0xa047f15a, 0x7d025be2,
267
+ 0x6402e328, 0xb9474990, 0xdb65c0a9, 0x06206a11,
268
+ 0xd725148b, 0x0a60be33, 0x6842370a, 0xb5079db2,
269
+ 0xac072578, 0x71428fc0, 0x136006f9, 0xce25ac41,
270
+ 0x2161776d, 0xfc24ddd5, 0x9e0654ec, 0x4343fe54,
271
+ 0x5a43469e, 0x8706ec26, 0xe524651f, 0x3861cfa7,
272
+ 0x3e41a5b6, 0xe3040f0e, 0x81268637, 0x5c632c8f,
273
+ 0x45639445, 0x98263efd, 0xfa04b7c4, 0x27411d7c,
274
+ 0xc805c650, 0x15406ce8, 0x7762e5d1, 0xaa274f69,
275
+ 0xb327f7a3, 0x6e625d1b, 0x0c40d422, 0xd1057e9a,
276
+ 0xaba65fe7, 0x76e3f55f, 0x14c17c66, 0xc984d6de,
277
+ 0xd0846e14, 0x0dc1c4ac, 0x6fe34d95, 0xb2a6e72d,
278
+ 0x5de23c01, 0x80a796b9, 0xe2851f80, 0x3fc0b538,
279
+ 0x26c00df2, 0xfb85a74a, 0x99a72e73, 0x44e284cb,
280
+ 0x42c2eeda, 0x9f874462, 0xfda5cd5b, 0x20e067e3,
281
+ 0x39e0df29, 0xe4a57591, 0x8687fca8, 0x5bc25610,
282
+ 0xb4868d3c, 0x69c32784, 0x0be1aebd, 0xd6a40405,
283
+ 0xcfa4bccf, 0x12e11677, 0x70c39f4e, 0xad8635f6,
284
+ 0x7c834b6c, 0xa1c6e1d4, 0xc3e468ed, 0x1ea1c255,
285
+ 0x07a17a9f, 0xdae4d027, 0xb8c6591e, 0x6583f3a6,
286
+ 0x8ac7288a, 0x57828232, 0x35a00b0b, 0xe8e5a1b3,
287
+ 0xf1e51979, 0x2ca0b3c1, 0x4e823af8, 0x93c79040,
288
+ 0x95e7fa51, 0x48a250e9, 0x2a80d9d0, 0xf7c57368,
289
+ 0xeec5cba2, 0x3380611a, 0x51a2e823, 0x8ce7429b,
290
+ 0x63a399b7, 0xbee6330f, 0xdcc4ba36, 0x0181108e,
291
+ 0x1881a844, 0xc5c402fc, 0xa7e68bc5, 0x7aa3217d,
292
+ 0x52a0c93f, 0x8fe56387, 0xedc7eabe, 0x30824006,
293
+ 0x2982f8cc, 0xf4c75274, 0x96e5db4d, 0x4ba071f5,
294
+ 0xa4e4aad9, 0x79a10061, 0x1b838958, 0xc6c623e0,
295
+ 0xdfc69b2a, 0x02833192, 0x60a1b8ab, 0xbde41213,
296
+ 0xbbc47802, 0x6681d2ba, 0x04a35b83, 0xd9e6f13b,
297
+ 0xc0e649f1, 0x1da3e349, 0x7f816a70, 0xa2c4c0c8,
298
+ 0x4d801be4, 0x90c5b15c, 0xf2e73865, 0x2fa292dd,
299
+ 0x36a22a17, 0xebe780af, 0x89c50996, 0x5480a32e,
300
+ 0x8585ddb4, 0x58c0770c, 0x3ae2fe35, 0xe7a7548d,
301
+ 0xfea7ec47, 0x23e246ff, 0x41c0cfc6, 0x9c85657e,
302
+ 0x73c1be52, 0xae8414ea, 0xcca69dd3, 0x11e3376b,
303
+ 0x08e38fa1, 0xd5a62519, 0xb784ac20, 0x6ac10698,
304
+ 0x6ce16c89, 0xb1a4c631, 0xd3864f08, 0x0ec3e5b0,
305
+ 0x17c35d7a, 0xca86f7c2, 0xa8a47efb, 0x75e1d443,
306
+ 0x9aa50f6f, 0x47e0a5d7, 0x25c22cee, 0xf8878656,
307
+ 0xe1873e9c, 0x3cc29424, 0x5ee01d1d, 0x83a5b7a5,
308
+ 0xf90696d8, 0x24433c60, 0x4661b559, 0x9b241fe1,
309
+ 0x8224a72b, 0x5f610d93, 0x3d4384aa, 0xe0062e12,
310
+ 0x0f42f53e, 0xd2075f86, 0xb025d6bf, 0x6d607c07,
311
+ 0x7460c4cd, 0xa9256e75, 0xcb07e74c, 0x16424df4,
312
+ 0x106227e5, 0xcd278d5d, 0xaf050464, 0x7240aedc,
313
+ 0x6b401616, 0xb605bcae, 0xd4273597, 0x09629f2f,
314
+ 0xe6264403, 0x3b63eebb, 0x59416782, 0x8404cd3a,
315
+ 0x9d0475f0, 0x4041df48, 0x22635671, 0xff26fcc9,
316
+ 0x2e238253, 0xf36628eb, 0x9144a1d2, 0x4c010b6a,
317
+ 0x5501b3a0, 0x88441918, 0xea669021, 0x37233a99,
318
+ 0xd867e1b5, 0x05224b0d, 0x6700c234, 0xba45688c,
319
+ 0xa345d046, 0x7e007afe, 0x1c22f3c7, 0xc167597f,
320
+ 0xc747336e, 0x1a0299d6, 0x782010ef, 0xa565ba57,
321
+ 0xbc65029d, 0x6120a825, 0x0302211c, 0xde478ba4,
322
+ 0x31035088, 0xec46fa30, 0x8e647309, 0x5321d9b1,
323
+ 0x4a21617b, 0x9764cbc3, 0xf54642fa, 0x2803e842
324
+ };
325
+
326
+ // Used to fetch a naturally-aligned 32-bit word in little endian byte-order
327
+ static inline uint32_t LE_LOAD32(const uint8_t *p) {
328
+ return DecodeFixed32(reinterpret_cast<const char*>(p));
329
+ }
330
+
331
+ #if defined(HAVE_SSE42) && (defined(__LP64__) || defined(_WIN64))
332
+ static inline uint64_t LE_LOAD64(const uint8_t *p) {
333
+ return DecodeFixed64(reinterpret_cast<const char*>(p));
334
+ }
335
+ #endif
336
+
337
+ static inline void Slow_CRC32(uint64_t* l, uint8_t const **p) {
338
+ uint32_t c = static_cast<uint32_t>(*l ^ LE_LOAD32(*p));
339
+ *p += 4;
340
+ *l = table3_[c & 0xff] ^
341
+ table2_[(c >> 8) & 0xff] ^
342
+ table1_[(c >> 16) & 0xff] ^
343
+ table0_[c >> 24];
344
+ // DO it twice.
345
+ c = static_cast<uint32_t>(*l ^ LE_LOAD32(*p));
346
+ *p += 4;
347
+ *l = table3_[c & 0xff] ^
348
+ table2_[(c >> 8) & 0xff] ^
349
+ table1_[(c >> 16) & 0xff] ^
350
+ table0_[c >> 24];
351
+ }
352
+
353
+ #if (!(defined(HAVE_POWER8) && defined(HAS_ALTIVEC))) && \
354
+ (!defined(HAVE_ARM64_CRC)) || \
355
+ defined(NO_THREEWAY_CRC32C)
356
+ static inline void Fast_CRC32(uint64_t* l, uint8_t const **p) {
357
+ #ifndef HAVE_SSE42
358
+ Slow_CRC32(l, p);
359
+ #elif defined(__LP64__) || defined(_WIN64)
360
+ *l = _mm_crc32_u64(*l, LE_LOAD64(*p));
361
+ *p += 8;
362
+ #else
363
+ *l = _mm_crc32_u32(static_cast<unsigned int>(*l), LE_LOAD32(*p));
364
+ *p += 4;
365
+ *l = _mm_crc32_u32(static_cast<unsigned int>(*l), LE_LOAD32(*p));
366
+ *p += 4;
367
+ #endif
368
+ }
369
+ #endif
370
+
371
+ template<void (*CRC32)(uint64_t*, uint8_t const**)>
372
+ uint32_t ExtendImpl(uint32_t crc, const char* buf, size_t size) {
373
+
374
+ const uint8_t *p = reinterpret_cast<const uint8_t *>(buf);
375
+ const uint8_t *e = p + size;
376
+ uint64_t l = crc ^ 0xffffffffu;
377
+
378
+ // Align n to (1 << m) byte boundary
379
+ #define ALIGN(n, m) ((n + ((1 << m) - 1)) & ~((1 << m) - 1))
380
+
381
+ #define STEP1 do { \
382
+ int c = (l & 0xff) ^ *p++; \
383
+ l = table0_[c] ^ (l >> 8); \
384
+ } while (0)
385
+
386
+
387
+ // Point x at first 16-byte aligned byte in string. This might be
388
+ // just past the end of the string.
389
+ const uintptr_t pval = reinterpret_cast<uintptr_t>(p);
390
+ const uint8_t* x = reinterpret_cast<const uint8_t*>(ALIGN(pval, 4));
391
+ if (x <= e) {
392
+ // Process bytes until finished or p is 16-byte aligned
393
+ while (p != x) {
394
+ STEP1;
395
+ }
396
+ }
397
+ // Process bytes 16 at a time
398
+ while ((e-p) >= 16) {
399
+ CRC32(&l, &p);
400
+ CRC32(&l, &p);
401
+ }
402
+ // Process bytes 8 at a time
403
+ while ((e-p) >= 8) {
404
+ CRC32(&l, &p);
405
+ }
406
+ // Process the last few bytes
407
+ while (p != e) {
408
+ STEP1;
409
+ }
410
+ #undef STEP1
411
+ #undef ALIGN
412
+ return static_cast<uint32_t>(l ^ 0xffffffffu);
413
+ }
414
+
415
+ // Detect if ARM64 CRC or not.
416
+ #ifndef HAVE_ARM64_CRC
417
+ // Detect if SS42 or not.
418
+ #ifndef HAVE_POWER8
419
+
420
+ static bool isSSE42() {
421
+ #ifndef HAVE_SSE42
422
+ return false;
423
+ #elif defined(__GNUC__) && defined(__x86_64__) && !defined(IOS_CROSS_COMPILE)
424
+ uint32_t c_;
425
+ __asm__("cpuid" : "=c"(c_) : "a"(1) : "ebx", "edx");
426
+ return c_ & (1U << 20); // copied from CpuId.h in Folly. Test SSE42
427
+ #elif defined(_WIN64)
428
+ int info[4];
429
+ __cpuidex(info, 0x00000001, 0);
430
+ return (info[2] & ((int)1 << 20)) != 0;
431
+ #else
432
+ return false;
433
+ #endif
434
+ }
435
+
436
+ static bool isPCLMULQDQ() {
437
+ #ifndef HAVE_SSE42
438
+ // in build_detect_platform we set this macro when both SSE42 and PCLMULQDQ are
439
+ // supported by compiler
440
+ return false;
441
+ #elif defined(__GNUC__) && defined(__x86_64__) && !defined(IOS_CROSS_COMPILE)
442
+ uint32_t c_;
443
+ __asm__("cpuid" : "=c"(c_) : "a"(1) : "ebx", "edx");
444
+ return c_ & (1U << 1); // PCLMULQDQ is in bit 1 (not bit 0)
445
+ #elif defined(_WIN64)
446
+ int info[4];
447
+ __cpuidex(info, 0x00000001, 0);
448
+ return (info[2] & ((int)1 << 1)) != 0;
449
+ #else
450
+ return false;
451
+ #endif
452
+ }
453
+
454
+ #endif // HAVE_POWER8
455
+ #endif // HAVE_ARM64_CRC
456
+
457
+ typedef uint32_t (*Function)(uint32_t, const char*, size_t);
458
+
459
+ #if defined(HAVE_POWER8) && defined(HAS_ALTIVEC)
460
+ uint32_t ExtendPPCImpl(uint32_t crc, const char *buf, size_t size) {
461
+ return crc32c_ppc(crc, (const unsigned char *)buf, size);
462
+ }
463
+
464
+ #if __linux__
465
+ static int arch_ppc_probe(void) {
466
+ arch_ppc_crc32 = 0;
467
+
468
+ #if defined(__powerpc64__) && defined(ROCKSDB_AUXV_GETAUXVAL_PRESENT)
469
+ if (getauxval(AT_HWCAP2) & PPC_FEATURE2_VEC_CRYPTO) arch_ppc_crc32 = 1;
470
+ #endif /* __powerpc64__ */
471
+
472
+ return arch_ppc_crc32;
473
+ }
474
+ #elif __FreeBSD__
475
+ static int arch_ppc_probe(void) {
476
+ unsigned long cpufeatures;
477
+ arch_ppc_crc32 = 0;
478
+
479
+ #if defined(__powerpc64__)
480
+ elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures));
481
+ if (cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO) arch_ppc_crc32 = 1;
482
+ #endif /* __powerpc64__ */
483
+
484
+ return arch_ppc_crc32;
485
+ }
486
+ #endif // __linux__
487
+
488
+ static bool isAltiVec() {
489
+ if (arch_ppc_probe()) {
490
+ return true;
491
+ } else {
492
+ return false;
493
+ }
494
+ }
495
+ #endif
496
+
497
+ #if defined(HAVE_ARM64_CRC)
498
+ uint32_t ExtendARMImpl(uint32_t crc, const char *buf, size_t size) {
499
+ return crc32c_arm64(crc, (const unsigned char *)buf, size);
500
+ }
501
+ #endif
502
+
503
+ std::string IsFastCrc32Supported() {
504
+ bool has_fast_crc = false;
505
+ std::string fast_zero_msg;
506
+ std::string arch;
507
+ #ifdef HAVE_POWER8
508
+ #ifdef HAS_ALTIVEC
509
+ if (arch_ppc_probe()) {
510
+ has_fast_crc = true;
511
+ arch = "PPC";
512
+ }
513
+ #else
514
+ has_fast_crc = false;
515
+ arch = "PPC";
516
+ #endif
517
+ #elif defined(HAVE_ARM64_CRC)
518
+ if (crc32c_runtime_check()) {
519
+ has_fast_crc = true;
520
+ arch = "Arm64";
521
+ pmull_runtime_flag = crc32c_pmull_runtime_check();
522
+ } else {
523
+ has_fast_crc = false;
524
+ arch = "Arm64";
525
+ }
526
+ #else
527
+ has_fast_crc = isSSE42();
528
+ arch = "x86";
529
+ #endif
530
+ if (has_fast_crc) {
531
+ fast_zero_msg.append("Supported on " + arch);
532
+ }
533
+ else {
534
+ fast_zero_msg.append("Not supported on " + arch);
535
+ }
536
+ return fast_zero_msg;
537
+ }
538
+
539
+
540
+ /*
541
+ * Copyright 2016 Ferry Toth, Exalon Delft BV, The Netherlands
542
+ * This software is provided 'as-is', without any express or implied
543
+ * warranty. In no event will the author be held liable for any damages
544
+ * arising from the use of this software.
545
+ * Permission is granted to anyone to use this software for any purpose,
546
+ * including commercial applications, and to alter it and redistribute it
547
+ * freely, subject to the following restrictions:
548
+ * 1. The origin of this software must not be misrepresented; you must not
549
+ * claim that you wrote the original software. If you use this software
550
+ * in a product, an acknowledgment in the product documentation would be
551
+ * appreciated but is not required.
552
+ * 2. Altered source versions must be plainly marked as such, and must not be
553
+ * misrepresented as being the original software.
554
+ * 3. This notice may not be removed or altered from any source distribution.
555
+ * Ferry Toth
556
+ * ftoth@exalondelft.nl
557
+ *
558
+ * https://github.com/htot/crc32c
559
+ *
560
+ * Modified by Facebook
561
+ *
562
+ * Original intel whitepaper:
563
+ * "Fast CRC Computation for iSCSI Polynomial Using CRC32 Instruction"
564
+ * https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/crc-iscsi-polynomial-crc32-instruction-paper.pdf
565
+ *
566
+ * This version is from the folly library, created by Dave Watson <davejwatson@fb.com>
567
+ *
568
+ */
569
+ #if defined HAVE_SSE42 && defined HAVE_PCLMUL
570
+
571
+ #define CRCtriplet(crc, buf, offset) \
572
+ crc##0 = _mm_crc32_u64(crc##0, *(buf##0 + offset)); \
573
+ crc##1 = _mm_crc32_u64(crc##1, *(buf##1 + offset)); \
574
+ crc##2 = _mm_crc32_u64(crc##2, *(buf##2 + offset));
575
+
576
+ #define CRCduplet(crc, buf, offset) \
577
+ crc##0 = _mm_crc32_u64(crc##0, *(buf##0 + offset)); \
578
+ crc##1 = _mm_crc32_u64(crc##1, *(buf##1 + offset));
579
+
580
+ #define CRCsinglet(crc, buf, offset) \
581
+ crc = _mm_crc32_u64(crc, *(uint64_t*)(buf + offset));
582
+
583
+
584
+ // Numbers taken directly from intel whitepaper.
585
+ // clang-format off
586
+ const uint64_t clmul_constants[] = {
587
+ 0x14cd00bd6, 0x105ec76f0, 0x0ba4fc28e, 0x14cd00bd6,
588
+ 0x1d82c63da, 0x0f20c0dfe, 0x09e4addf8, 0x0ba4fc28e,
589
+ 0x039d3b296, 0x1384aa63a, 0x102f9b8a2, 0x1d82c63da,
590
+ 0x14237f5e6, 0x01c291d04, 0x00d3b6092, 0x09e4addf8,
591
+ 0x0c96cfdc0, 0x0740eef02, 0x18266e456, 0x039d3b296,
592
+ 0x0daece73e, 0x0083a6eec, 0x0ab7aff2a, 0x102f9b8a2,
593
+ 0x1248ea574, 0x1c1733996, 0x083348832, 0x14237f5e6,
594
+ 0x12c743124, 0x02ad91c30, 0x0b9e02b86, 0x00d3b6092,
595
+ 0x018b33a4e, 0x06992cea2, 0x1b331e26a, 0x0c96cfdc0,
596
+ 0x17d35ba46, 0x07e908048, 0x1bf2e8b8a, 0x18266e456,
597
+ 0x1a3e0968a, 0x11ed1f9d8, 0x0ce7f39f4, 0x0daece73e,
598
+ 0x061d82e56, 0x0f1d0f55e, 0x0d270f1a2, 0x0ab7aff2a,
599
+ 0x1c3f5f66c, 0x0a87ab8a8, 0x12ed0daac, 0x1248ea574,
600
+ 0x065863b64, 0x08462d800, 0x11eef4f8e, 0x083348832,
601
+ 0x1ee54f54c, 0x071d111a8, 0x0b3e32c28, 0x12c743124,
602
+ 0x0064f7f26, 0x0ffd852c6, 0x0dd7e3b0c, 0x0b9e02b86,
603
+ 0x0f285651c, 0x0dcb17aa4, 0x010746f3c, 0x018b33a4e,
604
+ 0x1c24afea4, 0x0f37c5aee, 0x0271d9844, 0x1b331e26a,
605
+ 0x08e766a0c, 0x06051d5a2, 0x093a5f730, 0x17d35ba46,
606
+ 0x06cb08e5c, 0x11d5ca20e, 0x06b749fb2, 0x1bf2e8b8a,
607
+ 0x1167f94f2, 0x021f3d99c, 0x0cec3662e, 0x1a3e0968a,
608
+ 0x19329634a, 0x08f158014, 0x0e6fc4e6a, 0x0ce7f39f4,
609
+ 0x08227bb8a, 0x1a5e82106, 0x0b0cd4768, 0x061d82e56,
610
+ 0x13c2b89c4, 0x188815ab2, 0x0d7a4825c, 0x0d270f1a2,
611
+ 0x10f5ff2ba, 0x105405f3e, 0x00167d312, 0x1c3f5f66c,
612
+ 0x0f6076544, 0x0e9adf796, 0x026f6a60a, 0x12ed0daac,
613
+ 0x1a2adb74e, 0x096638b34, 0x19d34af3a, 0x065863b64,
614
+ 0x049c3cc9c, 0x1e50585a0, 0x068bce87a, 0x11eef4f8e,
615
+ 0x1524fa6c6, 0x19f1c69dc, 0x16cba8aca, 0x1ee54f54c,
616
+ 0x042d98888, 0x12913343e, 0x1329d9f7e, 0x0b3e32c28,
617
+ 0x1b1c69528, 0x088f25a3a, 0x02178513a, 0x0064f7f26,
618
+ 0x0e0ac139e, 0x04e36f0b0, 0x0170076fa, 0x0dd7e3b0c,
619
+ 0x141a1a2e2, 0x0bd6f81f8, 0x16ad828b4, 0x0f285651c,
620
+ 0x041d17b64, 0x19425cbba, 0x1fae1cc66, 0x010746f3c,
621
+ 0x1a75b4b00, 0x18db37e8a, 0x0f872e54c, 0x1c24afea4,
622
+ 0x01e41e9fc, 0x04c144932, 0x086d8e4d2, 0x0271d9844,
623
+ 0x160f7af7a, 0x052148f02, 0x05bb8f1bc, 0x08e766a0c,
624
+ 0x0a90fd27a, 0x0a3c6f37a, 0x0b3af077a, 0x093a5f730,
625
+ 0x04984d782, 0x1d22c238e, 0x0ca6ef3ac, 0x06cb08e5c,
626
+ 0x0234e0b26, 0x063ded06a, 0x1d88abd4a, 0x06b749fb2,
627
+ 0x04597456a, 0x04d56973c, 0x0e9e28eb4, 0x1167f94f2,
628
+ 0x07b3ff57a, 0x19385bf2e, 0x0c9c8b782, 0x0cec3662e,
629
+ 0x13a9cba9e, 0x0e417f38a, 0x093e106a4, 0x19329634a,
630
+ 0x167001a9c, 0x14e727980, 0x1ddffc5d4, 0x0e6fc4e6a,
631
+ 0x00df04680, 0x0d104b8fc, 0x02342001e, 0x08227bb8a,
632
+ 0x00a2a8d7e, 0x05b397730, 0x168763fa6, 0x0b0cd4768,
633
+ 0x1ed5a407a, 0x0e78eb416, 0x0d2c3ed1a, 0x13c2b89c4,
634
+ 0x0995a5724, 0x1641378f0, 0x19b1afbc4, 0x0d7a4825c,
635
+ 0x109ffedc0, 0x08d96551c, 0x0f2271e60, 0x10f5ff2ba,
636
+ 0x00b0bf8ca, 0x00bf80dd2, 0x123888b7a, 0x00167d312,
637
+ 0x1e888f7dc, 0x18dcddd1c, 0x002ee03b2, 0x0f6076544,
638
+ 0x183e8d8fe, 0x06a45d2b2, 0x133d7a042, 0x026f6a60a,
639
+ 0x116b0f50c, 0x1dd3e10e8, 0x05fabe670, 0x1a2adb74e,
640
+ 0x130004488, 0x0de87806c, 0x000bcf5f6, 0x19d34af3a,
641
+ 0x18f0c7078, 0x014338754, 0x017f27698, 0x049c3cc9c,
642
+ 0x058ca5f00, 0x15e3e77ee, 0x1af900c24, 0x068bce87a,
643
+ 0x0b5cfca28, 0x0dd07448e, 0x0ded288f8, 0x1524fa6c6,
644
+ 0x059f229bc, 0x1d8048348, 0x06d390dec, 0x16cba8aca,
645
+ 0x037170390, 0x0a3e3e02c, 0x06353c1cc, 0x042d98888,
646
+ 0x0c4584f5c, 0x0d73c7bea, 0x1f16a3418, 0x1329d9f7e,
647
+ 0x0531377e2, 0x185137662, 0x1d8d9ca7c, 0x1b1c69528,
648
+ 0x0b25b29f2, 0x18a08b5bc, 0x19fb2a8b0, 0x02178513a,
649
+ 0x1a08fe6ac, 0x1da758ae0, 0x045cddf4e, 0x0e0ac139e,
650
+ 0x1a91647f2, 0x169cf9eb0, 0x1a0f717c4, 0x0170076fa,
651
+ };
652
+
653
+ // Compute the crc32c value for buffer smaller than 8
654
+ #ifdef ROCKSDB_UBSAN_RUN
655
+ #if defined(__clang__)
656
+ __attribute__((__no_sanitize__("alignment")))
657
+ #elif defined(__GNUC__)
658
+ __attribute__((__no_sanitize_undefined__))
659
+ #endif
660
+ #endif
661
+ inline void align_to_8(
662
+ size_t len,
663
+ uint64_t& crc0, // crc so far, updated on return
664
+ const unsigned char*& next) { // next data pointer, updated on return
665
+ uint32_t crc32bit = static_cast<uint32_t>(crc0);
666
+ if (len & 0x04) {
667
+ crc32bit = _mm_crc32_u32(crc32bit, *(uint32_t*)next);
668
+ next += sizeof(uint32_t);
669
+ }
670
+ if (len & 0x02) {
671
+ crc32bit = _mm_crc32_u16(crc32bit, *(uint16_t*)next);
672
+ next += sizeof(uint16_t);
673
+ }
674
+ if (len & 0x01) {
675
+ crc32bit = _mm_crc32_u8(crc32bit, *(next));
676
+ next++;
677
+ }
678
+ crc0 = crc32bit;
679
+ }
680
+
681
+ //
682
+ // CombineCRC performs pclmulqdq multiplication of 2 partial CRC's and a well
683
+ // chosen constant and xor's these with the remaining CRC.
684
+ //
685
+ inline uint64_t CombineCRC(
686
+ size_t block_size,
687
+ uint64_t crc0,
688
+ uint64_t crc1,
689
+ uint64_t crc2,
690
+ const uint64_t* next2) {
691
+ const auto multiplier =
692
+ *(reinterpret_cast<const __m128i*>(clmul_constants) + block_size - 1);
693
+ const auto crc0_xmm = _mm_set_epi64x(0, crc0);
694
+ const auto res0 = _mm_clmulepi64_si128(crc0_xmm, multiplier, 0x00);
695
+ const auto crc1_xmm = _mm_set_epi64x(0, crc1);
696
+ const auto res1 = _mm_clmulepi64_si128(crc1_xmm, multiplier, 0x10);
697
+ const auto res = _mm_xor_si128(res0, res1);
698
+ crc0 = _mm_cvtsi128_si64(res);
699
+ crc0 = crc0 ^ *((uint64_t*)next2 - 1);
700
+ crc2 = _mm_crc32_u64(crc2, crc0);
701
+ return crc2;
702
+ }
703
+
704
+ // Compute CRC-32C using the Intel hardware instruction.
705
+ #ifdef ROCKSDB_UBSAN_RUN
706
+ #if defined(__clang__)
707
+ __attribute__((__no_sanitize__("alignment")))
708
+ #elif defined(__GNUC__)
709
+ __attribute__((__no_sanitize_undefined__))
710
+ #endif
711
+ #endif
712
+ uint32_t crc32c_3way(uint32_t crc, const char* buf, size_t len) {
713
+ const unsigned char* next = (const unsigned char*)buf;
714
+ uint64_t count;
715
+ uint64_t crc0, crc1, crc2;
716
+ crc0 = crc ^ 0xffffffffu;
717
+
718
+
719
+ if (len >= 8) {
720
+ // if len > 216 then align and use triplets
721
+ if (len > 216) {
722
+ {
723
+ // Work on the bytes (< 8) before the first 8-byte alignment addr starts
724
+ uint64_t align_bytes = (8 - (uintptr_t)next) & 7;
725
+ len -= align_bytes;
726
+ align_to_8(align_bytes, crc0, next);
727
+ }
728
+
729
+ // Now work on the remaining blocks
730
+ count = len / 24; // number of triplets
731
+ len %= 24; // bytes remaining
732
+ uint64_t n = count >> 7; // #blocks = first block + full blocks
733
+ uint64_t block_size = count & 127;
734
+ if (block_size == 0) {
735
+ block_size = 128;
736
+ } else {
737
+ n++;
738
+ }
739
+ // points to the first byte of the next block
740
+ const uint64_t* next0 = (uint64_t*)next + block_size;
741
+ const uint64_t* next1 = next0 + block_size;
742
+ const uint64_t* next2 = next1 + block_size;
743
+
744
+ crc1 = crc2 = 0;
745
+ // Use Duff's device, a for() loop inside a switch()
746
+ // statement. This needs to execute at least once, round len
747
+ // down to nearest triplet multiple
748
+ switch (block_size) {
749
+ case 128:
750
+ do {
751
+ // jumps here for a full block of len 128
752
+ CRCtriplet(crc, next, -128);
753
+ FALLTHROUGH_INTENDED;
754
+ case 127:
755
+ // jumps here or below for the first block smaller
756
+ CRCtriplet(crc, next, -127);
757
+ FALLTHROUGH_INTENDED;
758
+ case 126:
759
+ CRCtriplet(crc, next, -126); // than 128
760
+ FALLTHROUGH_INTENDED;
761
+ case 125:
762
+ CRCtriplet(crc, next, -125);
763
+ FALLTHROUGH_INTENDED;
764
+ case 124:
765
+ CRCtriplet(crc, next, -124);
766
+ FALLTHROUGH_INTENDED;
767
+ case 123:
768
+ CRCtriplet(crc, next, -123);
769
+ FALLTHROUGH_INTENDED;
770
+ case 122:
771
+ CRCtriplet(crc, next, -122);
772
+ FALLTHROUGH_INTENDED;
773
+ case 121:
774
+ CRCtriplet(crc, next, -121);
775
+ FALLTHROUGH_INTENDED;
776
+ case 120:
777
+ CRCtriplet(crc, next, -120);
778
+ FALLTHROUGH_INTENDED;
779
+ case 119:
780
+ CRCtriplet(crc, next, -119);
781
+ FALLTHROUGH_INTENDED;
782
+ case 118:
783
+ CRCtriplet(crc, next, -118);
784
+ FALLTHROUGH_INTENDED;
785
+ case 117:
786
+ CRCtriplet(crc, next, -117);
787
+ FALLTHROUGH_INTENDED;
788
+ case 116:
789
+ CRCtriplet(crc, next, -116);
790
+ FALLTHROUGH_INTENDED;
791
+ case 115:
792
+ CRCtriplet(crc, next, -115);
793
+ FALLTHROUGH_INTENDED;
794
+ case 114:
795
+ CRCtriplet(crc, next, -114);
796
+ FALLTHROUGH_INTENDED;
797
+ case 113:
798
+ CRCtriplet(crc, next, -113);
799
+ FALLTHROUGH_INTENDED;
800
+ case 112:
801
+ CRCtriplet(crc, next, -112);
802
+ FALLTHROUGH_INTENDED;
803
+ case 111:
804
+ CRCtriplet(crc, next, -111);
805
+ FALLTHROUGH_INTENDED;
806
+ case 110:
807
+ CRCtriplet(crc, next, -110);
808
+ FALLTHROUGH_INTENDED;
809
+ case 109:
810
+ CRCtriplet(crc, next, -109);
811
+ FALLTHROUGH_INTENDED;
812
+ case 108:
813
+ CRCtriplet(crc, next, -108);
814
+ FALLTHROUGH_INTENDED;
815
+ case 107:
816
+ CRCtriplet(crc, next, -107);
817
+ FALLTHROUGH_INTENDED;
818
+ case 106:
819
+ CRCtriplet(crc, next, -106);
820
+ FALLTHROUGH_INTENDED;
821
+ case 105:
822
+ CRCtriplet(crc, next, -105);
823
+ FALLTHROUGH_INTENDED;
824
+ case 104:
825
+ CRCtriplet(crc, next, -104);
826
+ FALLTHROUGH_INTENDED;
827
+ case 103:
828
+ CRCtriplet(crc, next, -103);
829
+ FALLTHROUGH_INTENDED;
830
+ case 102:
831
+ CRCtriplet(crc, next, -102);
832
+ FALLTHROUGH_INTENDED;
833
+ case 101:
834
+ CRCtriplet(crc, next, -101);
835
+ FALLTHROUGH_INTENDED;
836
+ case 100:
837
+ CRCtriplet(crc, next, -100);
838
+ FALLTHROUGH_INTENDED;
839
+ case 99:
840
+ CRCtriplet(crc, next, -99);
841
+ FALLTHROUGH_INTENDED;
842
+ case 98:
843
+ CRCtriplet(crc, next, -98);
844
+ FALLTHROUGH_INTENDED;
845
+ case 97:
846
+ CRCtriplet(crc, next, -97);
847
+ FALLTHROUGH_INTENDED;
848
+ case 96:
849
+ CRCtriplet(crc, next, -96);
850
+ FALLTHROUGH_INTENDED;
851
+ case 95:
852
+ CRCtriplet(crc, next, -95);
853
+ FALLTHROUGH_INTENDED;
854
+ case 94:
855
+ CRCtriplet(crc, next, -94);
856
+ FALLTHROUGH_INTENDED;
857
+ case 93:
858
+ CRCtriplet(crc, next, -93);
859
+ FALLTHROUGH_INTENDED;
860
+ case 92:
861
+ CRCtriplet(crc, next, -92);
862
+ FALLTHROUGH_INTENDED;
863
+ case 91:
864
+ CRCtriplet(crc, next, -91);
865
+ FALLTHROUGH_INTENDED;
866
+ case 90:
867
+ CRCtriplet(crc, next, -90);
868
+ FALLTHROUGH_INTENDED;
869
+ case 89:
870
+ CRCtriplet(crc, next, -89);
871
+ FALLTHROUGH_INTENDED;
872
+ case 88:
873
+ CRCtriplet(crc, next, -88);
874
+ FALLTHROUGH_INTENDED;
875
+ case 87:
876
+ CRCtriplet(crc, next, -87);
877
+ FALLTHROUGH_INTENDED;
878
+ case 86:
879
+ CRCtriplet(crc, next, -86);
880
+ FALLTHROUGH_INTENDED;
881
+ case 85:
882
+ CRCtriplet(crc, next, -85);
883
+ FALLTHROUGH_INTENDED;
884
+ case 84:
885
+ CRCtriplet(crc, next, -84);
886
+ FALLTHROUGH_INTENDED;
887
+ case 83:
888
+ CRCtriplet(crc, next, -83);
889
+ FALLTHROUGH_INTENDED;
890
+ case 82:
891
+ CRCtriplet(crc, next, -82);
892
+ FALLTHROUGH_INTENDED;
893
+ case 81:
894
+ CRCtriplet(crc, next, -81);
895
+ FALLTHROUGH_INTENDED;
896
+ case 80:
897
+ CRCtriplet(crc, next, -80);
898
+ FALLTHROUGH_INTENDED;
899
+ case 79:
900
+ CRCtriplet(crc, next, -79);
901
+ FALLTHROUGH_INTENDED;
902
+ case 78:
903
+ CRCtriplet(crc, next, -78);
904
+ FALLTHROUGH_INTENDED;
905
+ case 77:
906
+ CRCtriplet(crc, next, -77);
907
+ FALLTHROUGH_INTENDED;
908
+ case 76:
909
+ CRCtriplet(crc, next, -76);
910
+ FALLTHROUGH_INTENDED;
911
+ case 75:
912
+ CRCtriplet(crc, next, -75);
913
+ FALLTHROUGH_INTENDED;
914
+ case 74:
915
+ CRCtriplet(crc, next, -74);
916
+ FALLTHROUGH_INTENDED;
917
+ case 73:
918
+ CRCtriplet(crc, next, -73);
919
+ FALLTHROUGH_INTENDED;
920
+ case 72:
921
+ CRCtriplet(crc, next, -72);
922
+ FALLTHROUGH_INTENDED;
923
+ case 71:
924
+ CRCtriplet(crc, next, -71);
925
+ FALLTHROUGH_INTENDED;
926
+ case 70:
927
+ CRCtriplet(crc, next, -70);
928
+ FALLTHROUGH_INTENDED;
929
+ case 69:
930
+ CRCtriplet(crc, next, -69);
931
+ FALLTHROUGH_INTENDED;
932
+ case 68:
933
+ CRCtriplet(crc, next, -68);
934
+ FALLTHROUGH_INTENDED;
935
+ case 67:
936
+ CRCtriplet(crc, next, -67);
937
+ FALLTHROUGH_INTENDED;
938
+ case 66:
939
+ CRCtriplet(crc, next, -66);
940
+ FALLTHROUGH_INTENDED;
941
+ case 65:
942
+ CRCtriplet(crc, next, -65);
943
+ FALLTHROUGH_INTENDED;
944
+ case 64:
945
+ CRCtriplet(crc, next, -64);
946
+ FALLTHROUGH_INTENDED;
947
+ case 63:
948
+ CRCtriplet(crc, next, -63);
949
+ FALLTHROUGH_INTENDED;
950
+ case 62:
951
+ CRCtriplet(crc, next, -62);
952
+ FALLTHROUGH_INTENDED;
953
+ case 61:
954
+ CRCtriplet(crc, next, -61);
955
+ FALLTHROUGH_INTENDED;
956
+ case 60:
957
+ CRCtriplet(crc, next, -60);
958
+ FALLTHROUGH_INTENDED;
959
+ case 59:
960
+ CRCtriplet(crc, next, -59);
961
+ FALLTHROUGH_INTENDED;
962
+ case 58:
963
+ CRCtriplet(crc, next, -58);
964
+ FALLTHROUGH_INTENDED;
965
+ case 57:
966
+ CRCtriplet(crc, next, -57);
967
+ FALLTHROUGH_INTENDED;
968
+ case 56:
969
+ CRCtriplet(crc, next, -56);
970
+ FALLTHROUGH_INTENDED;
971
+ case 55:
972
+ CRCtriplet(crc, next, -55);
973
+ FALLTHROUGH_INTENDED;
974
+ case 54:
975
+ CRCtriplet(crc, next, -54);
976
+ FALLTHROUGH_INTENDED;
977
+ case 53:
978
+ CRCtriplet(crc, next, -53);
979
+ FALLTHROUGH_INTENDED;
980
+ case 52:
981
+ CRCtriplet(crc, next, -52);
982
+ FALLTHROUGH_INTENDED;
983
+ case 51:
984
+ CRCtriplet(crc, next, -51);
985
+ FALLTHROUGH_INTENDED;
986
+ case 50:
987
+ CRCtriplet(crc, next, -50);
988
+ FALLTHROUGH_INTENDED;
989
+ case 49:
990
+ CRCtriplet(crc, next, -49);
991
+ FALLTHROUGH_INTENDED;
992
+ case 48:
993
+ CRCtriplet(crc, next, -48);
994
+ FALLTHROUGH_INTENDED;
995
+ case 47:
996
+ CRCtriplet(crc, next, -47);
997
+ FALLTHROUGH_INTENDED;
998
+ case 46:
999
+ CRCtriplet(crc, next, -46);
1000
+ FALLTHROUGH_INTENDED;
1001
+ case 45:
1002
+ CRCtriplet(crc, next, -45);
1003
+ FALLTHROUGH_INTENDED;
1004
+ case 44:
1005
+ CRCtriplet(crc, next, -44);
1006
+ FALLTHROUGH_INTENDED;
1007
+ case 43:
1008
+ CRCtriplet(crc, next, -43);
1009
+ FALLTHROUGH_INTENDED;
1010
+ case 42:
1011
+ CRCtriplet(crc, next, -42);
1012
+ FALLTHROUGH_INTENDED;
1013
+ case 41:
1014
+ CRCtriplet(crc, next, -41);
1015
+ FALLTHROUGH_INTENDED;
1016
+ case 40:
1017
+ CRCtriplet(crc, next, -40);
1018
+ FALLTHROUGH_INTENDED;
1019
+ case 39:
1020
+ CRCtriplet(crc, next, -39);
1021
+ FALLTHROUGH_INTENDED;
1022
+ case 38:
1023
+ CRCtriplet(crc, next, -38);
1024
+ FALLTHROUGH_INTENDED;
1025
+ case 37:
1026
+ CRCtriplet(crc, next, -37);
1027
+ FALLTHROUGH_INTENDED;
1028
+ case 36:
1029
+ CRCtriplet(crc, next, -36);
1030
+ FALLTHROUGH_INTENDED;
1031
+ case 35:
1032
+ CRCtriplet(crc, next, -35);
1033
+ FALLTHROUGH_INTENDED;
1034
+ case 34:
1035
+ CRCtriplet(crc, next, -34);
1036
+ FALLTHROUGH_INTENDED;
1037
+ case 33:
1038
+ CRCtriplet(crc, next, -33);
1039
+ FALLTHROUGH_INTENDED;
1040
+ case 32:
1041
+ CRCtriplet(crc, next, -32);
1042
+ FALLTHROUGH_INTENDED;
1043
+ case 31:
1044
+ CRCtriplet(crc, next, -31);
1045
+ FALLTHROUGH_INTENDED;
1046
+ case 30:
1047
+ CRCtriplet(crc, next, -30);
1048
+ FALLTHROUGH_INTENDED;
1049
+ case 29:
1050
+ CRCtriplet(crc, next, -29);
1051
+ FALLTHROUGH_INTENDED;
1052
+ case 28:
1053
+ CRCtriplet(crc, next, -28);
1054
+ FALLTHROUGH_INTENDED;
1055
+ case 27:
1056
+ CRCtriplet(crc, next, -27);
1057
+ FALLTHROUGH_INTENDED;
1058
+ case 26:
1059
+ CRCtriplet(crc, next, -26);
1060
+ FALLTHROUGH_INTENDED;
1061
+ case 25:
1062
+ CRCtriplet(crc, next, -25);
1063
+ FALLTHROUGH_INTENDED;
1064
+ case 24:
1065
+ CRCtriplet(crc, next, -24);
1066
+ FALLTHROUGH_INTENDED;
1067
+ case 23:
1068
+ CRCtriplet(crc, next, -23);
1069
+ FALLTHROUGH_INTENDED;
1070
+ case 22:
1071
+ CRCtriplet(crc, next, -22);
1072
+ FALLTHROUGH_INTENDED;
1073
+ case 21:
1074
+ CRCtriplet(crc, next, -21);
1075
+ FALLTHROUGH_INTENDED;
1076
+ case 20:
1077
+ CRCtriplet(crc, next, -20);
1078
+ FALLTHROUGH_INTENDED;
1079
+ case 19:
1080
+ CRCtriplet(crc, next, -19);
1081
+ FALLTHROUGH_INTENDED;
1082
+ case 18:
1083
+ CRCtriplet(crc, next, -18);
1084
+ FALLTHROUGH_INTENDED;
1085
+ case 17:
1086
+ CRCtriplet(crc, next, -17);
1087
+ FALLTHROUGH_INTENDED;
1088
+ case 16:
1089
+ CRCtriplet(crc, next, -16);
1090
+ FALLTHROUGH_INTENDED;
1091
+ case 15:
1092
+ CRCtriplet(crc, next, -15);
1093
+ FALLTHROUGH_INTENDED;
1094
+ case 14:
1095
+ CRCtriplet(crc, next, -14);
1096
+ FALLTHROUGH_INTENDED;
1097
+ case 13:
1098
+ CRCtriplet(crc, next, -13);
1099
+ FALLTHROUGH_INTENDED;
1100
+ case 12:
1101
+ CRCtriplet(crc, next, -12);
1102
+ FALLTHROUGH_INTENDED;
1103
+ case 11:
1104
+ CRCtriplet(crc, next, -11);
1105
+ FALLTHROUGH_INTENDED;
1106
+ case 10:
1107
+ CRCtriplet(crc, next, -10);
1108
+ FALLTHROUGH_INTENDED;
1109
+ case 9:
1110
+ CRCtriplet(crc, next, -9);
1111
+ FALLTHROUGH_INTENDED;
1112
+ case 8:
1113
+ CRCtriplet(crc, next, -8);
1114
+ FALLTHROUGH_INTENDED;
1115
+ case 7:
1116
+ CRCtriplet(crc, next, -7);
1117
+ FALLTHROUGH_INTENDED;
1118
+ case 6:
1119
+ CRCtriplet(crc, next, -6);
1120
+ FALLTHROUGH_INTENDED;
1121
+ case 5:
1122
+ CRCtriplet(crc, next, -5);
1123
+ FALLTHROUGH_INTENDED;
1124
+ case 4:
1125
+ CRCtriplet(crc, next, -4);
1126
+ FALLTHROUGH_INTENDED;
1127
+ case 3:
1128
+ CRCtriplet(crc, next, -3);
1129
+ FALLTHROUGH_INTENDED;
1130
+ case 2:
1131
+ CRCtriplet(crc, next, -2);
1132
+ FALLTHROUGH_INTENDED;
1133
+ case 1:
1134
+ CRCduplet(crc, next, -1); // the final triplet is actually only 2
1135
+ //{ CombineCRC(); }
1136
+ crc0 = CombineCRC(block_size, crc0, crc1, crc2, next2);
1137
+ if (--n > 0) {
1138
+ crc1 = crc2 = 0;
1139
+ block_size = 128;
1140
+ // points to the first byte of the next block
1141
+ next0 = next2 + 128;
1142
+ next1 = next0 + 128; // from here on all blocks are 128 long
1143
+ next2 = next1 + 128;
1144
+ }
1145
+ FALLTHROUGH_INTENDED;
1146
+ case 0:;
1147
+ } while (n > 0);
1148
+ }
1149
+ next = (const unsigned char*)next2;
1150
+ }
1151
+ uint64_t count2 = len >> 3; // 216 of less bytes is 27 or less singlets
1152
+ len = len & 7;
1153
+ next += (count2 * 8);
1154
+ switch (count2) {
1155
+ case 27:
1156
+ CRCsinglet(crc0, next, -27 * 8);
1157
+ FALLTHROUGH_INTENDED;
1158
+ case 26:
1159
+ CRCsinglet(crc0, next, -26 * 8);
1160
+ FALLTHROUGH_INTENDED;
1161
+ case 25:
1162
+ CRCsinglet(crc0, next, -25 * 8);
1163
+ FALLTHROUGH_INTENDED;
1164
+ case 24:
1165
+ CRCsinglet(crc0, next, -24 * 8);
1166
+ FALLTHROUGH_INTENDED;
1167
+ case 23:
1168
+ CRCsinglet(crc0, next, -23 * 8);
1169
+ FALLTHROUGH_INTENDED;
1170
+ case 22:
1171
+ CRCsinglet(crc0, next, -22 * 8);
1172
+ FALLTHROUGH_INTENDED;
1173
+ case 21:
1174
+ CRCsinglet(crc0, next, -21 * 8);
1175
+ FALLTHROUGH_INTENDED;
1176
+ case 20:
1177
+ CRCsinglet(crc0, next, -20 * 8);
1178
+ FALLTHROUGH_INTENDED;
1179
+ case 19:
1180
+ CRCsinglet(crc0, next, -19 * 8);
1181
+ FALLTHROUGH_INTENDED;
1182
+ case 18:
1183
+ CRCsinglet(crc0, next, -18 * 8);
1184
+ FALLTHROUGH_INTENDED;
1185
+ case 17:
1186
+ CRCsinglet(crc0, next, -17 * 8);
1187
+ FALLTHROUGH_INTENDED;
1188
+ case 16:
1189
+ CRCsinglet(crc0, next, -16 * 8);
1190
+ FALLTHROUGH_INTENDED;
1191
+ case 15:
1192
+ CRCsinglet(crc0, next, -15 * 8);
1193
+ FALLTHROUGH_INTENDED;
1194
+ case 14:
1195
+ CRCsinglet(crc0, next, -14 * 8);
1196
+ FALLTHROUGH_INTENDED;
1197
+ case 13:
1198
+ CRCsinglet(crc0, next, -13 * 8);
1199
+ FALLTHROUGH_INTENDED;
1200
+ case 12:
1201
+ CRCsinglet(crc0, next, -12 * 8);
1202
+ FALLTHROUGH_INTENDED;
1203
+ case 11:
1204
+ CRCsinglet(crc0, next, -11 * 8);
1205
+ FALLTHROUGH_INTENDED;
1206
+ case 10:
1207
+ CRCsinglet(crc0, next, -10 * 8);
1208
+ FALLTHROUGH_INTENDED;
1209
+ case 9:
1210
+ CRCsinglet(crc0, next, -9 * 8);
1211
+ FALLTHROUGH_INTENDED;
1212
+ case 8:
1213
+ CRCsinglet(crc0, next, -8 * 8);
1214
+ FALLTHROUGH_INTENDED;
1215
+ case 7:
1216
+ CRCsinglet(crc0, next, -7 * 8);
1217
+ FALLTHROUGH_INTENDED;
1218
+ case 6:
1219
+ CRCsinglet(crc0, next, -6 * 8);
1220
+ FALLTHROUGH_INTENDED;
1221
+ case 5:
1222
+ CRCsinglet(crc0, next, -5 * 8);
1223
+ FALLTHROUGH_INTENDED;
1224
+ case 4:
1225
+ CRCsinglet(crc0, next, -4 * 8);
1226
+ FALLTHROUGH_INTENDED;
1227
+ case 3:
1228
+ CRCsinglet(crc0, next, -3 * 8);
1229
+ FALLTHROUGH_INTENDED;
1230
+ case 2:
1231
+ CRCsinglet(crc0, next, -2 * 8);
1232
+ FALLTHROUGH_INTENDED;
1233
+ case 1:
1234
+ CRCsinglet(crc0, next, -1 * 8);
1235
+ FALLTHROUGH_INTENDED;
1236
+ case 0:;
1237
+ }
1238
+ }
1239
+ {
1240
+ align_to_8(len, crc0, next);
1241
+ return (uint32_t)crc0 ^ 0xffffffffu;
1242
+ }
1243
+ }
1244
+
1245
+ #endif //HAVE_SSE42 && HAVE_PCLMUL
1246
+
1247
+ static inline Function Choose_Extend() {
1248
+ #ifdef HAVE_POWER8
1249
+ return isAltiVec() ? ExtendPPCImpl : ExtendImpl<Slow_CRC32>;
1250
+ #elif defined(HAVE_ARM64_CRC)
1251
+ if(crc32c_runtime_check()) {
1252
+ pmull_runtime_flag = crc32c_pmull_runtime_check();
1253
+ return ExtendARMImpl;
1254
+ } else {
1255
+ return ExtendImpl<Slow_CRC32>;
1256
+ }
1257
+ #else
1258
+ if (isSSE42()) {
1259
+ if (isPCLMULQDQ()) {
1260
+ #if defined HAVE_SSE42 && defined HAVE_PCLMUL && !defined NO_THREEWAY_CRC32C
1261
+ return crc32c_3way;
1262
+ #else
1263
+ return ExtendImpl<Fast_CRC32>; // Fast_CRC32 will check HAVE_SSE42 itself
1264
+ #endif
1265
+ }
1266
+ else { // no runtime PCLMULQDQ support but has SSE42 support
1267
+ return ExtendImpl<Fast_CRC32>;
1268
+ }
1269
+ } // end of isSSE42()
1270
+ else {
1271
+ return ExtendImpl<Slow_CRC32>;
1272
+ }
1273
+ #endif
1274
+ }
1275
+
1276
+ static Function ChosenExtend = Choose_Extend();
1277
+ uint32_t Extend(uint32_t crc, const char* buf, size_t size) {
1278
+ return ChosenExtend(crc, buf, size);
1279
+ }
1280
+
1281
+
1282
+ } // namespace crc32c
1283
+ } // namespace ROCKSDB_NAMESPACE