cython-devel
changeset 1174:eedadcc8c22c
Use method to get result code, deferred to code generation time.
| author | Robert Bradshaw <robertwb@math.washington.edu> |
|---|---|
| date | Tue Sep 23 13:48:06 2008 -0700 (3 years ago) |
| parents | eeaee55d5a7f |
| children | 3627bea3f6a6 |
| files | Cython/Compiler/ExprNodes.py Cython/Compiler/Nodes.py |
line diff
1.1 --- a/Cython/Compiler/ExprNodes.py Tue Sep 23 11:53:34 2008 -0700
1.2 +++ b/Cython/Compiler/ExprNodes.py Tue Sep 23 13:48:06 2008 -0700
1.3 @@ -103,11 +103,6 @@
1.4 # - Call release_temp on sub-nodes and release any other
1.5 # temps used during assignment.
1.6 #
1.7 - # calculate_result_code
1.8 - # - Called during the Allocate Temps phase. Should return a
1.9 - # C code fragment evaluating to the result. This is only
1.10 - # called when the result is not a temporary.
1.11 - #
1.12 # target_code
1.13 # Called by the default implementation of allocate_target_temps.
1.14 # Should return a C lvalue for assigning to the node. The default
1.15 @@ -140,13 +135,18 @@
1.16 # on all sub-expressions.
1.17 #
1.18 # A default implementation of generate_evaluation_code
1.19 - # is provided which uses the following abstract method:
1.20 + # is provided which uses the following abstract methods:
1.21 #
1.22 # generate_result_code
1.23 # - Generate any C statements necessary to calculate
1.24 # the result of this node from the results of its
1.25 # sub-expressions.
1.26 #
1.27 + # calculate_result_code
1.28 + # - Should return a C code fragment evaluating to the
1.29 + # result. This is only called when the result is not
1.30 + # a temporary.
1.31 + #
1.32 # generate_assignment_code
1.33 # Called on the LHS of an assignment.
1.34 # - Call generate_evaluation_code for sub-expressions.
1.35 @@ -204,10 +204,16 @@
1.36 nodes.extend(item)
1.37 self.saved_subexpr_nodes = nodes
1.38 return self.saved_subexpr_nodes
1.39 +
1.40 + def result(self):
1.41 + if self.is_temp:
1.42 + return self.result_code
1.43 + else:
1.44 + return self.calculate_result_code()
1.45
1.46 def result_as(self, type = None):
1.47 # Return the result code cast to the specified C type.
1.48 - return typecast(type, self.ctype(), self.result_code)
1.49 + return typecast(type, self.ctype(), self.result())
1.50
1.51 def py_result(self):
1.52 # Return the result code cast to PyObject *.
1.53 @@ -381,8 +387,6 @@
1.54 self.result_code = None
1.55 if debug_temp_alloc:
1.56 print("%s Allocated result %s" % (self, self.result_code))
1.57 - else:
1.58 - self.result_code = self.calculate_result_code()
1.59
1.60 def target_code(self):
1.61 # Return code fragment for use as LHS of a C assignment.
1.62 @@ -418,7 +422,7 @@
1.63 # If result is a pyobject, make sure we own
1.64 # a reference to it.
1.65 if self.type.is_pyobject and not self.result_in_temp():
1.66 - code.put_incref(self.result_code, self.ctype())
1.67 + code.put_incref(self.result(), self.ctype())
1.68
1.69 def generate_evaluation_code(self, code):
1.70 code.mark_pos(self.pos)
1.71 @@ -442,7 +446,7 @@
1.72 # temporary Python reference.
1.73 if self.is_temp:
1.74 if self.type.is_pyobject:
1.75 - code.put_decref_clear(self.result_code, self.ctype())
1.76 + code.put_decref_clear(self.result(), self.ctype())
1.77 else:
1.78 self.generate_subexpr_disposal_code(code)
1.79
1.80 @@ -458,7 +462,7 @@
1.81 # the result if it is a Python object.
1.82 if self.is_temp:
1.83 if self.type.is_pyobject:
1.84 - code.putln("%s = 0;" % self.result_code)
1.85 + code.putln("%s = 0;" % self.result())
1.86 else:
1.87 self.generate_subexpr_disposal_code(code)
1.88
1.89 @@ -795,9 +799,9 @@
1.90 def generate_evaluation_code(self, code):
1.91 code.putln(
1.92 '%s = PyLong_FromString("%s", 0, 0); %s' % (
1.93 - self.result_code,
1.94 + self.result(),
1.95 self.value,
1.96 - code.error_goto_if_null(self.result_code, self.pos)))
1.97 + code.error_goto_if_null(self.result(), self.pos)))
1.98
1.99
1.100 class ImagNode(AtomicExprNode):
1.101 @@ -818,9 +822,9 @@
1.102 def generate_evaluation_code(self, code):
1.103 code.putln(
1.104 "%s = PyComplex_FromDoubles(0.0, %s); %s" % (
1.105 - self.result_code,
1.106 + self.result(),
1.107 self.value,
1.108 - code.error_goto_if_null(self.result_code, self.pos)))
1.109 + code.error_goto_if_null(self.result(), self.pos)))
1.110
1.111
1.112 class NameNode(AtomicExprNode):
1.113 @@ -1017,10 +1021,10 @@
1.114 namespace = entry.scope.namespace_cname
1.115 code.putln(
1.116 '%s = __Pyx_GetName(%s, %s); %s' % (
1.117 - self.result_code,
1.118 + self.result(),
1.119 namespace,
1.120 self.interned_cname,
1.121 - code.error_goto_if_null(self.result_code, self.pos)))
1.122 + code.error_goto_if_null(self.result(), self.pos)))
1.123 elif entry.is_local and False:
1.124 # control flow not good enough yet
1.125 assigned = entry.scope.control_flow.get_state((entry.name, 'initalized'), self.pos)
1.126 @@ -1083,12 +1087,12 @@
1.127 if entry.is_local and not Options.init_local_none:
1.128 initalized = entry.scope.control_flow.get_state((entry.name, 'initalized'), self.pos)
1.129 if initalized is True:
1.130 - code.put_decref(self.result_code, self.ctype())
1.131 + code.put_decref(self.result(), self.ctype())
1.132 elif initalized is None:
1.133 - code.put_xdecref(self.result_code, self.ctype())
1.134 - else:
1.135 - code.put_decref(self.result_code, self.ctype())
1.136 - code.putln('%s = %s;' % (self.result_code, rhs.result_as(self.ctype())))
1.137 + code.put_xdecref(self.result(), self.ctype())
1.138 + else:
1.139 + code.put_decref(self.result(), self.ctype())
1.140 + code.putln('%s = %s;' % (self.result(), rhs.result_as(self.ctype())))
1.141 if debug_disposal_code:
1.142 print("NameNode.generate_assignment_code:")
1.143 print("...generating post-assignment code for %s" % rhs)
1.144 @@ -1101,7 +1105,7 @@
1.145 code.putln('%s = %s;' % (rhstmp, rhs.result_as(self.ctype())))
1.146
1.147 import Buffer
1.148 - Buffer.put_assign_to_buffer(self.result_code, rhstmp, buffer_aux, self.entry.type,
1.149 + Buffer.put_assign_to_buffer(self.result(), rhstmp, buffer_aux, self.entry.type,
1.150 is_initialized=not self.skip_assignment_decref,
1.151 pos=self.pos, code=code)
1.152 code.putln("%s = 0;" % rhstmp)
1.153 @@ -1145,9 +1149,9 @@
1.154 def generate_result_code(self, code):
1.155 code.putln(
1.156 "%s = PyObject_Repr(%s); %s" % (
1.157 - self.result_code,
1.158 + self.result(),
1.159 self.arg.py_result(),
1.160 - code.error_goto_if_null(self.result_code, self.pos)))
1.161 + code.error_goto_if_null(self.result(), self.pos)))
1.162
1.163
1.164 class ImportNode(ExprNode):
1.165 @@ -1179,10 +1183,10 @@
1.166 name_list_code = "0"
1.167 code.putln(
1.168 "%s = __Pyx_Import(%s, %s); %s" % (
1.169 - self.result_code,
1.170 + self.result(),
1.171 self.module_name.py_result(),
1.172 name_list_code,
1.173 - code.error_goto_if_null(self.result_code, self.pos)))
1.174 + code.error_goto_if_null(self.result(), self.pos)))
1.175
1.176
1.177 class IteratorNode(ExprNode):
1.178 @@ -1206,7 +1210,7 @@
1.179 gil_message = "Iterating over Python object"
1.180
1.181 def release_temp(self, env):
1.182 - env.release_temp(self.result_code)
1.183 + env.release_temp(self.result())
1.184 self.counter.release_temp(env)
1.185
1.186 def generate_result_code(self, code):
1.187 @@ -1216,16 +1220,16 @@
1.188 self.sequence.py_result()))
1.189 code.putln(
1.190 "%s = 0; %s = %s; Py_INCREF(%s);" % (
1.191 - self.counter.result_code,
1.192 - self.result_code,
1.193 + self.counter.result(),
1.194 + self.result(),
1.195 self.sequence.py_result(),
1.196 - self.result_code))
1.197 + self.result()))
1.198 code.putln("} else {")
1.199 code.putln("%s = -1; %s = PyObject_GetIter(%s); %s" % (
1.200 - self.counter.result_code,
1.201 - self.result_code,
1.202 + self.counter.result(),
1.203 + self.result(),
1.204 self.sequence.py_result(),
1.205 - code.error_goto_if_null(self.result_code, self.pos)))
1.206 + code.error_goto_if_null(self.result(), self.pos)))
1.207 code.putln("}")
1.208
1.209
1.210 @@ -1249,26 +1253,26 @@
1.211 "if (likely(Py%s_CheckExact(%s))) {" % (py_type, self.iterator.py_result()))
1.212 code.putln(
1.213 "if (%s >= Py%s_GET_SIZE(%s)) break;" % (
1.214 - self.iterator.counter.result_code,
1.215 + self.iterator.counter.result(),
1.216 py_type,
1.217 self.iterator.py_result()))
1.218 code.putln(
1.219 "%s = Py%s_GET_ITEM(%s, %s); Py_INCREF(%s); %s++;" % (
1.220 - self.result_code,
1.221 + self.result(),
1.222 py_type,
1.223 self.iterator.py_result(),
1.224 - self.iterator.counter.result_code,
1.225 - self.result_code,
1.226 - self.iterator.counter.result_code))
1.227 + self.iterator.counter.result(),
1.228 + self.result(),
1.229 + self.iterator.counter.result()))
1.230 code.put("} else ")
1.231 code.putln("{")
1.232 code.putln(
1.233 "%s = PyIter_Next(%s);" % (
1.234 - self.result_code,
1.235 + self.result(),
1.236 self.iterator.py_result()))
1.237 code.putln(
1.238 "if (!%s) {" %
1.239 - self.result_code)
1.240 + self.result())
1.241 code.putln(code.error_goto_if_PyErr(self.pos))
1.242 code.putln("break;")
1.243 code.putln("}")
1.244 @@ -1465,7 +1469,7 @@
1.245 return "<not used>"
1.246 else:
1.247 return "(%s[%s])" % (
1.248 - self.base.result_code, self.index.result_code)
1.249 + self.base.result(), self.index.result())
1.250
1.251 def index_unsigned_parameter(self):
1.252 if self.index.type.is_int:
1.253 @@ -1496,33 +1500,33 @@
1.254 if self.is_buffer_access:
1.255 ptrcode = self.buffer_lookup_code(code)
1.256 code.putln("%s = *%s;" % (
1.257 - self.result_code,
1.258 + self.result(),
1.259 self.buffer_type.buffer_ptr_type.cast_code(ptrcode)))
1.260 # Must incref the value we pulled out.
1.261 if self.buffer_type.dtype.is_pyobject:
1.262 - code.putln("Py_INCREF((PyObject*)%s);" % self.result_code)
1.263 + code.putln("Py_INCREF((PyObject*)%s);" % self.result())
1.264 elif self.type.is_pyobject:
1.265 if self.index.type.is_int:
1.266 function = "__Pyx_GetItemInt"
1.267 - index_code = self.index.result_code
1.268 + index_code = self.index.result()
1.269 else:
1.270 function = "PyObject_GetItem"
1.271 index_code = self.index.py_result()
1.272 sign_code = ""
1.273 code.putln(
1.274 "%s = %s(%s, %s%s); if (!%s) %s" % (
1.275 - self.result_code,
1.276 + self.result(),
1.277 function,
1.278 self.base.py_result(),
1.279 index_code,
1.280 self.index_unsigned_parameter(),
1.281 - self.result_code,
1.282 + self.result(),
1.283 code.error_goto(self.pos)))
1.284
1.285 def generate_setitem_code(self, value_code, code):
1.286 if self.index.type.is_int:
1.287 function = "__Pyx_SetItemInt"
1.288 - index_code = self.index.result_code
1.289 + index_code = self.index.result()
1.290 else:
1.291 function = "PyObject_SetItem"
1.292 index_code = self.index.py_result()
1.293 @@ -1545,7 +1549,7 @@
1.294 if rhs.is_temp:
1.295 rhs_code = code.funcstate.allocate_temp(rhs.type)
1.296 else:
1.297 - rhs_code = rhs.result_code
1.298 + rhs_code = rhs.result()
1.299 code.putln("%s = %s;" % (ptr, ptrexpr))
1.300 code.putln("Py_DECREF(*%s); Py_INCREF(%s);" % (
1.301 ptr, rhs_code
1.302 @@ -1556,7 +1560,7 @@
1.303 code.funcstate.release_temp(ptr)
1.304 else:
1.305 # Simple case
1.306 - code.putln("*%s %s= %s;" % (ptrexpr, op, rhs.result_code))
1.307 + code.putln("*%s %s= %s;" % (ptrexpr, op, rhs.result()))
1.308
1.309 def generate_assignment_code(self, rhs, code):
1.310 self.generate_subexpr_evaluation_code(code)
1.311 @@ -1567,7 +1571,7 @@
1.312 else:
1.313 code.putln(
1.314 "%s = %s;" % (
1.315 - self.result_code, rhs.result_code))
1.316 + self.result(), rhs.result()))
1.317 self.generate_subexpr_disposal_code(code)
1.318 rhs.generate_disposal_code(code)
1.319
1.320 @@ -1576,7 +1580,7 @@
1.321 #if self.type.is_pyobject:
1.322 if self.index.type.is_int:
1.323 function = "PySequence_DelItem"
1.324 - index_code = self.index.result_code
1.325 + index_code = self.index.result()
1.326 else:
1.327 function = "PyObject_DelItem"
1.328 index_code = self.index.py_result()
1.329 @@ -1592,7 +1596,7 @@
1.330 # Assign indices to temps
1.331 index_temps = [code.funcstate.allocate_temp(i.type) for i in self.indices]
1.332 for temp, index in zip(index_temps, self.indices):
1.333 - code.putln("%s = %s;" % (temp, index.result_code))
1.334 + code.putln("%s = %s;" % (temp, index.result()))
1.335 # Generate buffer access code using these temps
1.336 import Buffer
1.337 # The above could happen because child_attrs is wrong somewhere so that
1.338 @@ -1645,11 +1649,11 @@
1.339 def generate_result_code(self, code):
1.340 code.putln(
1.341 "%s = PySequence_GetSlice(%s, %s, %s); %s" % (
1.342 - self.result_code,
1.343 + self.result(),
1.344 self.base.py_result(),
1.345 self.start_code(),
1.346 self.stop_code(),
1.347 - code.error_goto_if_null(self.result_code, self.pos)))
1.348 + code.error_goto_if_null(self.result(), self.pos)))
1.349
1.350 def generate_assignment_code(self, rhs, code):
1.351 self.generate_subexpr_evaluation_code(code)
1.352 @@ -1658,7 +1662,7 @@
1.353 self.base.py_result(),
1.354 self.start_code(),
1.355 self.stop_code(),
1.356 - rhs.result_code))
1.357 + rhs.result()))
1.358 self.generate_subexpr_disposal_code(code)
1.359 rhs.generate_disposal_code(code)
1.360
1.361 @@ -1673,18 +1677,18 @@
1.362
1.363 def start_code(self):
1.364 if self.start:
1.365 - return self.start.result_code
1.366 + return self.start.result()
1.367 else:
1.368 return "0"
1.369
1.370 def stop_code(self):
1.371 if self.stop:
1.372 - return self.stop.result_code
1.373 + return self.stop.result()
1.374 else:
1.375 return "PY_SSIZE_T_MAX"
1.376
1.377 def calculate_result_code(self):
1.378 - # self.result_code is not used, but this method must exist
1.379 + # self.result() is not used, but this method must exist
1.380 return "<unused>"
1.381
1.382
1.383 @@ -1722,11 +1726,11 @@
1.384 def generate_result_code(self, code):
1.385 code.putln(
1.386 "%s = PySlice_New(%s, %s, %s); %s" % (
1.387 - self.result_code,
1.388 + self.result(),
1.389 self.start.py_result(),
1.390 self.stop.py_result(),
1.391 self.step.py_result(),
1.392 - code.error_goto_if_null(self.result_code, self.pos)))
1.393 + code.error_goto_if_null(self.result(), self.pos)))
1.394
1.395
1.396 class CallNode(ExprNode):
1.397 @@ -1897,8 +1901,8 @@
1.398 arg_list_code.append(optional_args)
1.399
1.400 for actual_arg in self.args[len(formal_args):]:
1.401 - arg_list_code.append(actual_arg.result_code)
1.402 - result = "%s(%s)" % (self.function.result_code,
1.403 + arg_list_code.append(actual_arg.result())
1.404 + result = "%s(%s)" % (self.function.result(),
1.405 join(arg_list_code, ", "))
1.406 # if self.wrapper_call or \
1.407 # self.function.entry.is_unbound_cmethod and self.function.entry.type.is_overridable:
1.408 @@ -1911,10 +1915,10 @@
1.409 arg_code = self.arg_tuple.py_result()
1.410 code.putln(
1.411 "%s = PyObject_Call(%s, %s, NULL); %s" % (
1.412 - self.result_code,
1.413 + self.result(),
1.414 self.function.py_result(),
1.415 arg_code,
1.416 - code.error_goto_if_null(self.result_code, self.pos)))
1.417 + code.error_goto_if_null(self.result(), self.pos)))
1.418 elif func_type.is_cfunction:
1.419 if self.has_optional_args:
1.420 actual_nargs = len(self.args)
1.421 @@ -1931,18 +1935,18 @@
1.422 actual_arg.result_as(formal_arg.type)))
1.423 exc_checks = []
1.424 if self.type.is_pyobject:
1.425 - exc_checks.append("!%s" % self.result_code)
1.426 + exc_checks.append("!%s" % self.result())
1.427 else:
1.428 exc_val = func_type.exception_value
1.429 exc_check = func_type.exception_check
1.430 if exc_val is not None:
1.431 - exc_checks.append("%s == %s" % (self.result_code, exc_val))
1.432 + exc_checks.append("%s == %s" % (self.result(), exc_val))
1.433 if exc_check:
1.434 exc_checks.append("PyErr_Occurred()")
1.435 if self.is_temp or exc_checks:
1.436 rhs = self.c_call_code()
1.437 - if self.result_code:
1.438 - lhs = "%s = " % self.result_code
1.439 + if self.result():
1.440 + lhs = "%s = " % self.result()
1.441 if self.is_temp and self.type.is_pyobject:
1.442 #return_type = self.type # func_type.return_type
1.443 #print "SimpleCallNode.generate_result_code: casting", rhs, \
1.444 @@ -2033,9 +2037,9 @@
1.445 keyword_code)
1.446 code.putln(
1.447 "%s = %s; %s" % (
1.448 - self.result_code,
1.449 + self.result(),
1.450 call_code,
1.451 - code.error_goto_if_null(self.result_code, self.pos)))
1.452 + code.error_goto_if_null(self.result(), self.pos)))
1.453
1.454
1.455 class AsTupleNode(ExprNode):
1.456 @@ -2065,9 +2069,9 @@
1.457 def generate_result_code(self, code):
1.458 code.putln(
1.459 "%s = PySequence_Tuple(%s); %s" % (
1.460 - self.result_code,
1.461 + self.result(),
1.462 self.arg.py_result(),
1.463 - code.error_goto_if_null(self.result_code, self.pos)))
1.464 + code.error_goto_if_null(self.result(), self.pos)))
1.465
1.466
1.467 class AttributeNode(ExprNode):
1.468 @@ -2090,7 +2094,6 @@
1.469 subexprs = ['obj']
1.470
1.471 type = PyrexTypes.error_type
1.472 - result = "<error>"
1.473 entry = None
1.474 is_called = 0
1.475 needs_none_check = True
1.476 @@ -2299,7 +2302,7 @@
1.477
1.478 def calculate_result_code(self):
1.479 #print "AttributeNode.calculate_result_code:", self.member ###
1.480 - #print "...obj node =", self.obj, "code", self.obj.result_code ###
1.481 + #print "...obj node =", self.obj, "code", self.obj.result() ###
1.482 #print "...obj type", self.obj.type, "ctype", self.obj.ctype() ###
1.483 obj = self.obj
1.484 obj_code = obj.result_as(obj.type)
1.485 @@ -2318,10 +2321,10 @@
1.486 if self.is_py_attr:
1.487 code.putln(
1.488 '%s = PyObject_GetAttr(%s, %s); %s' % (
1.489 - self.result_code,
1.490 + self.result(),
1.491 self.obj.py_result(),
1.492 self.interned_attr_cname,
1.493 - code.error_goto_if_null(self.result_code, self.pos)))
1.494 + code.error_goto_if_null(self.result(), self.pos)))
1.495 else:
1.496 # result_code contains what is needed, but we may need to insert
1.497 # a check and raise an exception
1.498 @@ -2345,7 +2348,7 @@
1.499 and code.globalstate.directives['nonecheck']):
1.500 self.put_nonecheck(code)
1.501
1.502 - select_code = self.result_code
1.503 + select_code = self.result()
1.504 if self.type.is_pyobject:
1.505 rhs.make_owned_reference(code)
1.506 code.put_decref(select_code, self.ctype())
1.507 @@ -2353,7 +2356,7 @@
1.508 "%s = %s;" % (
1.509 select_code,
1.510 rhs.result_as(self.ctype())))
1.511 - #rhs.result_code))
1.512 + #rhs.result()))
1.513 rhs.generate_post_assignment_code(code)
1.514 self.obj.generate_disposal_code(code)
1.515
1.516 @@ -2463,9 +2466,9 @@
1.517 item = self.unpacked_items[i]
1.518 code.putln(
1.519 "%s = PyTuple_GET_ITEM(tuple, %s);" % (
1.520 - item.result_code,
1.521 + item.result(),
1.522 i))
1.523 - code.put_incref(item.result_code, item.ctype())
1.524 + code.put_incref(item.result(), item.ctype())
1.525 value_node = self.coerced_unpacked_items[i]
1.526 value_node.generate_evaluation_code(code)
1.527 self.args[i].generate_assignment_code(value_node, code)
1.528 @@ -2476,9 +2479,9 @@
1.529
1.530 code.putln(
1.531 "%s = PyObject_GetIter(%s); %s" % (
1.532 - self.iterator.result_code,
1.533 + self.iterator.result(),
1.534 rhs.py_result(),
1.535 - code.error_goto_if_null(self.iterator.result_code, self.pos)))
1.536 + code.error_goto_if_null(self.iterator.result(), self.pos)))
1.537 rhs.generate_disposal_code(code)
1.538 for i in range(len(self.args)):
1.539 item = self.unpacked_items[i]
1.540 @@ -2486,9 +2489,9 @@
1.541 self.iterator.py_result(), i)
1.542 code.putln(
1.543 "%s = %s; %s" % (
1.544 - item.result_code,
1.545 + item.result(),
1.546 typecast(item.ctype(), py_object_type, unpack_code),
1.547 - code.error_goto_if_null(item.result_code, self.pos)))
1.548 + code.error_goto_if_null(item.result(), self.pos)))
1.549 value_node = self.coerced_unpacked_items[i]
1.550 value_node.generate_evaluation_code(code)
1.551 self.args[i].generate_assignment_code(value_node, code)
1.552 @@ -2544,16 +2547,16 @@
1.553 return
1.554 code.putln(
1.555 "%s = PyTuple_New(%s); %s" % (
1.556 - self.result_code,
1.557 + self.result(),
1.558 len(self.args),
1.559 - code.error_goto_if_null(self.result_code, self.pos)))
1.560 + code.error_goto_if_null(self.result(), self.pos)))
1.561 for i in range(len(self.args)):
1.562 arg = self.args[i]
1.563 if not arg.result_in_temp():
1.564 - code.put_incref(arg.result_code, arg.ctype())
1.565 + code.put_incref(arg.result(), arg.ctype())
1.566 code.putln(
1.567 "PyTuple_SET_ITEM(%s, %s, %s);" % (
1.568 - self.result_code,
1.569 + self.result(),
1.570 i,
1.571 arg.py_result()))
1.572
1.573 @@ -2579,16 +2582,16 @@
1.574
1.575 def generate_operation_code(self, code):
1.576 code.putln("%s = PyList_New(%s); %s" %
1.577 - (self.result_code,
1.578 + (self.result(),
1.579 len(self.args),
1.580 - code.error_goto_if_null(self.result_code, self.pos)))
1.581 + code.error_goto_if_null(self.result(), self.pos)))
1.582 for i in range(len(self.args)):
1.583 arg = self.args[i]
1.584 #if not arg.is_temp:
1.585 if not arg.result_in_temp():
1.586 - code.put_incref(arg.result_code, arg.ctype())
1.587 + code.put_incref(arg.result(), arg.ctype())
1.588 code.putln("PyList_SET_ITEM(%s, %s, %s);" %
1.589 - (self.result_code,
1.590 + (self.result(),
1.591 i,
1.592 arg.py_result()))
1.593
1.594 @@ -2621,9 +2624,9 @@
1.595
1.596 def generate_operation_code(self, code):
1.597 code.putln("%s = PyList_New(%s); %s" %
1.598 - (self.result_code,
1.599 + (self.result(),
1.600 0,
1.601 - code.error_goto_if_null(self.result_code, self.pos)))
1.602 + code.error_goto_if_null(self.result(), self.pos)))
1.603 self.loop.generate_execution_code(code)
1.604
1.605 def annotate(self, code):
1.606 @@ -2645,10 +2648,10 @@
1.607
1.608 def generate_result_code(self, code):
1.609 code.putln("%s = PyList_Append(%s, (PyObject*)%s); %s" %
1.610 - (self.result_code,
1.611 - self.target.result_code,
1.612 - self.expr.result_code,
1.613 - code.error_goto_if(self.result_code, self.pos)))
1.614 + (self.result(),
1.615 + self.target.result(),
1.616 + self.expr.result(),
1.617 + code.error_goto_if(self.result(), self.pos)))
1.618
1.619
1.620 class DictNode(ExprNode):
1.621 @@ -2690,13 +2693,13 @@
1.622 # pairs are evaluated and used one at a time.
1.623 code.putln(
1.624 "%s = PyDict_New(); %s" % (
1.625 - self.result_code,
1.626 - code.error_goto_if_null(self.result_code, self.pos)))
1.627 + self.result(),
1.628 + code.error_goto_if_null(self.result(), self.pos)))
1.629 for item in self.key_value_pairs:
1.630 item.generate_evaluation_code(code)
1.631 code.put_error_if_neg(self.pos,
1.632 "PyDict_SetItem(%s, %s, %s)" % (
1.633 - self.result_code,
1.634 + self.result(),
1.635 item.key.py_result(),
1.636 item.value.py_result()))
1.637 item.generate_disposal_code(code)
1.638 @@ -2763,12 +2766,12 @@
1.639 self.doc.py_result()))
1.640 code.putln(
1.641 '%s = __Pyx_CreateClass(%s, %s, %s, "%s"); %s' % (
1.642 - self.result_code,
1.643 + self.result(),
1.644 self.bases.py_result(),
1.645 self.dict.py_result(),
1.646 self.cname,
1.647 self.module_name,
1.648 - code.error_goto_if_null(self.result_code, self.pos)))
1.649 + code.error_goto_if_null(self.result(), self.pos)))
1.650
1.651
1.652 class UnboundMethodNode(ExprNode):
1.653 @@ -2792,10 +2795,10 @@
1.654 def generate_result_code(self, code):
1.655 code.putln(
1.656 "%s = PyMethod_New(%s, 0, %s); %s" % (
1.657 - self.result_code,
1.658 + self.result(),
1.659 self.function.py_result(),
1.660 self.class_cname,
1.661 - code.error_goto_if_null(self.result_code, self.pos)))
1.662 + code.error_goto_if_null(self.result(), self.pos)))
1.663
1.664
1.665 class PyCFunctionNode(AtomicExprNode):
1.666 @@ -2815,9 +2818,9 @@
1.667 def generate_result_code(self, code):
1.668 code.putln(
1.669 "%s = PyCFunction_New(&%s, 0); %s" % (
1.670 - self.result_code,
1.671 + self.result(),
1.672 self.pymethdef_cname,
1.673 - code.error_goto_if_null(self.result_code, self.pos)))
1.674 + code.error_goto_if_null(self.result(), self.pos)))
1.675
1.676 #-------------------------------------------------------------------
1.677 #
1.678 @@ -2888,10 +2891,10 @@
1.679 function = self.py_operation_function()
1.680 code.putln(
1.681 "%s = %s(%s); %s" % (
1.682 - self.result_code,
1.683 + self.result(),
1.684 function,
1.685 self.operand.py_result(),
1.686 - code.error_goto_if_null(self.result_code, self.pos)))
1.687 + code.error_goto_if_null(self.result(), self.pos)))
1.688
1.689 def type_error(self):
1.690 if not self.operand.type.is_error:
1.691 @@ -2920,7 +2923,7 @@
1.692 self.type = PyrexTypes.c_bint_type
1.693
1.694 def calculate_result_code(self):
1.695 - return "(!%s)" % self.operand.result_code
1.696 + return "(!%s)" % self.operand.result()
1.697
1.698 def generate_result_code(self, code):
1.699 pass
1.700 @@ -2938,7 +2941,7 @@
1.701 return "PyNumber_Positive"
1.702
1.703 def calculate_result_code(self):
1.704 - return self.operand.result_code
1.705 + return self.operand.result()
1.706
1.707
1.708 class UnaryMinusNode(UnopNode):
1.709 @@ -2956,7 +2959,7 @@
1.710 return "PyNumber_Negative"
1.711
1.712 def calculate_result_code(self):
1.713 - return "(-%s)" % self.operand.result_code
1.714 + return "(-%s)" % self.operand.result()
1.715
1.716
1.717 class TildeNode(UnopNode):
1.718 @@ -2972,7 +2975,7 @@
1.719 return "PyNumber_Invert"
1.720
1.721 def calculate_result_code(self):
1.722 - return "(~%s)" % self.operand.result_code
1.723 + return "(~%s)" % self.operand.result()
1.724
1.725
1.726 class AmpersandNode(ExprNode):
1.727 @@ -3002,7 +3005,7 @@
1.728 self.result_code = "<error>"
1.729
1.730 def calculate_result_code(self):
1.731 - return "(&%s)" % self.operand.result_code
1.732 + return "(&%s)" % self.operand.result()
1.733
1.734 def generate_result_code(self, code):
1.735 pass
1.736 @@ -3073,8 +3076,7 @@
1.737
1.738 def calculate_result_code(self):
1.739 opnd = self.operand
1.740 - result_code = self.type.cast_code(opnd.result_code)
1.741 - return result_code
1.742 + return self.type.cast_code(opnd.result())
1.743
1.744 def result_as(self, type):
1.745 if self.type.is_pyobject and not self.is_temp:
1.746 @@ -3087,9 +3089,9 @@
1.747 if self.is_temp:
1.748 code.putln(
1.749 "%s = (PyObject *)%s;" % (
1.750 - self.result_code,
1.751 - self.operand.result_code))
1.752 - code.put_incref(self.result_code, self.ctype())
1.753 + self.result(),
1.754 + self.operand.result()))
1.755 + code.put_incref(self.result(), self.ctype())
1.756
1.757
1.758 class SizeofNode(ExprNode):
1.759 @@ -3158,7 +3160,7 @@
1.760 self.type = PyrexTypes.c_int_type
1.761
1.762 def calculate_result_code(self):
1.763 - return "(sizeof(%s))" % self.operand.result_code
1.764 + return "(sizeof(%s))" % self.operand.result()
1.765
1.766 def generate_result_code(self, code):
1.767 pass
1.768 @@ -3266,12 +3268,12 @@
1.769 extra_args = ""
1.770 code.putln(
1.771 "%s = %s(%s, %s%s); %s" % (
1.772 - self.result_code,
1.773 + self.result(),
1.774 function,
1.775 self.operand1.py_result(),
1.776 self.operand2.py_result(),
1.777 extra_args,
1.778 - code.error_goto_if_null(self.result_code, self.pos)))
1.779 + code.error_goto_if_null(self.result(), self.pos)))
1.780 else:
1.781 if self.is_temp:
1.782 self.generate_c_operation_code(code)
1.783 @@ -3312,9 +3314,9 @@
1.784
1.785 def calculate_result_code(self):
1.786 return "(%s %s %s)" % (
1.787 - self.operand1.result_code,
1.788 + self.operand1.result(),
1.789 self.operator,
1.790 - self.operand2.result_code)
1.791 + self.operand2.result())
1.792
1.793 def py_operation_function(self):
1.794 return self.py_functions[self.operator]
1.795 @@ -3396,9 +3398,9 @@
1.796
1.797 def calculate_result_code(self):
1.798 return "(%s %s %s)" % (
1.799 - self.operand1.result_code,
1.800 + self.operand1.result(),
1.801 "/", # c division is by default floor-div
1.802 - self.operand2.result_code)
1.803 + self.operand2.result())
1.804
1.805
1.806 class ModNode(IntBinopNode):
1.807 @@ -3438,7 +3440,7 @@
1.808
1.809 def calculate_result_code(self):
1.810 return "pow(%s, %s)" % (
1.811 - self.operand1.result_code, self.operand2.result_code)
1.812 + self.operand1.result(), self.operand2.result())
1.813
1.814
1.815 class BoolBinopNode(ExprNode):
1.816 @@ -3492,11 +3494,11 @@
1.817 # assignments and increfs/decrefs that would otherwise
1.818 # be necessary.
1.819 self.allocate_temp(env, result_code)
1.820 - self.operand1.allocate_temps(env, self.result_code)
1.821 + self.operand1.allocate_temps(env, self.result())
1.822 if self.temp_bool:
1.823 self.temp_bool.allocate_temp(env)
1.824 self.temp_bool.release_temp(env)
1.825 - self.operand2.allocate_temps(env, self.result_code)
1.826 + self.operand2.allocate_temps(env, self.result())
1.827 # We haven't called release_temp on either operand,
1.828 # because although they are temp nodes, they don't own
1.829 # their result variable. And because they are temp
1.830 @@ -3511,9 +3513,9 @@
1.831
1.832 def calculate_result_code(self):
1.833 return "(%s %s %s)" % (
1.834 - self.operand1.result_code,
1.835 + self.operand1.result(),
1.836 self.py_to_c_op[self.operator],
1.837 - self.operand2.result_code)
1.838 + self.operand2.result())
1.839
1.840 py_to_c_op = {'and': "&&", 'or': "||"}
1.841
1.842 @@ -3536,14 +3538,14 @@
1.843 def generate_operand1_test(self, code):
1.844 # Generate code to test the truth of the first operand.
1.845 if self.type.is_pyobject:
1.846 - test_result = self.temp_bool.result_code
1.847 + test_result = self.temp_bool.result()
1.848 code.putln(
1.849 "%s = __Pyx_PyObject_IsTrue(%s); %s" % (
1.850 test_result,
1.851 self.operand1.py_result(),
1.852 code.error_goto_if_neg(test_result, self.pos)))
1.853 else:
1.854 - test_result = self.operand1.result_code
1.855 + test_result = self.operand1.result()
1.856 return test_result
1.857
1.858
1.859 @@ -3586,8 +3588,8 @@
1.860 # be necessary.
1.861 self.allocate_temp(env, result_code)
1.862 self.test.allocate_temps(env, result_code)
1.863 - self.true_val.allocate_temps(env, self.result_code)
1.864 - self.false_val.allocate_temps(env, self.result_code)
1.865 + self.true_val.allocate_temps(env, self.result())
1.866 + self.false_val.allocate_temps(env, self.result())
1.867 # We haven't called release_temp on either value,
1.868 # because although they are temp nodes, they don't own
1.869 # their result variable. And because they are temp
1.870 @@ -3627,7 +3629,7 @@
1.871
1.872 def generate_evaluation_code(self, code):
1.873 self.test.generate_evaluation_code(code)
1.874 - code.putln("if (%s) {" % self.test.result_code )
1.875 + code.putln("if (%s) {" % self.test.result() )
1.876 self.true_val.generate_evaluation_code(code)
1.877 code.putln("} else {")
1.878 self.false_val.generate_evaluation_code(code)
1.879 @@ -3844,19 +3846,19 @@
1.880
1.881 def calculate_result_code(self):
1.882 return "(%s %s %s)" % (
1.883 - self.operand1.result_code,
1.884 + self.operand1.result(),
1.885 self.c_operator(self.operator),
1.886 - self.operand2.result_code)
1.887 + self.operand2.result())
1.888
1.889 def generate_evaluation_code(self, code):
1.890 self.operand1.generate_evaluation_code(code)
1.891 self.operand2.generate_evaluation_code(code)
1.892 if self.is_temp:
1.893 - self.generate_operation_code(code, self.result_code,
1.894 + self.generate_operation_code(code, self.result(),
1.895 self.operand1, self.operator, self.operand2)
1.896 if self.cascade:
1.897 self.cascade.generate_evaluation_code(code,
1.898 - self.result_code, self.operand2)
1.899 + self.result(), self.operand2)
1.900 self.operand1.generate_disposal_code(code)
1.901 self.operand2.generate_disposal_code(code)
1.902
1.903 @@ -4047,7 +4049,7 @@
1.904 return self.arg.is_ephemeral()
1.905
1.906 def calculate_result_code(self):
1.907 - return self.arg.result_code
1.908 + return self.arg.result()
1.909
1.910 def generate_result_code(self, code):
1.911 if self.type.typeobj_is_available():
1.912 @@ -4085,10 +4087,10 @@
1.913 def generate_result_code(self, code):
1.914 function = self.arg.type.to_py_function
1.915 code.putln('%s = %s(%s); %s' % (
1.916 - self.result_code,
1.917 + self.result(),
1.918 function,
1.919 - self.arg.result_code,
1.920 - code.error_goto_if_null(self.result_code, self.pos)))
1.921 + self.arg.result(),
1.922 + code.error_goto_if_null(self.result(), self.pos)))
1.923
1.924
1.925 class CoerceFromPyTypeNode(CoercionNode):
1.926 @@ -4117,9 +4119,9 @@
1.927 if self.type.is_enum:
1.928 rhs = typecast(self.type, c_long_type, rhs)
1.929 code.putln('%s = %s; %s' % (
1.930 - self.result_code,
1.931 + self.result(),
1.932 rhs,
1.933 - code.error_goto_if(self.type.error_condition(self.result_code), self.pos)))
1.934 + code.error_goto_if(self.type.error_condition(self.result()), self.pos)))
1.935
1.936
1.937 class CoerceToBooleanNode(CoercionNode):
1.938 @@ -4142,15 +4144,15 @@
1.939 self.arg.check_const()
1.940
1.941 def calculate_result_code(self):
1.942 - return "(%s != 0)" % self.arg.result_code
1.943 + return "(%s != 0)" % self.arg.result()
1.944
1.945 def generate_result_code(self, code):
1.946 if self.arg.type.is_pyobject:
1.947 code.putln(
1.948 "%s = __Pyx_PyObject_IsTrue(%s); %s" % (
1.949 - self.result_code,
1.950 + self.result(),
1.951 self.arg.py_result(),
1.952 - code.error_goto_if_neg(self.result_code, self.pos)))
1.953 + code.error_goto_if_neg(self.result(), self.pos)))
1.954
1.955
1.956 class CoerceToTempNode(CoercionNode):
1.957 @@ -4176,9 +4178,9 @@
1.958 #self.arg.generate_evaluation_code(code) # Already done
1.959 # by generic generate_subexpr_evaluation_code!
1.960 code.putln("%s = %s;" % (
1.961 - self.result_code, self.arg.result_as(self.ctype())))
1.962 - if self.type.is_pyobject:
1.963 - code.put_incref(self.result_code, self.ctype())
1.964 + self.result(), self.arg.result_as(self.ctype())))
1.965 + if self.type.is_pyobject:
1.966 + code.put_incref(self.result(), self.ctype())
1.967
1.968
1.969 class CloneNode(CoercionNode):
1.970 @@ -4200,7 +4202,7 @@
1.971 self.entry = arg.entry
1.972
1.973 def calculate_result_code(self):
1.974 - return self.arg.result_code
1.975 + return self.arg.result()
1.976
1.977 def analyse_types(self, env):
1.978 self.type = self.arg.type
1.979 @@ -4249,22 +4251,22 @@
1.980 self.analyse_counter += 1
1.981
1.982 def calculate_result_code(self):
1.983 - return self.result_code
1.984 + return self.result()
1.985
1.986 def generate_evaluation_code(self, code):
1.987 if self.generate_counter == 0:
1.988 self.arg.generate_evaluation_code(code)
1.989 code.putln("%s = %s;" % (
1.990 - self.result_code, self.arg.result_as(self.ctype())))
1.991 - if self.type.is_pyobject:
1.992 - code.put_incref(self.result_code, self.ctype())
1.993 + self.result(), self.arg.result_as(self.ctype())))
1.994 + if self.type.is_pyobject:
1.995 + code.put_incref(self.result(), self.ctype())
1.996 self.arg.generate_disposal_code(code)
1.997 self.generate_counter += 1
1.998
1.999 def generate_disposal_code(self, code):
1.1000 if self.generate_counter == self.uses:
1.1001 if self.type.is_pyobject:
1.1002 - code.put_decref_clear(self.result_code, self.ctype())
1.1003 + code.put_decref_clear(self.result(), self.ctype())
1.1004
1.1005 def allocate_temps(self, env, result=None):
1.1006 if self.temp_counter == 0:
1.1007 @@ -4281,7 +4283,7 @@
1.1008
1.1009 def release_temp(self, env):
1.1010 if self.temp_counter == self.uses:
1.1011 - env.release_temp(self.result_code)
1.1012 + env.release_temp(self.result())
1.1013
1.1014 #------------------------------------------------------------------------------------
1.1015 #
2.1 --- a/Cython/Compiler/Nodes.py Tue Sep 23 11:53:34 2008 -0700
2.2 +++ b/Cython/Compiler/Nodes.py Tue Sep 23 13:48:06 2008 -0700
2.3 @@ -439,7 +439,7 @@
2.4 self.dimension.analyse_const_expression(env)
2.5 if not self.dimension.type.is_int:
2.6 error(self.dimension.pos, "Array dimension not integer")
2.7 - size = self.dimension.result_code
2.8 + size = self.dimension.result()
2.9 else:
2.10 size = None
2.11 if not base_type.is_complete():
2.12 @@ -529,7 +529,7 @@
2.13 "Exception value must be a Python exception or cdef function with no arguments.")
2.14 exc_val = self.exception_value
2.15 else:
2.16 - exc_val = self.exception_value.result_code
2.17 + exc_val = self.exception_value.result()
2.18 if not return_type.assignable_from(self.exception_value.type):
2.19 error(self.exception_value.pos,
2.20 "Exception value incompatible with function return type")
2.21 @@ -815,7 +815,7 @@
2.22 if not self.value.type.is_int:
2.23 self.value = self.value.coerce_to(PyrexTypes.c_int_type, env)
2.24 self.value.analyse_const_expression(env)
2.25 - value = self.value.result_code
2.26 + value = self.value.result()
2.27 else:
2.28 value = self.name
2.29 entry = env.declare_const(self.name, enum_entry.type,
2.30 @@ -1100,7 +1100,7 @@
2.31 if default.is_temp and default.type.is_pyobject:
2.32 code.putln(
2.33 "%s = 0;" %
2.34 - default.result_code)
2.35 + default.result())
2.36 # For Python class methods, create and store function object
2.37 if self.assmt:
2.38 self.assmt.generate_execution_code(code)
2.39 @@ -2142,16 +2142,16 @@
2.40 code.putln("else {")
2.41 else:
2.42 code.putln("else if (unlikely(Py_TYPE(%s)->tp_dictoffset != 0)) {" % self_arg)
2.43 - err = code.error_goto_if_null(self.func_node.result_code, self.pos)
2.44 + err = code.error_goto_if_null(self.func_node.result(), self.pos)
2.45 # need to get attribute manually--scope would return cdef method
2.46 - code.putln("%s = PyObject_GetAttr(%s, %s); %s" % (self.func_node.result_code, self_arg, self.py_func.interned_attr_cname, err))
2.47 + code.putln("%s = PyObject_GetAttr(%s, %s); %s" % (self.func_node.result(), self_arg, self.py_func.interned_attr_cname, err))
2.48 # It appears that this type is not anywhere exposed in the Python/C API
2.49 - is_builtin_function_or_method = '(strcmp(Py_TYPE(%s)->tp_name, "builtin_function_or_method") == 0)' % self.func_node.result_code
2.50 - is_overridden = '(PyCFunction_GET_FUNCTION(%s) != (void *)&%s)' % (self.func_node.result_code, self.py_func.entry.func_cname)
2.51 + is_builtin_function_or_method = '(strcmp(Py_TYPE(%s)->tp_name, "builtin_function_or_method") == 0)' % self.func_node.result()
2.52 + is_overridden = '(PyCFunction_GET_FUNCTION(%s) != (void *)&%s)' % (self.func_node.result(), self.py_func.entry.func_cname)
2.53 code.putln('if (!%s || %s) {' % (is_builtin_function_or_method, is_overridden))
2.54 self.body.generate_execution_code(code)
2.55 code.putln('}')
2.56 - code.put_decref_clear(self.func_node.result_code, PyrexTypes.py_object_type)
2.57 + code.put_decref_clear(self.func_node.result(), PyrexTypes.py_object_type)
2.58 code.putln("}")
2.59
2.60 class ClassDefNode(StatNode, BlockNode):
2.61 @@ -2208,8 +2208,8 @@
2.62 self.classobj.analyse_expressions(env)
2.63 genv = env.global_scope()
2.64 cenv = self.scope
2.65 - cenv.class_dict_cname = self.dict.result_code
2.66 - cenv.namespace_cname = cenv.class_obj_cname = self.classobj.result_code
2.67 + cenv.class_dict_cname = self.dict.result()
2.68 + cenv.namespace_cname = cenv.class_obj_cname = self.classobj.result()
2.69 self.body.analyse_expressions(cenv)
2.70 self.target.analyse_target_expression(env, self.classobj)
2.71 self.dict.release_temp(env)
2.72 @@ -2418,8 +2418,8 @@
2.73
2.74 def generate_execution_code(self, code):
2.75 self.expr.generate_evaluation_code(code)
2.76 - if not self.expr.is_temp and self.expr.result_code:
2.77 - code.putln("%s;" % self.expr.result_code)
2.78 + if not self.expr.is_temp and self.expr.result():
2.79 + code.putln("%s;" % self.expr.result())
2.80 self.expr.generate_disposal_code(code)
2.81
2.82 def annotate(self, code):
2.83 @@ -2673,8 +2673,8 @@
2.84 elif self.rhs.type.is_pyobject:
2.85 self.rhs = self.rhs.coerce_to(self.lhs.type, env)
2.86 if self.lhs.type.is_pyobject:
2.87 - self.result = ExprNodes.PyTempNode(self.pos, env).coerce_to(self.lhs.type, env)
2.88 - self.result.allocate_temps(env)
2.89 + self.result_value = ExprNodes.PyTempNode(self.pos, env).coerce_to(self.lhs.type, env)
2.90 + self.result_value.allocate_temps(env)
2.91 # if use_temp:
2.92 # self.rhs = self.rhs.coerce_to_temp(env)
2.93 self.rhs.allocate_temps(env)
2.94 @@ -2689,7 +2689,7 @@
2.95 self.dup.release_subexpr_temps(env)
2.96 # self.rhs.release_temp(env)
2.97 if self.lhs.type.is_pyobject:
2.98 - self.result.release_temp(env)
2.99 + self.result_value.release_temp(env)
2.100
2.101 def generate_execution_code(self, code):
2.102 self.rhs.generate_evaluation_code(code)
2.103 @@ -2706,16 +2706,16 @@
2.104 self.dup.generate_result_code(code)
2.105 code.putln(
2.106 "%s = %s(%s, %s%s); %s" % (
2.107 - self.result.result_code,
2.108 + self.result_value.result(),
2.109 self.py_operation_function(),
2.110 self.dup.py_result(),
2.111 self.rhs.py_result(),
2.112 extra,
2.113 - code.error_goto_if_null(self.result.py_result(), self.pos)))
2.114 - self.result.generate_evaluation_code(code) # May be a type check...
2.115 + code.error_goto_if_null(self.result_value.py_result(), self.pos)))
2.116 + self.result_value.generate_evaluation_code(code) # May be a type check...
2.117 self.rhs.generate_disposal_code(code)
2.118 self.dup.generate_disposal_code(code)
2.119 - self.lhs.generate_assignment_code(self.result, code)
2.120 + self.lhs.generate_assignment_code(self.result_value, code)
2.121 else:
2.122 c_op = self.operator
2.123 if c_op == "//":
2.124 @@ -2730,7 +2730,7 @@
2.125 self.lhs.generate_buffer_setitem_code(self.rhs, code, c_op)
2.126 else:
2.127 self.dup.generate_result_code(code)
2.128 - code.putln("%s %s= %s;" % (self.lhs.result_code, c_op, self.rhs.result_code) )
2.129 + code.putln("%s %s= %s;" % (self.lhs.result(), c_op, self.rhs.result()) )
2.130 self.rhs.generate_disposal_code(code)
2.131 if self.dup.is_temp:
2.132 self.dup.generate_subexpr_disposal_code(code)
2.133 @@ -3090,7 +3090,7 @@
2.134 self.cond.generate_evaluation_code(code)
2.135 code.putln(
2.136 "if (unlikely(!%s)) {" %
2.137 - self.cond.result_code)
2.138 + self.cond.result())
2.139 if self.value:
2.140 self.value.generate_evaluation_code(code)
2.141 code.putln(
2.142 @@ -3185,7 +3185,7 @@
2.143 self.condition.generate_evaluation_code(code)
2.144 code.putln(
2.145 "if (%s) {" %
2.146 - self.condition.result_code)
2.147 + self.condition.result())
2.148 self.body.generate_execution_code(code)
2.149 #code.putln(
2.150 # "goto %s;" %
2.151 @@ -3283,7 +3283,7 @@
2.152 self.condition.generate_evaluation_code(code)
2.153 code.putln(
2.154 "if (!%s) break;" %
2.155 - self.condition.result_code)
2.156 + self.condition.result())
2.157 self.body.generate_execution_code(code)
2.158 code.put_label(code.continue_label)
2.159 code.putln("}")
2.160 @@ -3480,7 +3480,7 @@
2.161 c_loopvar_node = ExprNodes.TempNode(self.pos,
2.162 PyrexTypes.c_long_type, env)
2.163 c_loopvar_node.allocate_temps(env)
2.164 - self.loopvar_name = c_loopvar_node.result_code
2.165 + self.loopvar_name = c_loopvar_node.result()
2.166 self.py_loopvar_node = \
2.167 ExprNodes.CloneNode(c_loopvar_node).coerce_to_pyobject(env)
2.168 self.bound1.allocate_temps(env)
2.169 @@ -3509,12 +3509,12 @@
2.170 offset, incop = self.relation_table[self.relation1]
2.171 if self.step is not None:
2.172 self.step.generate_evaluation_code(code)
2.173 - incop = "%s=%s" % (incop[0], self.step.result_code)
2.174 + incop = "%s=%s" % (incop[0], self.step.result())
2.175 code.putln(
2.176 "for (%s = %s%s; %s %s %s; %s%s) {" % (
2.177 self.loopvar_name,
2.178 - self.bound1.result_code, offset,
2.179 - self.loopvar_name, self.relation2, self.bound2.result_code,
2.180 + self.bound1.result(), offset,
2.181 + self.loopvar_name, self.relation2, self.bound2.result(),
2.182 self.loopvar_name, incop))
2.183 if self.py_loopvar_node:
2.184 self.py_loopvar_node.generate_evaluation_code(code)
2.185 @@ -4180,10 +4180,10 @@
2.186 for cname, target in self.interned_items:
2.187 code.putln(
2.188 '%s = PyObject_GetAttr(%s, %s); %s' % (
2.189 - self.item.result_code,
2.190 + self.item.result(),
2.191 self.module.py_result(),
2.192 cname,
2.193 - code.error_goto_if_null(self.item.result_code, self.pos)))
2.194 + code.error_goto_if_null(self.item.result(), self.pos)))
2.195 target.generate_assignment_code(self.item, code)
2.196 self.module.generate_disposal_code(code)
2.197
