tammela added inline comments.

================
Comment at: lldb/source/Plugins/ScriptInterpreter/Lua/Lua.h:39
   llvm::Error LoadModule(llvm::StringRef filename);
+  llvm::Error LoadBuffer(llvm::StringRef buffer, bool pop_result = true);
   llvm::Error ChangeIO(FILE *out, FILE *err);
----------------
labath wrote:
> tammela wrote:
> > labath wrote:
> > > This default value does not seem particularly useful. In fact, I am not 
> > > sure if this argument should even exist at all. The usage in 
> > > `IOHandlerIsInputComplete` is sufficiently unorthodox that it might be a 
> > > good idea to draw attention to the fact that something funky is happening 
> > > via an explicit pop (and maybe a comment).
> > We can't explicitly pop, as in calling `lua_pop()`, from 
> > `ScriptInterpreterLua.cpp` because the `lua_State` is not exposed. Are you 
> > suggesting to add a method that wraps `lua_pop()` as well?
> Good question. I didn't realize this aspect of the problem. I think the 
> answer to this depends on the direction we want the Lua class to go in. Back 
> when it was first introduced, my idea was for it to be some sort of a c++ 
> wrapper for the lua (C) api. It would offset a nicer interface to interact 
> with lua, but would otherwise be (more-or-less) lldb-agnostic (kind of like 
> our PythonDataObjects). In that world, it would make sense to expose the lua 
> stack and the pop function (among other things).
> 
> However, I don't think that's really how things have worked out. The current 
> Lua interface is much more high-level and much-more debugger-oriented than I 
> originally imagined. Among functions like `RegisterBreakpointCallback` and 
> `ChangeIO`, a function like `Pop` seems misplaced. I'm not sure this is a 
> good position to be in (there's still a need to find a home for the c++ 
> wrapper-like functions, for example to handle exceptions), but if we want to 
> go down that path, then a pop function is not the right answer. However, I 
> think the same applies to the LoadBuffer function, as it cannot be useful 
> (beyond this syntax-check use case) without exposing the lua stack, 
> implicitly or explicitly.  In this world it would be better to make the 
> function even more high-level, and have something like `CheckSyntax(buffer)` 
> (which does pretty much what LoadBuffer does, but it always pops the result). 
> Internally it can be implemented as a call to LoadBuffer, but this function 
> would now be a private implementation detail instead of a part of the 
> interface.
I think it's better to keep it as high level as possible. Exposing the 
`lua_State` spills the stack control to whom ever has access to the Lua 
interpreter, which might be undesirable and cumbersome to keep track of.




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93481/new/

https://reviews.llvm.org/D93481

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to