Jump to content

David Heffernan

Members
  • Content Count

    3586
  • Joined

  • Last visited

  • Days Won

    176

Everything posted by David Heffernan

  1. David Heffernan

    Revisiting TThreadedQueue and TMonitor

    Wrong. It also lets the compiler out the meta data, the unwind data, needed to restore the register in case of an exception. Read Allen's article.
  2. David Heffernan

    Revisiting TThreadedQueue and TMonitor

    CAS from OTL does restore rbx, but it should do so using .pushnv, for the reasons that Allen's article explains.
  3. David Heffernan

    Revisiting TThreadedQueue and TMonitor

    No it is not. It modifies rbx and does not restore it.
  4. David Heffernan

    Record Circular References

    This is the point that I've been making all along.
  5. David Heffernan

    Record Circular References

    Not being able to do that one thing would hardly invalidate the entire enterprise. We'd still be able to use the type as procedure argument which is the main thing we are striving for. But the whole argument is predicted on this single pass. It's no big deal to pass over each type section twice to process forward declarations. Won't make a blind bit of difference to performance. Bottom line is that it is perfectly possible to do this if Emba wanted to.
  6. David Heffernan

    Record Circular References

    If what you say were true, then class forward references would not exist.
  7. David Heffernan

    Revisiting TThreadedQueue and TMonitor

    I can't see where RBX is restored in that InterlockedCompareExchange128 code. It's a NV register. Function needs to start with .PUSHNV RBX I can't vouch for the rest of what it does.
  8. David Heffernan

    Revisiting TThreadedQueue and TMonitor

    You can't be doing multithreaded programming where "whilst still not perfect" as a valid statement. It's got to be right.
  9. David Heffernan

    Revisiting TThreadedQueue and TMonitor

    Not sure it's relevant but that x64 should use .PUSHNV to preserve rbx. And I think that also makes .NOFRAME incorrect.
  10. David Heffernan

    Mixed resources type 12

    The FMX bitmap that you save is a compressed bitmap. The VCL bitmap is a Windows bitmap, uncompressed.
  11. David Heffernan

    Mixed resources type 12

    I don't think that mixing VCL and FMX will work. So I'd just rule that out.
  12. David Heffernan

    Mixed resources type 12

    Wouldn't it just be easier to detect the webcam without trying to mix FMX into the system?
  13. David Heffernan

    Record Circular References

    With over a million lines of code, it's an epic task to migrate. I can't believe that the increase in compiler time would be significant.
  14. David Heffernan

    Record Circular References

    C# compilation is pretty darn fast. Delphi compilation for 64 bit on Windows is not exactly fast. I'm sure that a first pass to define record type layouts followed by a second pass for everything else would not be costly. This isn't going to be about compilation speedy. It's about the pain of refactoring the front end.
  15. David Heffernan

    Record Circular References

    It is possible. Plenty of languages can handle this. Emba could implement it if they chose to.
  16. David Heffernan

    Record Circular References

    Well no, of course not. So we are stuck with this second rate language.
  17. David Heffernan

    Record Circular References

    The argument is that its a single pass compile. So make it two pass. Simples.
  18. David Heffernan

    Record Circular References

    You should be able to forward declare their methods. No reason not to be able to do that.
  19. David Heffernan

    Record Circular References

    Bloody annoying that this can't be done
  20. David Heffernan

    Record Circular References

    I personally don't think you can do better than helpers. That's what I do.
  21. David Heffernan

    TThread always raises OS Errror

    You think wrong
  22. David Heffernan

    TThread always raises OS Errror

    Find out by debugging. Set a breakpoint on SetLastError. And inspect the call stack when it triggers.
  23. David Heffernan

    TThread always raises OS Errror

    The only error here is the code that calls GetLastError and uses the value at a time when its return value is meaningless. All you have to do is to stop doing that.
  24. David Heffernan

    Delphi Rio IDE hangs again and again

    Yeah, should be using '%p' format string
  25. David Heffernan

    Delphi Rio IDE hangs again and again

    Sure. But so what?
×