Mercurial > octave-nkf
diff src/jit-typeinfo.h @ 15056:bc32288f4a42
Support the end keyword for one dimentional indexing in JIT.
* src/jit-ir.cc (jit_magic_end): New class.
* src/jit-ir.h (jit_magic_end): New class.
(jit_instruction::jit_instruction): New overload.
* src/jit-typeinfo.cc (jit_function::call): Throw jit_fail_exception if invalid.
(jit_typeinfo::jit_typeinfo): Initialize end_fn.
* src/jit-typeinfo.h (jit_typeinfo::end): New function.
* src/pt-jit.cc (jit_convert::visit_identifier): Handle magic_end.
(jit_convert::resolve): Keep track of end context.
(jit_convert::convert_llvm::visit): New overload.
* src/pt-jit.h (jit_convert): Add end_context.
author | Max Brister <max@2bass.com> |
---|---|
date | Mon, 30 Jul 2012 13:05:29 -0500 |
parents | ae3670d4df29 |
children | df4538e3b50b |
line wrap: on
line diff
--- a/src/jit-typeinfo.h Mon Jul 30 16:23:52 2012 +0100 +++ b/src/jit-typeinfo.h Mon Jul 30 13:05:29 2012 -0500 @@ -471,6 +471,16 @@ { return instance->do_insert_error_check (bld); } + + static const jit_operation& end (void) + { + return instance->end_fn; + } + + static const jit_function& end (jit_type *ty) + { + return instance->end_fn.overload (ty); + } private: jit_typeinfo (llvm::Module *m, llvm::ExecutionEngine *e); @@ -655,6 +665,7 @@ jit_operation make_range_fn; jit_operation paren_subsref_fn; jit_operation paren_subsasgn_fn; + jit_operation end_fn; // type id -> cast function TO that type std::vector<jit_operation> casts;