reversed the internal structure for blocks

--HG--
branch : trunk
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index cbac003..773203a 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -737,7 +737,7 @@
                 self.writeline('if parent_template is None:')
                 self.indent()
                 level += 1
-        self.writeline('for event in context.blocks[%r][-1](context):' %
+        self.writeline('for event in context.blocks[%r][0](context):' %
                        node.name, node)
         self.indent()
         if frame.buffer is None:
@@ -781,7 +781,7 @@
                        'blocks.iteritems():')
         self.indent()
         self.writeline('context.blocks.setdefault(name, []).'
-                       'insert(0, parent_block)')
+                       'append(parent_block)')
         self.outdent()
 
         # if this extends statement was in the root level we can take
diff --git a/jinja2/runtime.py b/jinja2/runtime.py
index 2605717..cbe7115 100644
--- a/jinja2/runtime.py
+++ b/jinja2/runtime.py
@@ -81,15 +81,13 @@
         """Render a parent block."""
         try:
             blocks = self.blocks[name]
-            pos = blocks.index(current) - 1
-            if pos < 0:
-                raise IndexError()
+            block = blocks[blocks.index(current) + 1]
         except LookupError:
             return self.environment.undefined('there is no parent block '
                                               'called %r.' % name,
                                               name='super')
         wrap = self.environment.autoescape and Markup or (lambda x: x)
-        render = lambda: wrap(concat(blocks[pos](self)))
+        render = lambda: wrap(concat(block(self)))
         render.__name__ = render.name = name
         return render