Use shape values at runtime for position data
[hiphop-php.git] / hphp / hhbbc / stats.h
blob76a568337faa448a5c3fcba814435cb0180d29f2
1 /*
2 +----------------------------------------------------------------------+
3 | HipHop for PHP |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
16 #pragma once
18 namespace HPHP { namespace HHBBC {
20 struct Stats;
22 struct StatsHolder {
23 StatsHolder();
24 ~StatsHolder();
25 StatsHolder(StatsHolder&& o) noexcept : stats{o.stats} { o.stats = nullptr; }
26 StatsHolder(const StatsHolder&) = delete;
27 StatsHolder& operator=(const StatsHolder&) = delete;
28 StatsHolder& operator=(StatsHolder&&) = delete;
30 operator bool() const { return stats; }
32 Stats* stats{};
35 namespace php {
36 struct Program;
37 struct Unit;
39 struct Index;
41 //////////////////////////////////////////////////////////////////////
44 * If Trace::hhbbc_time >= 1, print some stats about the program to a
45 * temporary file. If it's greater than or equal to 2, also dump it
46 * to stdout.
48 StatsHolder allocate_stats();
49 void collect_stats(const StatsHolder&, const Index&, const php::Unit*);
50 void print_stats(const StatsHolder&);
52 //////////////////////////////////////////////////////////////////////