52 lines
1.1 KiB
C++
52 lines
1.1 KiB
C++
// runtime.h -- runtime functions called by generated code -*- C++ -*-
|
|
|
|
// Copyright 2011 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
#ifndef GO_RUNTIME_H
|
|
#define GO_RUNTIME_H
|
|
|
|
class Gogo;
|
|
class Type;
|
|
class Named_object;
|
|
class Call_expression;
|
|
|
|
class Runtime
|
|
{
|
|
public:
|
|
|
|
// The runtime functions which may be called by generated code.
|
|
enum Function
|
|
{
|
|
|
|
#define DEF_GO_RUNTIME(CODE, NAME, PARAMS, RESULTS) CODE ,
|
|
|
|
#include "runtime.def"
|
|
|
|
#undef DEF_GO_RUNTIME
|
|
|
|
// Number of runtime functions.
|
|
NUMBER_OF_FUNCTIONS
|
|
};
|
|
|
|
// Make a call to a runtime function.
|
|
static Call_expression*
|
|
make_call(Function, Location, int, ...);
|
|
|
|
// Convert all the types used by runtime functions to the backend
|
|
// representation.
|
|
static void
|
|
convert_types(Gogo*);
|
|
|
|
// Return the runtime code for a named builtin function.
|
|
static Function
|
|
name_to_code(const std::string&);
|
|
|
|
private:
|
|
static Named_object*
|
|
runtime_declaration(Function);
|
|
};
|
|
|
|
#endif // !defined(GO_BUILTINS_H)
|