compiler: print runtime.hex in hex

The gc compiler recognizes the type runtime.hex and prints values
    in this type as hex. Do the same here. This makes debugging
    runtime crashes slightly better.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190597

From-SVN: r274591
This commit is contained in:
Ian Lance Taylor 2019-08-16 22:49:23 +00:00
parent 1ccd703591
commit 29ca15bb29
3 changed files with 11 additions and 2 deletions

View File

@ -1,4 +1,4 @@
480477ca64c3001b9c7e92ef8b978dc92a5912d2
0f6d673d5b1a3474c3424cb6994ae8ff9baed255
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -10294,7 +10294,13 @@ Builtin_call_expression::do_get_backend(Translate_context* context)
{
Type* itype = Type::lookup_integer_type("uint64");
arg = Expression::make_cast(itype, arg, location);
code = Runtime::PRINTUINT;
if (gogo->compiling_runtime()
&& type->named_type() != NULL
&& gogo->unpack_hidden_name(type->named_type()->name())
== "hex")
code = Runtime::PRINTHEX;
else
code = Runtime::PRINTUINT;
}
else if (type->integer_type() != NULL)
{

View File

@ -384,6 +384,9 @@ DEF_GO_RUNTIME(PRINTSTRING, "runtime.printstring", P1(STRING), R0())
// Print a uint64 (for print/println).
DEF_GO_RUNTIME(PRINTUINT, "runtime.printuint", P1(UINT64), R0())
// Print a uint64 in hex (for print/println, used for runtime.hex type).
DEF_GO_RUNTIME(PRINTHEX, "runtime.printhex", P1(UINT64), R0())
// Print a int64 (for print/println).
DEF_GO_RUNTIME(PRINTINT, "runtime.printint", P1(INT64), R0())