June 28, 2004 11:11 pm (permalink)

Stack Unwinding

After having a lot of fun on the Altstadtfest on Saturday, I spent most of the weekend with stack unwinding in the debugger.

We're now doing several levels of stack unwinding:

  • If we're in unmanaged code, we try to find Dwarf 2 Call Frame Information. This allows us to do a really good and precise unwinding and we can also access registers from the previous call frame if they were preserved somehow (stored on the stack or in another register). The StackFrame now also keeps information about whether a particular register is stored on the stack (and where) - this allows a user to modify registers from outer stack frames.
  • If we're in managed code, we disassemble the method's prologue code to find out which registers have been saved. This is not always precise, but it should be ok for the moment - especially when running the JIT without too much optimizations. Long-term, it may be a good idea to have the JIT emit Dwarf Call Frame Information, too.
  • There are some hacks for some special functions - these are currently the system call trampoline (0xffffe002) and pthread_cond_timedwait on glibc 2.3.2.
Posted by martin at June 28, 2004 11:11 pm.

June 14, 2004 5:31 pm (permalink)

Generics grammar

Yesterday, I did some larger changes in the generics grammar.

When I started to work on gmcs, I tried to follow the ecma grammar as closely as possible. Because of this, we were distinguishing between type arguments and type parameters on the grammar level. However, this caused some trouble since the yacc based jay needs a context-free LALR grammar.

So now, the grammar doesn't distinguish between type arguments and type parameters anymore - this is now done during semantic analysis. As a side-effect, all the reduce/reduce conflicts (except the one which we inherited from mcs) are now gone. There's now also just the MemberName which is used for type and member names, which should also simplify things a lot.

Btw. if you find any situation where gmcs allows type arguments where it shouldn't or things like this, error test cases are greatly appreciated :-)

Posted by martin at June 14, 2004 5:31 pm.

June 14, 2004 5:13 pm (permalink)

New blogging engine

Since MovableType is finally gone for good on primates, I switched to a new blogging engine this afternoon.

I'm now using Pivot, which is not only cool, but also GPL :-)
If you want my templates, just lemme know.

Posted by martin at June 14, 2004 5:13 pm.

June 03, 2004 10:10 am (permalink)

Happy new 3MBit world

Yesterday, I called my ISP and ordered a huge bandwidth upgrade :-)

It's still DSL, but I'll get 3 MBit/s downstream and 384 kbit/s upstream. Especially the latter one is very cool since CVS was always very slow for me especially when committing large files.

What's really cool is that they told me it'll take a month to be activated, but I just realized that I already have this new bandwidth :-)

Posted by martin at June 03, 2004 10:10 am.

June 02, 2004 12:33 am (permalink)

Mono Debugger 0.8 "Wrightsville Beach"

Just released version 0.8 "Wrightsville Beach" of the Mono Debugger :-)

You can get it here. Unfortunately, a last minute breakage slipped into Mono's beta2, so it's unusable for the debugger. You need to use the latest CVS version.

This week, I'm also starting to write some documentation for the MonkeyGuide.

Miguel told me about a nice XML mode for Emacs: http://www.xmlhack.com/read.php?item=2061.

Update: ... and once again Jackson has the coolest blog of the planet - so maybe I should go swimming this weekend:

Posted by martin at June 02, 2004 12:33 am.