[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] pkl: Use `format` function in `assert` implementation

From: Mohammad-Reza Nabipoor
Subject: Re: [PATCH] pkl: Use `format` function in `assert` implementation
Date: Sat, 31 Jul 2021 18:54:24 +0430

Hi, Jose.

On Sat, Jul 31, 2021 at 03:47:01PM +0200, Jose E. Marchesi wrote:
> Hi Mohammad.
> Sorry it took so long for me to look at this.

I'm happy that you're hacking poke again :)

> > This commit changes the implementation of `assert` statement to
> > pass source location info (FILENAME, LINE and COLUMN) separately,
> > instead of passing a pre-formated string
> > ("<FILENAME>:<LINE>:<COLUMN>"). And makes `msg` string using `format`
> > function.
> >
> > The reason that this commit, separates the runtime library (`pkl-rt.pk`)
> > into two separate files (`pkl-rt-1.pk` and `pkl-rt-2.pk`) is that
> > codegen of `format` generates a function call to
> > `_pkl_reduce_string_array`, and it's inaccessible to codegen at this
> > stage. Because `_pkl_reduce_string_array` is also defined in the runtime
> > library. Moving `_pkl_assert` function to `pkl-rt-2.pk` makes codegen
> > happy!
> I would like to understand why this is happening.  Moving the definition
> of _pkl_assert down in pkl-rt.pk after _pkl_reduce_string_array doesn't
> fix the problem?

This is what I get when the `_pkl_assert` is defined in the same compilation
unit as `_pkl_reduce_string_array`:

lt-poke: ../../libpoke/pkl-asm.c:2117: pkl_asm_call: Assertion `tmp != NULL' 
Aborted (core dumped)
Even moving it down after the `_pkl_reduce_string_array` doesn't fix the

The following assertion is the problem in `pkl_asm_call` function:

  tmp = pkl_env_lookup (compiler_env, PKL_ENV_NS_MAIN,
                        funcname, &back, &over);
  assert (tmp != NULL);

I've checked the `compiler_env`; it's empty.
And the `funcname` is `"_pkl_reduce_string_array"`.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]