Mercurial > octave
changeset 32510:560c5babca89
maint: Merge stable to default.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Sat, 25 Nov 2023 16:24:07 +0100 |
parents | 880fdbf03c6d (current diff) a4b9c5b2d85e (diff) |
children | 14f76908db23 |
files | libinterp/octave-value/ov-base.cc libinterp/octave-value/ov-base.h |
diffstat | 13 files changed, 92 insertions(+), 53 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-base-diag.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-base-diag.h Sat Nov 25 16:24:07 2023 +0100 @@ -247,7 +247,11 @@ OCTINTERP_API octave_value fast_elem_extract (octave_idx_type n) const; - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } + protected: DMT m_matrix;
--- a/libinterp/octave-value/ov-base-mat.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-base-mat.h Sat Nov 25 16:24:07 2023 +0100 @@ -219,7 +219,11 @@ octave_value checked_full_matrix_elem (octave_idx_type i, octave_idx_type j) const; - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } + protected: MT m_matrix;
--- a/libinterp/octave-value/ov-base-scalar.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-base-scalar.h Sat Nov 25 16:24:07 2023 +0100 @@ -179,7 +179,10 @@ bool vm_need_dispatch_assign_lhs (void) { return false; } bool vm_need_dispatch_push (void) { return false; } - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } protected:
--- a/libinterp/octave-value/ov-base-sparse.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-base-sparse.h Sat Nov 25 16:24:07 2023 +0100 @@ -242,7 +242,10 @@ OCTINTERP_API octave_value fast_elem_extract (octave_idx_type n) const; - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } protected:
--- a/libinterp/octave-value/ov-base.cc Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-base.cc Sat Nov 25 16:24:07 2023 +0100 @@ -969,11 +969,11 @@ bool is_defined = this->is_defined (); if (! has_function_cache && is_defined) - return vm_call_dispatch_type::SUBSREF; + return vm_call_dispatch_type::OCT_SUBSREF; else if (has_function_cache) - return vm_call_dispatch_type::CALL; + return vm_call_dispatch_type::OCT_CALL; else - return vm_call_dispatch_type::FN_LOOKUP; + return vm_call_dispatch_type::OCT_FN_LOOKUP; } octave_value_ref *
--- a/libinterp/octave-value/ov-base.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-base.h Sat Nov 25 16:24:07 2023 +0100 @@ -811,15 +811,17 @@ virtual bool vm_need_storable_call (void) const { return false; } virtual bool vm_need_dispatch_assign_rhs (void) { return true; } + virtual bool vm_need_dispatch_assign_lhs (void) { return true; } + virtual bool vm_need_dispatch_push (void) { return true; } enum class vm_call_dispatch_type { - SUBSREF, - FN_LOOKUP, - CALL, - HANDLE, - OBJECT, + OCT_SUBSREF, + OCT_FN_LOOKUP, + OCT_CALL, + OCT_HANDLE, + OCT_OBJECT, }; virtual vm_call_dispatch_type vm_dispatch_call (void);
--- a/libinterp/octave-value/ov-cell.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-cell.h Sat Nov 25 16:24:07 2023 +0100 @@ -178,7 +178,10 @@ // You should not use it anywhere else. const void * mex_get_data () const; - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } octave_value_list simple_subsref (char type, octave_value_list& idx, int nargout);
--- a/libinterp/octave-value/ov-classdef.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-classdef.h Sat Nov 25 16:24:07 2023 +0100 @@ -230,7 +230,10 @@ OCTINTERP_API std::string file_name () const; - vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } private:
--- a/libinterp/octave-value/ov-colon.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-colon.h Sat Nov 25 16:24:07 2023 +0100 @@ -76,7 +76,10 @@ OCTINTERP_API void print_raw (std::ostream& os, bool pr_as_read_syntax = false) const; - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } private:
--- a/libinterp/octave-value/ov-fcn-handle.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-fcn-handle.h Sat Nov 25 16:24:07 2023 +0100 @@ -388,8 +388,9 @@ vm_call_dispatch_type vm_dispatch_call (void) { if (m_rep->has_function_cache ()) - return vm_call_dispatch_type::CALL; - return vm_call_dispatch_type::SUBSREF; + return vm_call_dispatch_type::OCT_CALL; + + return vm_call_dispatch_type::OCT_SUBSREF; } void compile () { m_rep->compile (); }
--- a/libinterp/octave-value/ov-fcn.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-fcn.h Sat Nov 25 16:24:07 2023 +0100 @@ -65,7 +65,10 @@ bool has_function_cache (void) const { return true; } - vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::CALL; } + vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_CALL; + } octave_function * get_cached_fcn (const octave_value_list& args); @@ -319,7 +322,10 @@ execute (octave::tree_evaluator& tw, int nargout = 0, const octave_value_list& args = octave_value_list ()) = 0; - vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::CALL; } + vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_CALL; + } octave_function * get_cached_fcn (void *, void *) { return function_value (); }
--- a/libinterp/octave-value/ov-struct.h Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/octave-value/ov-struct.h Sat Nov 25 16:24:07 2023 +0100 @@ -165,7 +165,10 @@ bool fast_elem_insert (octave_idx_type n, const octave_value& x); - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } protected: @@ -292,7 +295,10 @@ bool fast_elem_insert_self (void *where, builtin_type_t btyp) const; - octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) { return vm_call_dispatch_type::SUBSREF; } + octave_base_value::vm_call_dispatch_type vm_dispatch_call (void) + { + return vm_call_dispatch_type::OCT_SUBSREF; + } protected:
--- a/libinterp/parse-tree/pt-bytecode-vm.cc Sat Nov 25 09:16:01 2023 -0500 +++ b/libinterp/parse-tree/pt-bytecode-vm.cc Sat Nov 25 16:24:07 2023 +0100 @@ -2427,7 +2427,7 @@ switch (ov.vm_dispatch_call ()) { - case octave_base_value::vm_call_dispatch_type::SUBSREF: + case octave_base_value::vm_call_dispatch_type::OCT_SUBSREF: { // Make an ovl with the args octave_value_list ovl; @@ -2497,7 +2497,7 @@ } break; - case octave_base_value::vm_call_dispatch_type::FN_LOOKUP: + case octave_base_value::vm_call_dispatch_type::OCT_FN_LOOKUP: { // It is probably a function call CHECK_PANIC (ov.is_nil ()); // TODO :Remove @@ -2510,9 +2510,9 @@ bsp[slot].ov = ov; } // Fallthrough - case octave_base_value::vm_call_dispatch_type::CALL: - case octave_base_value::vm_call_dispatch_type::HANDLE: - case octave_base_value::vm_call_dispatch_type::OBJECT: + case octave_base_value::vm_call_dispatch_type::OCT_CALL: + case octave_base_value::vm_call_dispatch_type::OCT_HANDLE: + case octave_base_value::vm_call_dispatch_type::OCT_OBJECT: { CHECK_PANIC (ov.has_function_cache ()); // TODO :Remove @@ -4157,7 +4157,7 @@ switch (ov.vm_dispatch_call ()) { - case octave_base_value::vm_call_dispatch_type::FN_LOOKUP: + case octave_base_value::vm_call_dispatch_type::OCT_FN_LOOKUP: { CHECK_PANIC (ov.is_nil ()); // TODO: Remove @@ -4169,9 +4169,9 @@ bsp[slot].ov = ov; } // Fallthrough - case octave_base_value::vm_call_dispatch_type::CALL: - case octave_base_value::vm_call_dispatch_type::HANDLE: - case octave_base_value::vm_call_dispatch_type::OBJECT: + case octave_base_value::vm_call_dispatch_type::OCT_CALL: + case octave_base_value::vm_call_dispatch_type::OCT_HANDLE: + case octave_base_value::vm_call_dispatch_type::OCT_OBJECT: { octave_function *fcn; try @@ -4224,7 +4224,7 @@ } break; - case octave_base_value::vm_call_dispatch_type::SUBSREF: + case octave_base_value::vm_call_dispatch_type::OCT_SUBSREF: PANIC ("Invalid dispatch"); } } @@ -4392,7 +4392,7 @@ if (i_col_idx < n_cols) cell (i_row_idx, i_col_idx) = ov; - i_col = i_col + 1L; + i_col = i_col + static_cast<octave_int64> (1); i_col_idx++; } else @@ -4513,7 +4513,7 @@ switch (ov.vm_dispatch_call ()) { - case octave_base_value::vm_call_dispatch_type::SUBSREF: + case octave_base_value::vm_call_dispatch_type::OCT_SUBSREF: { std::list<octave_value_list> idx; // TODO: mallocs! @@ -4587,7 +4587,7 @@ } break; - case octave_base_value::vm_call_dispatch_type::FN_LOOKUP: + case octave_base_value::vm_call_dispatch_type::OCT_FN_LOOKUP: { // Put a function cache object in the slot and in the local ov ov = octave_value (new octave_fcn_cache (name_data[slot])); @@ -4597,9 +4597,9 @@ bsp[slot].ov = ov; } // Fallthrough - case octave_base_value::vm_call_dispatch_type::CALL: - case octave_base_value::vm_call_dispatch_type::HANDLE: - case octave_base_value::vm_call_dispatch_type::OBJECT: + case octave_base_value::vm_call_dispatch_type::OCT_CALL: + case octave_base_value::vm_call_dispatch_type::OCT_HANDLE: + case octave_base_value::vm_call_dispatch_type::OCT_OBJECT: { octave_function *fcn; try @@ -5408,7 +5408,8 @@ } // Should we call the object? - if (ov.vm_dispatch_call () == octave_base_value::vm_call_dispatch_type::CALL) + if (ov.vm_dispatch_call () + == octave_base_value::vm_call_dispatch_type::OCT_CALL) { CHECK_PANIC (ov.has_function_cache ()); @@ -5696,7 +5697,7 @@ switch (ov.vm_dispatch_call ()) { - case octave_base_value::vm_call_dispatch_type::SUBSREF: + case octave_base_value::vm_call_dispatch_type::OCT_SUBSREF: { // TODO: subsref should take ovl instead and be chained, // or something smarter @@ -5772,7 +5773,7 @@ } break; - case octave_base_value::vm_call_dispatch_type::FN_LOOKUP: + case octave_base_value::vm_call_dispatch_type::OCT_FN_LOOKUP: { // If the first object is not an identifier we can't look it up for // a function call. @@ -5799,9 +5800,9 @@ bsp[slot].ov = ov; } // Fallthrough - case octave_base_value::vm_call_dispatch_type::CALL: - case octave_base_value::vm_call_dispatch_type::HANDLE: - case octave_base_value::vm_call_dispatch_type::OBJECT: + case octave_base_value::vm_call_dispatch_type::OCT_CALL: + case octave_base_value::vm_call_dispatch_type::OCT_HANDLE: + case octave_base_value::vm_call_dispatch_type::OCT_OBJECT: { octave_function *fcn; try @@ -6680,13 +6681,13 @@ { switch (ov.vm_dispatch_call ()) { - case octave_base_value::vm_call_dispatch_type::FN_LOOKUP: + case octave_base_value::vm_call_dispatch_type::OCT_FN_LOOKUP: { (*sp++).pee = new execution_exception {"error", "", "invalid undefined value in chained index expression"}; // TODO: Uninformative? (*sp++).i = static_cast<int> (error_type::EXECUTION_EXC); goto unwind; } - case octave_base_value::vm_call_dispatch_type::SUBSREF: + case octave_base_value::vm_call_dispatch_type::OCT_SUBSREF: { octave_value_list ovl; // The operands are on the top of the stack @@ -6755,9 +6756,9 @@ } break; - case octave_base_value::vm_call_dispatch_type::CALL: - case octave_base_value::vm_call_dispatch_type::HANDLE: - case octave_base_value::vm_call_dispatch_type::OBJECT: + case octave_base_value::vm_call_dispatch_type::OCT_CALL: + case octave_base_value::vm_call_dispatch_type::OCT_HANDLE: + case octave_base_value::vm_call_dispatch_type::OCT_OBJECT: { CHECK_PANIC (ov.has_function_cache ()); // TODO :Remove @@ -6883,10 +6884,10 @@ switch (ov.vm_dispatch_call ()) { - case octave_base_value::vm_call_dispatch_type::FN_LOOKUP: + case octave_base_value::vm_call_dispatch_type::OCT_FN_LOOKUP: panic_impossible (); break; - case octave_base_value::vm_call_dispatch_type::SUBSREF: + case octave_base_value::vm_call_dispatch_type::OCT_SUBSREF: { CHECK_PANIC (! ov.is_function () || ov.is_classdef_meta ()); // TODO: Remove @@ -6938,9 +6939,9 @@ } break; - case octave_base_value::vm_call_dispatch_type::CALL: - case octave_base_value::vm_call_dispatch_type::HANDLE: - case octave_base_value::vm_call_dispatch_type::OBJECT: + case octave_base_value::vm_call_dispatch_type::OCT_CALL: + case octave_base_value::vm_call_dispatch_type::OCT_HANDLE: + case octave_base_value::vm_call_dispatch_type::OCT_OBJECT: { CHECK_PANIC (ov.is_function ()); // TODO :Remove