Author: David Malcolm <dmalc...@redhat.com> Branch: libgccjit-backend Changeset: r75085:a2a235719797 Date: 2014-12-23 11:07 -0500 http://bitbucket.org/pypy/pypy/changeset/a2a235719797/
Log: Whitespace cleanups diff --git a/rpython/jit/backend/libgccjit/assembler.py b/rpython/jit/backend/libgccjit/assembler.py --- a/rpython/jit/backend/libgccjit/assembler.py +++ b/rpython/jit/backend/libgccjit/assembler.py @@ -6,9 +6,11 @@ from rpython.jit.backend.libgccjit.rffi_bindings import ( make_eci, Library, make_param_array, make_field_array, Context, Type, RValue) -from rpython.jit.metainterp.history import BoxInt, ConstInt, BoxFloat, ConstFloat, BoxPtr, ConstPtr +from rpython.jit.metainterp.history import ( + BoxInt, ConstInt, BoxFloat, ConstFloat, BoxPtr, ConstPtr) from rpython.jit.metainterp.resoperation import * -from rpython.rtyper.annlowlevel import llhelper, cast_instance_to_gcref, cast_object_to_ptr +from rpython.rtyper.annlowlevel import ( + llhelper, cast_instance_to_gcref, cast_object_to_ptr) from rpython.rtyper.lltypesystem.rffi import * from rpython.rtyper.lltypesystem import lltype, rffi, rstr, llmemory @@ -34,10 +36,10 @@ self.rffi_fn = rffi_fn self.patchpoints = [] - def new_block(self, name): + def new_block(self, name): return self.rffi_fn.new_block(name) - def new_local(self, type_, name): + def new_local(self, type_, name): return self.rffi_fn.new_local(type_, name) class Patchpoint: @@ -69,7 +71,7 @@ 0x00007fffeb7086d0 <+16>: jle 0x7fffeb7086c8 <anonloop_0+8> 0x00007fffeb7086d2 <+18>: mov %rax,0x48(%rdi) - 0x00007fffeb7086d6 <+22>: mov 0x2008fb(%rip),%rax # 0x7fffeb908fd8 + 0x00007fffeb7086d6 <+22>: mov 0x2008fb(%rip),%rax # 0x7fffeb908fd8 0x00007fffeb7086dd <+29>: mov (%rax),%rax 0x00007fffeb7086e0 <+32>: jmpq *%rax """ @@ -77,10 +79,10 @@ self.failure_params = Params(assembler) self.serial = assembler.num_guard_failure_fns assembler.num_guard_failure_fns += 1 - self.t_fn_ptr_type = ( - assembler.ctxt.new_function_ptr_type (assembler.t_jit_frame_ptr, - self.failure_params.paramtypes, - r_int(0))) + self.t_fn_ptr_type = assembler.ctxt.new_function_ptr_type ( + assembler.t_jit_frame_ptr, + self.failure_params.paramtypes, + r_int(0)) # Create the function ptr # Globals are zero-initialized, so we'll need to # write in the ptr to the initial handler before the loop is called, @@ -169,36 +171,44 @@ def make_context(self): self.ctxt = Context.acquire(self.lib)#self.lib.gcc_jit_context_acquire() if 0: - self.ctxt.set_bool_option(self.lib.GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE, - r_int(1)) + self.ctxt.set_bool_option( + self.lib.GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE, + r_int(1)) if 0: - self.ctxt.set_bool_option(self.lib.GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE, - r_int(1)) + self.ctxt.set_bool_option( + self.lib.GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE, + r_int(1)) if 1: - self.ctxt.set_bool_option(self.lib.GCC_JIT_BOOL_OPTION_DEBUGINFO, - r_int(1)) + self.ctxt.set_bool_option( + self.lib.GCC_JIT_BOOL_OPTION_DEBUGINFO, + r_int(1)) if 1: - self.ctxt.set_int_option(self.lib.GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, - r_int(2)) + self.ctxt.set_int_option( + self.lib.GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, + r_int(2)) if 1: - self.ctxt.set_bool_option(self.lib.GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES, - r_int(1)) + self.ctxt.set_bool_option( + self.lib.GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES, + r_int(1)) if 1: - self.ctxt.set_bool_option(self.lib.GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING, - r_int(1)) + self.ctxt.set_bool_option( + self.lib.GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING, + r_int(1)) if 0: - self.ctxt.set_bool_option(self.lib.GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE, - r_int(1)) + self.ctxt.set_bool_option( + self.lib.GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE, + r_int(1)) self.t_Signed = self.ctxt.get_int_type(r_int(self.sizeof_signed), r_int(1)) self.t_UINT = self.ctxt.get_int_type(r_int(self.sizeof_signed), r_int(0)) - self.t_float = self.ctxt.get_type(self.lib.GCC_JIT_TYPE_DOUBLE) # FIXME + self.t_float = self.ctxt.get_type(self.lib.GCC_JIT_TYPE_DOUBLE) # FIXME self.t_bool = self.ctxt.get_type(self.lib.GCC_JIT_TYPE_BOOL) self.t_void_ptr = self.ctxt.get_type(self.lib.GCC_JIT_TYPE_VOID_PTR) self.t_void = self.ctxt.get_type(self.lib.GCC_JIT_TYPE_VOID) - self.t_char_ptr = self.ctxt.get_type(self.lib.GCC_JIT_TYPE_CHAR).get_pointer() + self.t_char_ptr = self.ctxt.get_type( + self.lib.GCC_JIT_TYPE_CHAR).get_pointer() self.u_signed = self.ctxt.new_field(self.t_Signed, "u_signed") self.u_float = self.ctxt.new_field(self.t_float, "u_float") @@ -374,12 +384,13 @@ #jitframe.JITFRAMEINFOPTR self.loop_params = Params(self) - self.fn = Function(name, - self.ctxt.new_function(self.lib.GCC_JIT_FUNCTION_EXPORTED, - self.t_jit_frame_ptr, - name, - self.loop_params.paramlist, - r_int(0))) + self.fn = Function( + name, + self.ctxt.new_function(self.lib.GCC_JIT_FUNCTION_EXPORTED, + self.t_jit_frame_ptr, + name, + self.loop_params.paramlist, + r_int(0))) self.b_current = self.fn.new_block("initial") @@ -401,11 +412,13 @@ # (gdb) p *(double*)&jitframe->arg1 # $8 = -2.25 #src_ptr_rvalue = self.get_arg_as_lvalue(idx).get_address() - #src_ptr_rvalue = self.ctxt.new_cast(src_ptr_rvalue, self.t_float.get_pointer()) + #src_ptr_rvalue = self.ctxt.new_cast(src_ptr_rvalue, + # self.t_float.get_pointer()) #src_rvalue = self.ctxt.new_dereference(src_ptr_rvalue) # or do it as a union field = self.get_union_field_for_expr(arg) - src_rvalue = self.get_arg_as_lvalue(idx).access_field(field).as_rvalue() + src_rvalue = self.get_arg_as_lvalue( + idx).access_field(field).as_rvalue() # FIXME: this may need a cast: #src_rvalue = self.ctxt.new_cast(src_rvalue, self.t_float) self.b_current.add_assignment( @@ -451,8 +464,9 @@ elif isinstance(expr, ConstFloat): #print('value: %r' % expr.value) #print('type(value): %r' % type(expr.value)) - return self.ctxt.new_rvalue_from_double(self.t_float, - expr.value)#r_double(expr.value)) + return self.ctxt.new_rvalue_from_double( + self.t_float, + expr.value)#r_double(expr.value)) elif isinstance(expr, ConstPtr): #print('value: %r' % expr.value) #print('type(value): %r' % type(expr.value)) @@ -482,7 +496,7 @@ """ if isinstance(expr, (BoxInt, BoxFloat, BoxPtr)): return self.get_box_as_lvalue(expr) - + raise NotImplementedError('unhandled expr: %s' % expr) def get_type_for_box(self, box): @@ -503,7 +517,8 @@ elif isinstance(expr, (BoxPtr, ConstPtr)): return self.u_ptr; else: - raise NotImplementedError('unhandled expr: %s %s' % (expr, type(expr))) + raise NotImplementedError('unhandled expr: %s %s' + % (expr, type(expr))) # Handling of specific ResOperation subclasses: each one is # a method named "emit_foo", where "foo" is the str() of the resop. @@ -524,8 +539,8 @@ # We need to write to the boxes listed in the label's args # with the values from those listed in the jump's args. - # However, there are potential cases like JUMP(i0, i1) going to LABEL(i1, i0) - # where all such assignments happen "simultaneously". + # However, there are potential cases like JUMP(i0, i1) going + # to LABEL(i1, i0) where all such assignments happen "simultaneously". # Hence we need to set up temporaries. # First pass: capture the value of relevant boxes at the JUMP: tmps = [] @@ -551,11 +566,12 @@ # Sadly, we need to "import" the fn by name, since it was # created on a different gcc_jit_context. p = Params(self) - other_fn = self.ctxt.new_function(self.lib.GCC_JIT_FUNCTION_IMPORTED, - self.t_jit_frame_ptr, - dest_fn.name, - p.paramlist, - r_int(0)) + other_fn = self.ctxt.new_function( + self.lib.GCC_JIT_FUNCTION_IMPORTED, + self.t_jit_frame_ptr, + dest_fn.name, + p.paramlist, + r_int(0)) args = [param.as_rvalue() for param in self.loop_params.paramlist] call = self.ctxt.new_call(other_fn, args) @@ -564,7 +580,8 @@ def emit_finish(self, resop): self._impl_write_output_args(self.loop_params, resop._args) self._impl_write_jf_descr(self.loop_params, resop) - self.b_current.end_with_return(self.loop_params.param_frame.as_rvalue ()) + self.b_current.end_with_return( + self.loop_params.param_frame.as_rvalue ()) def emit_label(self, resop): print(resop) @@ -613,7 +630,8 @@ b_within_failure_fn = pp.failure_fn.new_block("initial") self.b_current = b_within_failure_fn self._impl_write_jf_descr(pp.failure_params, resop) - self.b_current.end_with_return(pp.failure_params.param_frame.as_rvalue ()) + self.b_current.end_with_return( + pp.failure_params.param_frame.as_rvalue ()) rd_locs = [] for idx, arg in enumerate(resop._fail_args): rd_locs.append(idx * self.sizeof_signed) @@ -629,7 +647,7 @@ def emit_guard_true(self, resop): self._impl_bool_guard(resop, r_int(1)) - + def emit_guard_false(self, resop): self._impl_bool_guard(resop, r_int(0)) @@ -922,7 +940,6 @@ self.b_current.add_assignment( field_lvalue, - # ... = ARG1, self.ctxt.new_cast(self.expr_to_rvalue(resop._arg1), t_field)) diff --git a/rpython/jit/backend/libgccjit/rffi_bindings.py b/rpython/jit/backend/libgccjit/rffi_bindings.py --- a/rpython/jit/backend/libgccjit/rffi_bindings.py +++ b/rpython/jit/backend/libgccjit/rffi_bindings.py @@ -96,274 +96,284 @@ # Entrypoints: for returntype, name, paramtypes in [ - (self.GCC_JIT_CONTEXT_P, - 'gcc_jit_context_acquire', []), + (self.GCC_JIT_CONTEXT_P, + 'gcc_jit_context_acquire', []), - (lltype.Void, - 'gcc_jit_context_release', [self.GCC_JIT_CONTEXT_P]), + (lltype.Void, + 'gcc_jit_context_release', [self.GCC_JIT_CONTEXT_P]), - (lltype.Void, - 'gcc_jit_context_set_int_option', [self.GCC_JIT_CONTEXT_P, - INT, # FIXME: enum gcc_jit_int_option opt, - INT]), - (lltype.Void, - 'gcc_jit_context_set_bool_option', [self.GCC_JIT_CONTEXT_P, - INT, # FIXME: enum gcc_jit_bool_option opt, - INT]), + (lltype.Void, + 'gcc_jit_context_set_int_option', [self.GCC_JIT_CONTEXT_P, + # FIXME: + # enum gcc_jit_int_option: + INT, + INT]), + (lltype.Void, + 'gcc_jit_context_set_bool_option', [self.GCC_JIT_CONTEXT_P, + # FIXME: + # enum gcc_jit_bool_option: + INT, + INT]), - (self.GCC_JIT_RESULT_P, - 'gcc_jit_context_compile', [self.GCC_JIT_CONTEXT_P]), + (self.GCC_JIT_RESULT_P, + 'gcc_jit_context_compile', [self.GCC_JIT_CONTEXT_P]), - (lltype.Void, - 'gcc_jit_context_dump_to_file', [self.GCC_JIT_CONTEXT_P, - CCHARP, - INT]), - - (CCHARP, - 'gcc_jit_context_get_last_error', [self.GCC_JIT_CONTEXT_P]), - - (VOIDP, - 'gcc_jit_result_get_code', [self.GCC_JIT_RESULT_P, - CCHARP]), - - (VOIDP, - 'gcc_jit_result_get_global', [self.GCC_JIT_RESULT_P, - CCHARP]), - - (lltype.Void, - 'gcc_jit_result_release', [self.GCC_JIT_RESULT_P]), - - (CCHARP, - 'gcc_jit_object_get_debug_string', [self.GCC_JIT_OBJECT_P]), - - ############################################################ - # Types - ############################################################ - (self.GCC_JIT_TYPE_P, - 'gcc_jit_context_get_type', [self.GCC_JIT_CONTEXT_P, + (lltype.Void, + 'gcc_jit_context_dump_to_file', [self.GCC_JIT_CONTEXT_P, + CCHARP, INT]), - (self.GCC_JIT_TYPE_P, - 'gcc_jit_context_get_int_type', [self.GCC_JIT_CONTEXT_P, - INT, - INT]), + (CCHARP, + 'gcc_jit_context_get_last_error', [self.GCC_JIT_CONTEXT_P]), - (self.GCC_JIT_TYPE_P, - 'gcc_jit_type_get_pointer', [self.GCC_JIT_TYPE_P]), + (VOIDP, + 'gcc_jit_result_get_code', [self.GCC_JIT_RESULT_P, + CCHARP]), - (self.GCC_JIT_FIELD_P, - 'gcc_jit_context_new_field', [self.GCC_JIT_CONTEXT_P, + (VOIDP, + 'gcc_jit_result_get_global', [self.GCC_JIT_RESULT_P, + CCHARP]), + + (lltype.Void, + 'gcc_jit_result_release', [self.GCC_JIT_RESULT_P]), + + (CCHARP, + 'gcc_jit_object_get_debug_string', [self.GCC_JIT_OBJECT_P]), + + ############################################################ + # Types + ############################################################ + (self.GCC_JIT_TYPE_P, + 'gcc_jit_context_get_type', [self.GCC_JIT_CONTEXT_P, + INT]), + + (self.GCC_JIT_TYPE_P, + 'gcc_jit_context_get_int_type', [self.GCC_JIT_CONTEXT_P, + INT, + INT]), + + (self.GCC_JIT_TYPE_P, + 'gcc_jit_type_get_pointer', [self.GCC_JIT_TYPE_P]), + + (self.GCC_JIT_FIELD_P, + 'gcc_jit_context_new_field', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_TYPE_P, + CCHARP]), + (self.GCC_JIT_STRUCT_P, + 'gcc_jit_context_new_struct_type', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + CCHARP, + INT, + self.FIELD_P_P]), + + (self.GCC_JIT_STRUCT_P, + 'gcc_jit_context_new_opaque_struct', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + CCHARP]), + (self.GCC_JIT_TYPE_P, + 'gcc_jit_struct_as_type', [self.GCC_JIT_STRUCT_P]), + + (lltype.Void, + 'gcc_jit_struct_set_fields', [self.GCC_JIT_STRUCT_P, + self.GCC_JIT_LOCATION_P, + INT, + self.FIELD_P_P]), + + (self.GCC_JIT_TYPE_P, + 'gcc_jit_context_new_union_type', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + CCHARP, + INT, + self.FIELD_P_P]), + + (self.GCC_JIT_TYPE_P, + 'gcc_jit_context_new_function_ptr_type', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_TYPE_P, + INT, + self.TYPE_P_P, + INT]), + + ############################################################ + # Constructing functions. + ############################################################ + (self.GCC_JIT_PARAM_P, + 'gcc_jit_context_new_param', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_TYPE_P, + CCHARP]), + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_param_as_lvalue', [self.GCC_JIT_PARAM_P]), + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_param_as_rvalue', [self.GCC_JIT_PARAM_P]), + + (self.GCC_JIT_FUNCTION_P, + 'gcc_jit_context_new_function', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + # FIXME: + # enum gcc_jit_function_kind: + INT, + self.GCC_JIT_TYPE_P, + CCHARP, + INT, + self.PARAM_P_P, + INT]), + + (self.GCC_JIT_OBJECT_P, + 'gcc_jit_function_as_object', [self.GCC_JIT_FUNCTION_P]), + + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_function_new_local', [self.GCC_JIT_FUNCTION_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_TYPE_P, + CCHARP]), + + (self.GCC_JIT_BLOCK_P, + 'gcc_jit_function_new_block', [self.GCC_JIT_FUNCTION_P, + CCHARP]), + + ############################################################ + # lvalues, rvalues and expressions. + ############################################################ + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_context_new_global', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + # FIXME enum gcc_jit_global_kind: + INT, + self.GCC_JIT_TYPE_P, + CCHARP]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_lvalue_as_rvalue', [self.GCC_JIT_LVALUE_P]), + + (self.GCC_JIT_TYPE_P, + 'gcc_jit_rvalue_get_type', [self.GCC_JIT_RVALUE_P]), + + # Integer constants. + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_rvalue_from_int', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P, + INT]), + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_rvalue_from_long', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P, + LONG]), + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_zero', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P]), + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_one', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P]), + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_rvalue_from_double', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P, + DOUBLE]), + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_rvalue_from_ptr', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P, + VOIDP]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_null', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_TYPE_P]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_unary_op', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + # FIXME enum gcc_jit_unary_op: + INT, + self.GCC_JIT_TYPE_P, + self.GCC_JIT_RVALUE_P]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_binary_op', [self.GCC_JIT_CONTEXT_P, self.GCC_JIT_LOCATION_P, + # FIXME enum gcc_jit_binary_op: + INT, self.GCC_JIT_TYPE_P, - CCHARP]), - (self.GCC_JIT_STRUCT_P, - 'gcc_jit_context_new_struct_type', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_RVALUE_P, + self.GCC_JIT_RVALUE_P]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_comparison', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + # FIXME enum gcc_jit_comparison: + INT, + self.GCC_JIT_RVALUE_P, + self.GCC_JIT_RVALUE_P]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_call', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_FUNCTION_P, + INT, + self.RVALUE_P_P]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_call_through_ptr',[self.GCC_JIT_CONTEXT_P, self.GCC_JIT_LOCATION_P, - CCHARP, + self.GCC_JIT_RVALUE_P, INT, - self.FIELD_P_P]), + self.RVALUE_P_P]), - (self.GCC_JIT_STRUCT_P, - 'gcc_jit_context_new_opaque_struct', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - CCHARP]), - (self.GCC_JIT_TYPE_P, - 'gcc_jit_struct_as_type', [self.GCC_JIT_STRUCT_P]), - - (lltype.Void, - 'gcc_jit_struct_set_fields', [self.GCC_JIT_STRUCT_P, - self.GCC_JIT_LOCATION_P, - INT, - self.FIELD_P_P]), - - (self.GCC_JIT_TYPE_P, - 'gcc_jit_context_new_union_type', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - CCHARP, - INT, - self.FIELD_P_P]), - - (self.GCC_JIT_TYPE_P, - 'gcc_jit_context_new_function_ptr_type', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_TYPE_P, - INT, - self.TYPE_P_P, - INT]), - - ############################################################ - # Constructing functions. - ############################################################ - (self.GCC_JIT_PARAM_P, - 'gcc_jit_context_new_param', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_TYPE_P, - CCHARP]), - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_param_as_lvalue', [self.GCC_JIT_PARAM_P]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_param_as_rvalue', [self.GCC_JIT_PARAM_P]), - - (self.GCC_JIT_FUNCTION_P, - 'gcc_jit_context_new_function', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - INT, # enum gcc_jit_function_kind kind, - self.GCC_JIT_TYPE_P, - CCHARP, - INT, - self.PARAM_P_P, - INT]), - - (self.GCC_JIT_OBJECT_P, - 'gcc_jit_function_as_object', [self.GCC_JIT_FUNCTION_P]), - - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_function_new_local', [self.GCC_JIT_FUNCTION_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_TYPE_P, - CCHARP]), - - (self.GCC_JIT_BLOCK_P, - 'gcc_jit_function_new_block', [self.GCC_JIT_FUNCTION_P, - CCHARP]), - - ############################################################ - # lvalues, rvalues and expressions. - ############################################################ - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_context_new_global', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - INT, # enum gcc_jit_global_kind - self.GCC_JIT_TYPE_P, - CCHARP]), - - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_lvalue_as_rvalue', [self.GCC_JIT_LVALUE_P]), - - (self.GCC_JIT_TYPE_P, - 'gcc_jit_rvalue_get_type', [self.GCC_JIT_RVALUE_P]), - - # Integer constants. - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_rvalue_from_int', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_TYPE_P, - INT]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_rvalue_from_long', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_TYPE_P, - LONG]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_zero', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_TYPE_P]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_one', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_TYPE_P]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_rvalue_from_double', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_TYPE_P, - DOUBLE]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_rvalue_from_ptr', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_TYPE_P, - VOIDP]), - - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_null', [self.GCC_JIT_CONTEXT_P, + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_context_new_cast', [self.GCC_JIT_CONTEXT_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_RVALUE_P, self.GCC_JIT_TYPE_P]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_unary_op', [self.GCC_JIT_CONTEXT_P, + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_context_new_array_access', [self.GCC_JIT_CONTEXT_P, self.GCC_JIT_LOCATION_P, - INT, # enum gcc_jit_unary_op op, - self.GCC_JIT_TYPE_P, + self.GCC_JIT_RVALUE_P, self.GCC_JIT_RVALUE_P]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_binary_op', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - INT, # enum gcc_jit_binary_op op, - self.GCC_JIT_TYPE_P, - self.GCC_JIT_RVALUE_P, - self.GCC_JIT_RVALUE_P]), + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_lvalue_access_field', [self.GCC_JIT_LVALUE_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_FIELD_P]), - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_comparison', [self.GCC_JIT_CONTEXT_P, + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_rvalue_dereference_field', [self.GCC_JIT_RVALUE_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_FIELD_P]), + + (self.GCC_JIT_LVALUE_P, + 'gcc_jit_rvalue_dereference', [self.GCC_JIT_RVALUE_P, + self.GCC_JIT_LOCATION_P]), + + (self.GCC_JIT_RVALUE_P, + 'gcc_jit_lvalue_get_address', [self.GCC_JIT_LVALUE_P, + self.GCC_JIT_LOCATION_P]), + + ############################################################ + # Statement-creation. + ############################################################ + (lltype.Void, + 'gcc_jit_block_add_assignment', [self.GCC_JIT_BLOCK_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_LVALUE_P, + self.GCC_JIT_RVALUE_P]), + (lltype.Void, + 'gcc_jit_block_add_comment', [self.GCC_JIT_BLOCK_P, + self.GCC_JIT_LOCATION_P, + CCHARP]), + (lltype.Void, + 'gcc_jit_block_end_with_conditional', [self.GCC_JIT_BLOCK_P, self.GCC_JIT_LOCATION_P, - INT, # enum gcc_jit_comparison op, self.GCC_JIT_RVALUE_P, - self.GCC_JIT_RVALUE_P]), - - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_call', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_FUNCTION_P, - INT, - self.RVALUE_P_P]), - - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_call_through_ptr',[self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_RVALUE_P, - INT, - self.RVALUE_P_P]), - - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_context_new_cast', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_RVALUE_P, - self.GCC_JIT_TYPE_P]), - - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_context_new_array_access', [self.GCC_JIT_CONTEXT_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_RVALUE_P, - self.GCC_JIT_RVALUE_P]), - - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_lvalue_access_field', [self.GCC_JIT_LVALUE_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_FIELD_P]), - - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_rvalue_dereference_field', [self.GCC_JIT_RVALUE_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_FIELD_P]), - - (self.GCC_JIT_LVALUE_P, - 'gcc_jit_rvalue_dereference', [self.GCC_JIT_RVALUE_P, - self.GCC_JIT_LOCATION_P]), - - (self.GCC_JIT_RVALUE_P, - 'gcc_jit_lvalue_get_address', [self.GCC_JIT_LVALUE_P, - self.GCC_JIT_LOCATION_P]), - - ############################################################ - # Statement-creation. - ############################################################ - (lltype.Void, - 'gcc_jit_block_add_assignment', [self.GCC_JIT_BLOCK_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_LVALUE_P, - self.GCC_JIT_RVALUE_P]), - (lltype.Void, - 'gcc_jit_block_add_comment', [self.GCC_JIT_BLOCK_P, + self.GCC_JIT_BLOCK_P, + self.GCC_JIT_BLOCK_P]), + (lltype.Void, + 'gcc_jit_block_end_with_jump', [self.GCC_JIT_BLOCK_P, + self.GCC_JIT_LOCATION_P, + self.GCC_JIT_BLOCK_P]), + (lltype.Void, + 'gcc_jit_block_end_with_return', [self.GCC_JIT_BLOCK_P, self.GCC_JIT_LOCATION_P, - CCHARP]), - (lltype.Void, - 'gcc_jit_block_end_with_conditional', [self.GCC_JIT_BLOCK_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_RVALUE_P, - self.GCC_JIT_BLOCK_P, - self.GCC_JIT_BLOCK_P]), - (lltype.Void, - 'gcc_jit_block_end_with_jump', [self.GCC_JIT_BLOCK_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_BLOCK_P]), - (lltype.Void, - 'gcc_jit_block_end_with_return', [self.GCC_JIT_BLOCK_P, - self.GCC_JIT_LOCATION_P, - self.GCC_JIT_RVALUE_P]), + self.GCC_JIT_RVALUE_P]), ]: self.add_entrypoint(returntype, name, paramtypes) @@ -545,13 +555,13 @@ lltype.free(field_array, flavor='raw') free_charp(name_charp) return Struct(self.lib, self, inner_struct) - + def new_opaque_struct(self, name): name_charp = str2charp(name) - inner_struct = ( - self.lib.gcc_jit_context_new_opaque_struct(self.inner_ctxt, - self.lib.null_location_ptr, - name_charp)) + inner_struct = self.lib.gcc_jit_context_new_opaque_struct( + self.inner_ctxt, + self.lib.null_location_ptr, + name_charp) free_charp(name_charp) return Struct(self.lib, self, inner_struct) @@ -579,12 +589,13 @@ for i in range(len(param_types)): raw_type_array[i] = param_types[i].inner_type - type_ = self.lib.gcc_jit_context_new_function_ptr_type(self.inner_ctxt, - self.lib.null_location_ptr, - returntype.inner_type, - r_int(len(param_types)), - raw_type_array, - is_variadic) + type_ = self.lib.gcc_jit_context_new_function_ptr_type( + self.inner_ctxt, + self.lib.null_location_ptr, + returntype.inner_type, + r_int(len(param_types)), + raw_type_array, + is_variadic) lltype.free(raw_type_array, flavor='raw') return Type(self.lib, self, type_) @@ -592,30 +603,34 @@ def new_rvalue_from_int(self, type_, llvalue): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_rvalue_from_int(self.inner_ctxt, - type_.inner_type, - llvalue)) + self.lib.gcc_jit_context_new_rvalue_from_int( + self.inner_ctxt, + type_.inner_type, + llvalue)) def new_rvalue_from_long(self, type_, llvalue): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_rvalue_from_long(self.inner_ctxt, - type_.inner_type, - llvalue)) + self.lib.gcc_jit_context_new_rvalue_from_long( + self.inner_ctxt, + type_.inner_type, + llvalue)) def new_rvalue_from_double(self, type_, llvalue): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_rvalue_from_double(self.inner_ctxt, - type_.inner_type, - llvalue)) + self.lib.gcc_jit_context_new_rvalue_from_double( + self.inner_ctxt, + type_.inner_type, + llvalue)) def new_rvalue_from_ptr(self, type_, llvalue): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_rvalue_from_ptr(self.inner_ctxt, - type_.inner_type, - llvalue)) + self.lib.gcc_jit_context_new_rvalue_from_ptr( + self.inner_ctxt, + type_.inner_type, + llvalue)) def null(self, pointer_type): @@ -627,28 +642,31 @@ def new_unary_op(self, op, type_, rvalue): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_unary_op(self.inner_ctxt, - self.lib.null_location_ptr, - op, - type_.inner_type, - rvalue.inner_rvalue)) + self.lib.gcc_jit_context_new_unary_op( + self.inner_ctxt, + self.lib.null_location_ptr, + op, + type_.inner_type, + rvalue.inner_rvalue)) def new_binary_op(self, op, type_, a, b): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_binary_op(self.inner_ctxt, - self.lib.null_location_ptr, - op, - type_.inner_type, - a.inner_rvalue, b.inner_rvalue)) + self.lib.gcc_jit_context_new_binary_op( + self.inner_ctxt, + self.lib.null_location_ptr, + op, + type_.inner_type, + a.inner_rvalue, b.inner_rvalue)) def new_comparison(self, op, a, b): return RValue(self.lib, self, - self.lib.gcc_jit_context_new_comparison(self.inner_ctxt, - self.lib.null_location_ptr, - op, - a.inner_rvalue, b.inner_rvalue)) + self.lib.gcc_jit_context_new_comparison( + self.inner_ctxt, + self.lib.null_location_ptr, + op, + a.inner_rvalue, b.inner_rvalue)) def new_call(self, fn, args): raw_arg_array = lltype.malloc(self.lib.RVALUE_P_P.TO, @@ -670,11 +688,12 @@ flavor='raw') # of maybe gc? for i in range(len(args)): raw_arg_array[i] = args[i].inner_rvalue - rvalue = self.lib.gcc_jit_context_new_call_through_ptr(self.inner_ctxt, - self.lib.null_location_ptr, - fn_ptr.inner_rvalue, - r_int(len(args)), - raw_arg_array) + rvalue = self.lib.gcc_jit_context_new_call_through_ptr( + self.inner_ctxt, + self.lib.null_location_ptr, + fn_ptr.inner_rvalue, + r_int(len(args)), + raw_arg_array) lltype.free(raw_arg_array, flavor='raw') return RValue(self.lib, self, rvalue) @@ -720,11 +739,12 @@ def new_cast(self, rvalue, type_): return RValue(self.lib, - self, - self.lib.gcc_jit_context_new_cast(self.inner_ctxt, - self.lib.null_location_ptr, - rvalue.inner_rvalue, - type_.inner_type)) + self, + self.lib.gcc_jit_context_new_cast( + self.inner_ctxt, + self.lib.null_location_ptr, + rvalue.inner_rvalue, + type_.inner_type)) def new_array_access(self, ptr, index): return LValue(self.lib, @@ -737,7 +757,8 @@ class LibgccjitError(Exception): def __init__(self, ctxt): - self.msg = charp2str(ctxt.lib.gcc_jit_context_get_last_error (ctxt.inner_ctxt)) + self.msg = charp2str(ctxt.lib.gcc_jit_context_get_last_error ( + ctxt.inner_ctxt)) #print('self.msg: %r' % self.msg) def __str__(self): @@ -757,7 +778,7 @@ def get_pointer(self): return Type(self.lib, - self, + self, self.lib.gcc_jit_type_get_pointer(self.inner_type)) class Field(Object): @@ -772,7 +793,7 @@ def as_type(self): return Type(self.lib, - self, + self, self.lib.gcc_jit_struct_as_type(self.inner_struct)) @@ -801,9 +822,10 @@ def dereference_field(self, field): return LValue(self.lib, self, - self.lib.gcc_jit_rvalue_dereference_field(self.inner_rvalue, - self.lib.null_location_ptr, - field.inner_field)) + self.lib.gcc_jit_rvalue_dereference_field( + self.inner_rvalue, + self.lib.null_location_ptr, + field.inner_field)) def dereference(self): return LValue(self.lib, @@ -825,9 +847,10 @@ def access_field(self, field): return LValue(self.lib, self, - self.lib.gcc_jit_lvalue_access_field (self.inner_lvalue, - self.lib.null_location_ptr, - field.inner_field)) + self.lib.gcc_jit_lvalue_access_field ( + self.inner_lvalue, + self.lib.null_location_ptr, + field.inner_field)) def get_address(self): return RValue(self.lib, diff --git a/rpython/jit/backend/libgccjit/test/test_rffi_bindings.py b/rpython/jit/backend/libgccjit/test/test_rffi_bindings.py --- a/rpython/jit/backend/libgccjit/test/test_rffi_bindings.py +++ b/rpython/jit/backend/libgccjit/test/test_rffi_bindings.py @@ -34,7 +34,8 @@ assert xf() == 3 """ -from rpython.jit.backend.libgccjit.rffi_bindings import make_eci, Library, make_param_array, Context +from rpython.jit.backend.libgccjit.rffi_bindings import ( + make_eci, Library, make_param_array, Context) def test_compile_empty_context(): eci = make_eci() @@ -46,7 +47,7 @@ result = lib.gcc_jit_context_compile(ctxt) lib.gcc_jit_context_release(ctxt) lib.gcc_jit_result_release(result) - + f1 = compile_c(f, [], backendopt=False) f1 () #assert False # to see stderr @@ -62,21 +63,26 @@ def f(): ctxt = lib.gcc_jit_context_acquire() - lib.gcc_jit_context_set_bool_option(ctxt, - lib.GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE, - r_int(1)) - lib.gcc_jit_context_set_int_option(ctxt, - lib.GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, - r_int(3)) - lib.gcc_jit_context_set_bool_option(ctxt, - lib.GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES, - r_int(1)) - lib.gcc_jit_context_set_bool_option(ctxt, - lib.GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING, - r_int(1)) - lib.gcc_jit_context_set_bool_option(ctxt, - lib.GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE, - r_int(1)) + lib.gcc_jit_context_set_bool_option( + ctxt, + lib.GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE, + r_int(1)) + lib.gcc_jit_context_set_int_option( + ctxt, + lib.GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, + r_int(3)) + lib.gcc_jit_context_set_bool_option( + ctxt, + lib.GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES, + r_int(1)) + lib.gcc_jit_context_set_bool_option( + ctxt, + lib.GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING, + r_int(1)) + lib.gcc_jit_context_set_bool_option( + ctxt, + lib.GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE, + r_int(1)) t_int = lib.gcc_jit_context_get_type(ctxt, lib.GCC_JIT_TYPE_INT) param_name = str2charp("input") param = lib.gcc_jit_context_new_param(ctxt, @@ -87,7 +93,7 @@ # FIXME: how to build an array of params at this level? # see liststr2charpp in rffi.py - + fn_name = str2charp("add_one_to") param_array = make_param_array(lib, [param]) fn = lib.gcc_jit_context_new_function(ctxt, @@ -109,12 +115,13 @@ b_initial = lib.gcc_jit_function_new_block(fn, block_name) free_charp(block_name) c_one = lib.gcc_jit_context_new_rvalue_from_int(ctxt, t_int, r_int(1)) - op_add = lib.gcc_jit_context_new_binary_op(ctxt, - lib.null_location_ptr, - lib.GCC_JIT_BINARY_OP_PLUS, - t_int, - lib.gcc_jit_param_as_rvalue(param), - c_one) + op_add = lib.gcc_jit_context_new_binary_op( + ctxt, + lib.null_location_ptr, + lib.GCC_JIT_BINARY_OP_PLUS, + t_int, + lib.gcc_jit_param_as_rvalue(param), + c_one) lib.gcc_jit_block_add_assignment(b_initial, lib.null_location_ptr, v_res, op_add) @@ -153,7 +160,7 @@ lib.gcc_jit_result_release(jit_result) return int(fn_result) - + f1 = compile_c(f, [], backendopt=False) assert f1() == 42 assert False # to see stderr @@ -222,10 +229,10 @@ jit_result.release() return int(fn_result) - + f1 = compile_c(f, [], backendopt=False) assert f1() == 42 assert False # to see stderr - + # TODO: test of an error # should turn it into an exception, and capture the error _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit