1// go-dump.cc -- Go frontend debug dumps. 2 3// Copyright 2009 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7#include "go-system.h" 8 9#include "go-c.h" 10#include "go-dump.h" 11 12namespace { 13 14// The list of dumps. 15 16Go_dump* dumps; 17 18} // End empty namespace. 19 20// Create a new dump. 21 22Go_dump::Go_dump(const char* name) 23 : next_(dumps), name_(name), is_enabled_(false) 24{ 25 dumps = this; 26} 27 28// Enable a dump by name. 29 30bool 31Go_dump::enable_by_name(const char* name) 32{ 33 bool is_all = strcmp(name, "all") == 0; 34 bool found = false; 35 for (Go_dump* p = dumps; p != NULL; p = p->next_) 36 { 37 if (is_all || strcmp(name, p->name_) == 0) 38 { 39 p->is_enabled_ = true; 40 found = true; 41 } 42 } 43 return found; 44} 45 46// Enable a dump. Return 1 if this is a real name, 0 if not. 47 48GO_EXTERN_C 49int 50go_enable_dump(const char* name) 51{ 52 return Go_dump::enable_by_name(name) ? 1 : 0; 53} 54