summaryrefslogtreecommitdiff
path: root/modules/mod-test
Commit message (Expand)AuthorAgeFilesLines
* Rework C source files to avoid ^(...Work around Bug#22884 by rewording comments and strings to avoid ‘(’ at the start of a line unless it starts a function. This change is a short-term hack; in the longer run we plan to fix cc-mode’s performance for C files that have ‘(’ at the start of a line in a comment or string. Paul Eggert2016-03-101-2/+2
* Update copyright year to 2016...Run admin/update-copyright. Paul Eggert2016-01-013-3/+3
* Port mod-test to 32-bit Emacs --without-wide-int...* modules/mod-test/test.el (mod-test-sum-test): Bring back the 2**29 tests, but port them to 32-bit Emacs --without-wide-int. Paul Eggert2015-12-061-0/+5
* Port mod-test to x86-64 GNU/Linux running 32-bit...* modules/mod-test/test.el (mod-test-sum-test): Don’t attempt to match descriptions to operating systems. It didn’t work on Fedora x86-64 running a 32-bit executable, and it’s not worth the trouble anyway. Port to 32-bit platforms by removing an assumption about fixnum widths. Paul Eggert2015-12-061-9/+7
* More emacs-module.c fixes for wide ints...* src/emacs-module.c (value_to_lisp) [WIDE_EMACS_INT]: Use unsigned data types to manipulate pointers, to avoid sign extension coming after us with a vengeance. * modules/mod-test/test.el (mod-test-sum-test): Add tests for Emacs with wide ints that verify integer values near the critical value that requires us to switch to a cons cell. Eli Zaretskii2015-12-021-1/+6
* Fix emacs-module.c for wide ints...* src/emacs-module.c (lisp_to_value): Compare the produced value with the original Lisp object, not with the one potentially converted into a Lisp_Cons. Fixes assertion violations when working with integers larger than fit into a 32-bit value. * modules/mod-test/test.el (mod-test-sum-test): Add tests for large integers, to test --with-wide-int. Eli Zaretskii2015-12-011-1/+5
* Rely on conservative stack scanning to find "emacs_value"s...* src/emacs-module.c (struct emacs_value_tag) (struct emacs_value_frame, struct emacs_value_storage): Remove. (value_frame_size): Remove constant. (struct emacs_env_private): Use Lisp_Object for non_local_exit info. (lisp_to_value): Remove first arg. (module_nil): New constant. Use it instead of NULL when returning an emacs_value. (module_make_function): Adjust to new calling convention of Qinternal_module_call. (DEFUN): Receive args in an array rather than a list. Use SAFE_ALLOCA rather than xnmalloc. Skip the lisp_to_value loop when we don't have WIDE_EMACS_INT. Adjust to new type of non_local_exit info. (module_non_local_exit_signal_1, module_non_local_exit_throw_1): Adjust to new type of non_local_exit info. (ltv_mark) [WIDE_EMACS_INT]: New constant. (value_to_lisp, lisp_to_value): Rewrite. (initialize_frame, initialize_storage, finalize_storage): Remove functions. (allocate_emacs_value): Remove function. (mark_modules): Gut it. (initialize_environment): Don't initialize storage any more. Keep the actual env object on Vmodule_environments. (finalize_environment): Don't finalize storage any more. (syms_of_module): Initialize ltv_mark and module_nil. * src/emacs-module.h (emacs_value): Make it more clear that this type is really opaque, including the fact that NULL may not be valid. * modules/mod-test/mod-test.c (Fmod_test_signal, Fmod_test_throw): Don't assume that NULL is a valid emacs_value. Stefan Monnier2015-11-301-2/+2
* Spelling and grammar fixesPaul Eggert2015-11-291-1/+1
* Update mod-test-sum-test...* modules/mod-test/test.el (mod-test-sum-test): Update to accommodate the lack of dladdr on Cygwin. Ken Brown2015-11-291-1/+3
* ; * modules/mod-test/Makefile: Fix typo.Ken Brown2015-11-281-1/+1
* Add module tests for wrong-type-argument...* modules/mod-test/test.el (mod-test-sum-test): Add tests for wrong-type-argument. Eli Zaretskii2015-11-271-1/+3
* Add one more mod-test test...* modules/mod-test/test.el (mod-test-sum-test): Test the error signaled when the function is invoked with a wrong number of arguments. Eli Zaretskii2015-11-241-1/+11
* * modules/mod-test/mod-test.c (Fmod_test_sum): Verify there are 2 args.Philipp Stephani2015-11-241-0/+2
* Fix module test to use ptrdiff_t nargs too...* modules/mod-test/mod-test.c (Fmod_test_return_t) (Fmod_test_sum, Fmod_test_signal, Fmod_test_throw) (Fmod_test_non_local_exit_funcall, Fmod_test_globref_make) (Fmod_test_string_a_to_b, Fmod_test_userptr_make) (Fmod_test_userptr_get, Fmod_test_vector_fill) (Fmod_test_vector_eq): Arg counts are ptrdiff_t, not int. (finalizer): Remove; no longer used. Paul Eggert2015-11-201-20/+18
* Minor improvements in module test...* modules/mod-test/mod-test.c: Include stdlib.h, to avoid warnings about missing prototype of malloc. * modules/mod-test/Makefile (CFLAGS): Add -std=gnu99, to avoid compiler warnings. Eli Zaretskii2015-11-202-2/+3
* Prefer signed integer types in module code...Generally speaking, at the C level the Emacs source code prefers signed types like ‘ptrdiff_t’ to unsigned types like ‘size_t’, partly to avoid the usual signedness confusion when comparing values. Change the module API to follow this convention. Use ‘int’ for small values that can’t exceed INT_MAX. * modules/mod-test/mod-test.c (Fmod_test_globref_make) (Fmod_test_string_a_to_b, Fmod_test_vector_fill) (Fmod_test_vector_eq): * src/emacs-module.c (struct emacs_value_frame) (module_make_global_ref, module_free_global_ref) (module_copy_string_contents, module_make_string) (module_vec_set, module_vec_get, module_vec_size): * src/emacs-module.h (struct emacs_runtime, struct emacs_env_25): * src/lread.c (suffix_p): Prefer signed to unsigned integer types. Paul Eggert2015-11-191-7/+7
* Omit ‘const’ on locals...Remove ‘const’ qualifier from locals that were newly added. We don’t normally bother declaring locals with ‘const’ even though they are not modified, for the same reason we don’t bother declaring them with ‘register’ even though their addresses are not taken; the advantage in compile-time checking isn’t worth the loss of readability. * modules/mod-test/mod-test.c (Fmod_test_non_local_exit_funcall) (Fmod_test_vector_fill, Fmod_test_vector_eq): * src/emacs-module.c (MODULE_SETJMP_1) (module_make_global_ref, module_free_global_ref) (module_non_local_exit_get, module_make_function) (module_extract_integer, module_extract_float) (module_get_user_ptr, module_set_user_ptr) (module_get_user_finalizer, module_set_user_finalizer) (module_vec_get, Fmodule_call) (module_non_local_exit_signal_1) (module_non_local_exit_throw_1, lisp_to_value) (finalize_storage, allocate_emacs_value, mark_modules) (module_handle_signal, module_handle_throw) (module_format_fun_env): * src/eval.c (push_handler, push_handler_nosignal) (init_handler): * src/lread.c (suffix_p): Omit unnecessary ‘const’. Paul Eggert2015-11-191-5/+5
* Prefer intmax_t to int64_t in module code...* modules/mod-test/mod-test.c (sum, Fmod_test_sum): * src/emacs-module.c (module_extract_integer) (module_make_integer): * src/emacs-module.h (struct emacs_env_25): Prefer intmax_t to int64_t. This doesn’t change the generated code on any of the machines Emacs currently ports to, but it’s at least in theory more future-proof as C99 doesn’t guarantee that int64_t exists. Paul Eggert2015-11-191-4/+5
* Rename module.c to emacs-module.c, etc....* src/emacs-module.c: Rename from src/module.c. * src/emacs-module.h: Rename from src/module.h. All uses changed. Paul Eggert2015-11-191-1/+1
* Style fixes for indenting etc. in module code...This is mostly indenting and spacing changes. Also, remove some unnecessary static decls instead of bothering to reindent them. * src/module.h (EMACS_EXTERN_C_BEGIN): Remove, and do this inline, as most other Emacs files do for this sort of thing. Paul Eggert2015-11-192-99/+94
* Minor improvements in modules testing Makefile...* modules/mod-test/Makefile (EMACS, SO): New variables. (CFLAGS): When SO = dll, don't use -fPIC. (check): New target, runs the test. Eli Zaretskii2015-11-191-4/+16
* Add copyright notices to module code...Put them in the usual format for GNU Emacs copyright notices. Paul Eggert2015-11-193-3/+55
* Rename emacs_module.h to module.h...* src/module.h: Rename from src/emacs_module.h. All uses changed. Paul Eggert2015-11-191-1/+1
* Add dynamic module test and helper script...Add 'modhelp.py' script (python2) to automate module testing and module generation. To build and test all modules in the modules/ dir $ ./modhelp.py test To generate a module from template code (good starting point) $ ./modhelp init mynewtestmodule See the script -h option for more documentation. * modules/modhelp.py: New module helper script. * modules/mod-test/Makefile: New file. Makefile for the test module. * modules/mod-test/mod-test.c: New file. Test module source file. * modules/mod-test/test.el: New file. ert test suite for the test module. * modules/.gitignore: New file. Local .gitignore file. Co-authored-by: Philipp Stephani <phst@google.com> Aurélien Aptel2015-11-183-0/+360