Teach hhbbc to optimize away LockObj.
[hiphop-php.git] / hphp / hhbbc / options-util.cpp
blob2d89b677e66b7050198edc4225290ce462d5b860
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 #include "hphp/hhbbc/options-util.h"
18 #include "hphp/hhbbc/representation.h"
19 #include "hphp/hhbbc/unit-util.h"
21 namespace HPHP { namespace HHBBC {
23 //////////////////////////////////////////////////////////////////////
25 bool method_map_contains(const MethodMap& mmap,
26 const php::Class* cls,
27 const php::Func* func) {
28 std::string const clsname = cls ? cls->name->data() : "";
29 auto it = mmap.find(clsname);
30 if (it == end(mmap)) return false;
31 return it->second.count(func == nullptr ? "" :
32 (func->name->empty() ?
33 func->unit->filename : func->name)->data());
36 bool is_trace_function(const php::Class* cls,
37 const php::Func* func) {
38 return method_map_contains(options.TraceFunctions, cls, func);
41 int trace_bump_for(const php::Class* cls,
42 const php::Func* func) {
43 auto const unit = func ? func->unit : cls->unit;
44 return is_trace_function(cls, func) ? kTraceFuncBump :
45 (is_systemlib_part(*unit) ? kSystemLibBump : 0);
48 //////////////////////////////////////////////////////////////////////