poke-devel
[Top][All Lists]
Advanced

[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: Tue, 9 Nov 2021 02:50:32 +0330

Hi, Jose.

On Sat, Jul 31, 2021 at 06:54:24PM +0430, Mohammad-Reza Nabipoor wrote:
> 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' 
> failed.
> Aborted (core dumped)
> ```
> Even moving it down after the `_pkl_reduce_string_array` doesn't fix the
> problem.
> 
> The following assertion is the problem in `pkl_asm_call` function:
> 
> ```c
>   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"`.
> 


Is this related to the lexical environment problems?



reply via email to

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