Files
emacs/lisp
Andrea Corallo e96cd4e82c Add initial nativecomp typeset and range propagation support
This commit add an initial support for a better type propagation and
integer range propagation.

Each mvar can be now characterized by a set of types, a set of values
and an integral range.

	* lisp/emacs-lisp/comp.el (comp-known-ret-types): Store into
	typeset and remove fixnum.
	(comp-known-ret-ranges, comp-type-predicates): New variables.
	(comp-ctxt): Remove supertype-memoize slot and add
	union-typesets-mem.
	(comp-mvar): Remove const-vld, constant, type slots. Add typeset,
	valset, range slots.
	(comp-mvar-value-vld-p, comp-mvar-value, comp-mvar-fixnum-p)
	(comp-mvar-symbol-p, comp-mvar-cons-p)
	(comp-mvar-type-hint-match-p, comp-func-ret-typeset)
	(comp-func-ret-range): New functions.
	(make-comp-mvar, make-comp-ssa-mvar): Update logic.
	(comp--typeof-types): New variable.
	(comp-supertypes, comp-common-supertype): Logic update.
	(comp-subtype-p, comp-union-typesets, comp-range-1+)
	(comp-range-1-, comp-range-<, comp-range-union)
	(comp-range-intersection): New functions.
	(comp-fwprop-prologue, comp-mvar-propagate)
	(comp-function-foldable-p, comp-function-call-maybe-fold)
	(comp-fwprop-insn, comp-call-optim-func, comp-finalize-relocs):
	Logic update.

	* src/comp.c (emit_mvar_rval, emit_call_with_type_hint)
	(emit_call2_with_type_hint): Logic update.

	* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Undo the add
	of fixnum and bignum as unnecessary.

	* test/src/comp-tests.el
	(comp-tests-mentioned-p-1, comp-tests-cond-rw-checker-val)
	(comp-tests-cond-rw-checker-type, cond-rw-1, cond-rw-2)
	(cond-rw-3, cond-rw-4, cond-rw-5): Update for new type interface.
	(range-simple-union, range-simple-intersection): New integer range
	tests.
	(union-types): New union type test.
2020-11-12 00:55:36 +01:00
..
2020-11-05 21:06:39 +00:00
2020-10-24 20:23:27 +02:00
2020-10-24 20:23:27 +02:00
2020-11-03 04:19:53 +01:00
2020-11-04 07:40:16 +01:00
2020-10-01 15:28:14 +02:00
2020-10-02 09:38:24 -07:00
2020-11-02 09:27:40 -08:00
2020-06-18 13:11:17 +01:00
2020-02-20 16:05:18 +01:00
2020-04-20 09:08:09 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-09 11:53:21 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-10-03 12:53:51 +02:00
2020-08-18 07:51:05 -07:00
2020-01-04 19:13:23 -08:00
2020-08-31 19:13:30 +02:00
2020-04-26 16:20:05 +02:00
2020-10-01 15:28:14 +02:00
2020-04-29 14:15:03 +03:00
2020-10-14 19:10:02 -04:00
2020-01-16 23:06:04 -08:00
2020-01-17 06:34:00 +01:00
2020-10-23 11:15:19 +02:00
2020-10-02 09:38:24 -07:00
2020-09-27 09:37:10 -07:00
2020-10-02 09:38:24 -07:00
2020-10-03 12:53:51 +02:00
2020-10-02 09:38:24 -07:00
2020-10-24 20:23:27 +02:00
2020-09-21 14:26:42 +02:00
2020-09-09 20:12:45 +01:00
2020-08-19 12:49:11 +02:00
2020-10-02 09:38:24 -07:00
2020-10-02 09:38:24 -07:00
2020-10-24 20:23:27 +02:00
2020-09-21 14:26:42 +02:00
2020-11-01 06:28:38 -08:00
2020-10-31 11:41:53 +02:00
2020-10-01 15:28:14 +02:00
2020-10-24 20:23:27 +02:00
2020-10-20 13:20:48 +02:00
2020-01-16 23:06:04 -08:00
2020-11-03 21:48:23 +02:00
2020-10-24 20:23:27 +02:00
2020-11-03 02:04:22 +01:00
2020-10-02 09:38:24 -07:00
2020-09-17 11:13:54 +02:00
2020-10-01 15:28:15 +02:00
2020-10-02 09:38:24 -07:00
2020-10-02 09:38:24 -07:00
2020-10-01 20:53:27 +02:00
2020-10-02 09:38:24 -07:00
2020-09-21 14:26:42 +02:00
2020-06-22 18:40:37 +03:00
2020-10-02 09:38:24 -07:00
2020-10-01 15:28:14 +02:00
2020-10-02 09:38:24 -07:00
2020-10-24 20:23:27 +02:00
2020-01-09 13:40:14 +01:00
2020-10-01 15:28:15 +02:00
2020-10-24 15:50:16 +01:00
2020-10-24 13:22:55 +03:00
2020-10-27 01:39:19 +01:00
2020-10-16 15:27:43 +02:00
2020-05-21 19:17:36 +03:00
2020-05-03 16:17:20 +02:00
2020-09-21 14:26:42 +02:00
2020-10-27 08:24:56 -07:00
2020-08-04 20:15:56 -04:00
2020-10-01 15:28:15 +02:00
2020-09-21 14:26:42 +02:00

This directory contains source code for the parts of Emacs that are
written in Emacs Lisp.  *.el files are Emacs Lisp source, and the
corresponding *.elc files are byte-compiled versions.  Byte-compiled
files are architecture-independent.

The term subdirectory contains Lisp files that customize Emacs for
certain terminal types.  When Emacs starts, it checks the TERM
environment variable to get the terminal type and loads
'term/${TERM}.el' if it exists.

The other subdirectories hold Lisp packages grouped by their general
purpose.