[PATCH 2/4 v18] Add xmethod interface to the extension language API

Doug Evans xdje42@gmail.com
Sun May 25 23:02:00 GMT 2014


Siva Chandra <sivachandra@google.com> writes:

> The attached patch addresses all of Doug's comments for this part from
> last time. The previous version for this part was not numbered 17. I
> am syncing all parts to v18 now to avoid confusion.
>
> ChangeLog:
> 2014-05-23  Siva Chandra Reddy  <sivachandra@google.com>
>
>         * defs.h (enum lval_type): New enumerator "lval_xcallable".
>         * extension-priv.h (struct extension_language_ops): Add the
>         xmethod interface.
>         * extension.c (new_xmethod_worker, clone_xmethod_worker,
>         get_matching_xmethod_workers, get_xmethod_argtypes,
>         invoke_xmethod, free_xmethod_worker,
>         free_xmethod_worker_vec): New functions.
>         * extension.h: #include "common/vec.h".
>         New function declarations.
>         (struct xmethod_worker): New struct.
>         (VEC (xmethod_worker_ptr)): New vector type.
>         (xmethod_worker_ptr): New typedef.
>         (xmethod_worker_vec): Likewise.
>         * gdbtypes.c (gdbtypes_post_init): Initialize "xmethod" field of
>         builtin_type.
>         * gdbtypes.h (enum type_code): New enumerator TYPE_CODE_XMETHOD.
>         (struct builtin_type): New field "xmethod".
>         * valarith.c (value_ptradd): Assert that the value argument is not
>         lval_xcallable.
>         * valops.c (value_must_coerce_to_target): Return 0 for
>         lval_xcallable values.
>         * value.c (struct value): New field XM_WORKER in the field
>         LOCATION.
>         (value_address, value_raw_address): Return 0 for lval_xcallable
>         values.
>         (set_value_address): Assert that the value is not an
>         lval_xcallable.
>         (value_free): Free the associated xmethod worker when freeing
>         lval_xcallable values.
>         (set_value_component_location): Assert that the WHOLE value is not
>         lval_xcallable.
>         (value_of_xmethod, call_xmethod): New functions.
>         * value.h: Declare "struct xmethod_worker".
>         Declare new functions value_of_xmethod, call_xmethod.

LGTM.
No additional comments on this patch.



More information about the Gdb-patches mailing list