From: Charles Thornton Date: 2007-12-14T19:16:35+09:00 Subject: IRHG - PUSH_FRAME? The following define statement is driving me crazy I have never seen a #define used this way! Can someone explain what is going on here? Does this somehow create a new frame without allocation, and add it to a ruby_frame linked list? #define PUSH_FRAME() do { \ struct FRAME _frame; \ _frame.prev = ruby_frame; \ _frame.tmp = 0; \ _frame.node = ruby_current_node; \ _frame.iter = ruby_iter->iter; \ _frame.argc = 0; \ _frame.flags = 0; \ _frame.uniq = frame_unique++; \ ruby_frame = &_frame #define POP_FRAME() \ ruby_current_node = _frame.node; \ ruby_frame = _frame.prev; \ } while (0)