Mercurial > hg > graal-compiler
view graal/com.oracle.graal.salver/src/com/oracle/graal/salver/dumper/AbstractGraalDumper.java @ 22905:463553e69619
Add basic functionality for debug dumps via Salver trace events.
author | Stefan Rumzucker <stefan.rumzucker@jku.at> |
---|---|
date | Thu, 29 Oct 2015 17:49:30 +0100 |
parents | |
children |
line wrap: on
line source
/* * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package com.oracle.graal.salver.dumper; import java.io.IOException; import com.oracle.graal.salver.Salver; import com.oracle.graal.salver.data.DataDict; public class AbstractGraalDumper extends AbstractSerializerDumper { public static final String EVENT_NAMESPACE = "graal"; private int eventCounter; public void beginDump() throws IOException { beginDump(EVENT_NAMESPACE); } protected void beginDump(String namespace) throws IOException { beginDump(namespace, getBeginDumpDataDict()); } protected void beginDump(String namespace, DataDict dataDict) throws IOException { DataDict eventDict = createEventDict(":begin"); eventDict.put("@time", System.currentTimeMillis()); eventDict.put("@ecid", Salver.ECID); if (namespace != null) { eventDict.put("@namespace", namespace); } if (dataDict != null) { eventDict.put("@data", dataDict); } serializeAndFlush(eventDict); } protected DataDict getBeginDumpDataDict() { DataDict dataDict = new DataDict(); dataDict.put("dumper", getClass().getSimpleName()); dataDict.put("thread", Thread.currentThread().getName()); return dataDict; } public void endDump() throws IOException { DataDict eventDict = createEventDict(":end"); eventDict.put("@time", System.currentTimeMillis()); serializeAndFlush(eventDict); } @Override public void close() throws IOException { endDump(); } protected DataDict createEventDict(String name) { DataDict eventDict = new DataDict(); eventDict.put("@event", name); eventDict.put("@n", eventCounter++); return eventDict; } protected DataDict createEventDict(String name, DataDict data) { DataDict eventDict = createEventDict(name); eventDict.put("@data", data); return eventDict; } }