1234567891011121314151617181920212223242526272829303132333435363738394041424344(**
* Copyright (c) 2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*)(* Not all stats are worth logging for every user. Things like the initial heap
* size are pretty deterministic if you know the input (i.e. the files being
* checked). In fact, it's *only* useful information if you know the input.
* This file is for storing these types of stats: Things that would be useful
* for a benchmark script to know, so it can say "for these inputs, under these
* conditions, here's how hh_server behaves".
*)typet={mutableinit_parsing_heap_size:int;mutableinit_heap_size:int;mutablemax_heap_size:int;gc_stat:Gc.stat;}letstats:t={init_parsing_heap_size=0;init_heap_size=0;max_heap_size=0;gc_stat=Gc.quick_stat();}letget_stats()={statswithgc_stat=Gc.quick_stat()}letupdate_max_heap_sizex=stats.max_heap_size<-maxstats.max_heap_sizexletto_jsonstats=Hh_json.JSON_Object[("init_parsing_heap_size",Hh_json.int_stats.init_parsing_heap_size);("init_shared_heap_size",Hh_json.int_stats.init_heap_size);("max_shared_heap_size",Hh_json.int_stats.max_heap_size);("master_heap_words",Hh_json.int_stats.gc_stat.Gc.heap_words);("master_top_heap_words",Hh_json.int_stats.gc_stat.Gc.top_heap_words);]