Branch: Tag:

2023-05-29

2023-05-29 15:36:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some doc.

2023-03-03

2023-03-03 12:36:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add format attribute to yywarning() and my_yyerror().

2023-03-01

2023-03-01 14:59:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Changed API for index_node().

index_node() now uses the name of the indexed node to describe
the node and to detect indexing of predef::.

Also adds a few calls of set_node_name().

2023-02-26

2023-02-26 14:41:49 by Marcus Comstedt <marcus@mc.pp.se>

{safe_,}pike_fprintf: Add format attribute

2023-02-26 12:55:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [AST]: Set the name of nodes in some common cases.

Preparation for changing the index_node() API.

2023-02-19

2023-02-19 12:56:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Fix lots of string_builder_sprintf() formatting strings.

Also fixes a bug in string_builder_append_comment().

2023-01-19

2023-01-19 12:14:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build [Compiler]: Inhibit erroneous warning from gcc 7.3.0.

Fixes "warning: offset '7' outside bounds of constant string".

2022-11-20

2022-11-20 12:43:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Work in progress: Sakura master

2022-10-27

2022-10-27 08:20:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Strip scope from lfun types.

Fixes too hard matching against some (eg `[]=()) lfuns.

2022-09-07

2022-09-07 08:54:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjust approach to lfun::create() fallback.

Instead of having a fallback at lookup time, the compiler now
adds lfun::create() as an alias for lfun::__create__() if
there is no explicitly defined lfun::create(). This should
be (much) more robust and backward-compatible.

Fixes some fall-out from the #10086 changes.

2022-09-06

2022-09-06 10:32:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Look up of ::create() now falls back to ::__create__().

Fixes various calls of ::create() and similar in classes where
there only is an implicit create() (ie only __create__()).

Fixes multiple testsuite failures.

2022-09-06 08:35:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add lfun::__create__().

This lfun is intended to hold the code previously inlined
in lfun::create() for the implicit create syntax.

Preparation for implementing the implicit create case(s) of #10086.

2022-08-28

2022-08-28 14:59:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: __weak__ now implies zero in the type for variables.

Fixes #10083.

2022-08-05

2022-08-05 10:39:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Iterators: Improve robustness of backward compatibility.

Move backward compat detection code from compiler to
predef::get_iterator(). Backward compatibility is now
handled by wrapping old iterators with CompatIterator.

2022-08-02

2022-08-02 08:53:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Iterators: Changed iterator API.

Runtime:

* Iterators now start at the position before the first element.

* foreach() calls lfun::_iterator_next() on entry. This means
that the loop will skip the element the iterator was on (if any).

* Removed lfun::`+(), lfun::`+=() and lfun::`!() from the builtin
iterators to simplify the semantics.

* Implementing just lfun::_iterator_next() is now sufficient
to make a working iterator.

Compiler:

* The Pike compiler will add a wrapper lfun::_iterator_next()
for code that uses the original API.

TODO:

* There are more iterators that need to be adjusted to the new API.

Fixes some of #10085.

2022-07-28

2022-07-28 12:45:29 by Marcus Comstedt <marcus@mc.pp.se>

Compiler: Skip iterator compat if one of the "lfuns" is actually a variable

2022-07-12

2022-07-12 15:07:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Add function name field to call_state.

2022-07-09

2022-07-09 09:49:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Update some more calls of new_get_return_type().

2022-06-01

2022-06-01 08:43:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjust type requirements for LFUNs.

2022-06-01 08:43:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Use new APIs when checking LFUN types.

2022-05-25

2022-05-25 09:46:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjust LFUN type requirements to use __unknown__.

Fixes multiple warnings.

2022-05-07

2022-05-07 14:13:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix complaints about missing definition for local function __INIT().

2022-05-07 14:08:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved type for __INIT().

2022-05-07 12:57:15 by Marcus Comstedt <marcus@mc.pp.se>

Compiler [bytecode]: Move add_relocated_int_to_program into code/bytecode.c

2022-04-14

2022-04-14 14:38:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix checking of overloading of variants.

2022-01-12

2022-01-12 14:08:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Relax type for lfun::_sprintf().

It is common to have _sprintf()'s that do not care about
their arguments, so allow _sprintf()'s without arguments.

Fixes a few testsuite failures.

2022-01-10

2022-01-10 11:08:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved type for setters.

Fixes some warnings.

2022-01-04

2022-01-04 09:49:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Adjust types for assignment lfuns.

The values returned from lfun::`[]=() and lfun::`->=() are
currently ignored, so allow returning void.

Fixes a few more warnings.

2022-01-03

2022-01-03 09:30:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Improved types for assignment lfuns.

Fixes some warnings.

2021-12-29

2021-12-29 11:00:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Missed a line in previous commit.

2021-12-29 09:56:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Reduce complaints about lfuns.

Do not complain about optional arguments missing in prototypes
for lfuns implemented in Pike.

2021-11-15

2021-11-15 11:12:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Removed the old LFUN lookup code.

2021-11-06

2021-11-06 18:31:25 by Marcus Comstedt <marcus@mc.pp.se>

decode_value: Fix "Calling undefined function __INIT()"

The autogenerated __INIT calling through to inherited __INITs should
not be generated on decode_value, because it has already been
recovered from the dump.

2021-11-01

2021-11-01 13:35:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix type for lfun::`[]=() to match documentation.

2021-10-11

2021-10-11 17:25:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

decode_value: Alloc parent_info_storage for PROGRAM_USES_PARENT.

end_first_pass(0) does not allocate parent_info_storage.
This sometimes caused programs returned by decode_value()
to have both PROGRAM_USES_PARENT and PROGRAM_PASS_1_DONE
set but have a NULL parent_info_storage.
This some code (eg low_clone()) to dereference NULL.

2021-07-19

2021-07-19 13:03:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix generation of nested __INIT() calls.

Fixes bug triggered by Calendar.Time when generating __INIT()
call to Calendar.TimeRanges::__INIT().

2021-07-16

2021-07-16 16:15:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add TRACE_POINTS when the linenumber changes.

2021-03-29

2021-03-29 13:35:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix warning about overloading classes with create().

Do not check the types for overloaded constants before the last pass.

2021-03-22

2021-03-22 14:12:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Added flags to pike_types_le().

2021-03-17

2021-03-17 12:22:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Update the types for lfun::`+(), lfun::``+() and lfun::`+=().

These lfuns are no longer called with multiple arguments, so update
the types and documentation accordingly.

2021-03-08

2021-03-08 11:38:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix typo in diagnostic.

2021-03-03

2021-03-03 11:13:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fix argument order in diagnostic message.

2021-02-12

2021-02-12 17:12:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [PIKE_DEBUG]: Verify the identifier reference table.

2021-02-09

2021-02-09 10:43:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjusted encoding of compat lfun names.

lfun_names entries with compat names are now preceeded with a NUL
and are NUL-separated. This makes the debug checks in stralloc.c
happier, as the resulting static strings now are NUL-terminated.

2021-01-12

2021-01-12 16:35:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation [LFUNs]: Added some compat notes.

2021-01-11

2021-01-11 15:26:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation [LFUNs]: Added some doc for the _iterator_*() lfuns.

2021-01-04

2021-01-04 11:28:06 by Marcus Comstedt <marcus@mc.pp.se>

Fixed typo.

2021-01-04 01:05:53 by Marcus Comstedt <marcus@mc.pp.se>

Fix machine code on macOS 11

macOS 11 adds two JIT hardening features:

* Memory can only be mmapped as both PROT_WRITE and PROT_EXEC if MAP_JIT
is also specified.

* Memory mapped with MAP_JIT is never writeable and executable at the same
time. It is necessary to call a function before writing, and then again
after writing to make it executable again.

2020-12-29

2020-12-29 16:55:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

DMalloc: Register programs with dmalloc.

2020-11-30

2020-11-30 15:44:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix NULL-deref --with-cleanup-onexit.

2020-11-27

2020-11-27 16:03:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix indexing with compat lfun names.

Fixes broken constant indexing with eg strings like "value" or "index",
where the compiler generated code to index via the lfun lookup table
regardless of whether the symbol actually was present in the table.

Fixes eg the expression Standards.ASN1.Types.String("")->value.

2020-11-24

2020-11-24 13:13:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [LFUNs]: Fix memory leak.

2020-11-24 10:47:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed a few typos.

Fixes some compilation errors.

2020-11-23

2020-11-23 14:58:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Do not warn about compat iterator lfuns when not iterator.

2020-11-22

2020-11-22 13:21:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Only fallback to the old iterator lfuns if they are all implemented.

Fixes lots of warnings from Calendar.TimeRanges.TimeRange et al.

2020-11-20

2020-11-20 17:00:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Remove some more obsolete code.

2020-11-20 16:16:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Rename iterator lfuns to lfun::_iterator_{next,index,value}().

The names "next", "index" and "value" are too generic to be reserved.

Also adds generic backward compatibility for renamed lfuns.

2020-11-16

2020-11-16 16:59:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Support atomic get and set with lfun::`->=() and lfun::`[]=().

`->=() and `[]=() should now return the previous value.

Also alters ::`->=() accordingly.

2020-11-10

2020-11-10 16:14:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentatation: Document lfun::_atomic_get_set().

Also adds FIXMEs for some undocumented lfuns.

2020-11-09

2020-11-09 19:08:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Add lfun::_atomic_get_set().

2020-11-06

2020-11-06 13:30:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some missing types when --without-new-lfun-lookup.

The types for lfun::next(), lfun::index() and lfun::value()
were missing when compiling --without-new-lfun-lookup.

2020-09-06

2020-09-06 13:29:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix LFUN lookup table.

The lfun_names table was not in sync with the LFUN enum.

This caused eg some operations on bignum objects to behave in
unexpected ways.

Fixes build issues on 32-bit architectures.

2020-09-04

2020-09-04 10:30:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Have the same set of lfuns regardless of lookup method.

Add the missing iterator lfuns to the old-style lfun lookup method.

2020-07-27

2020-07-27 08:14:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Stop filtering lfun prototypes from the lfun table.

Fixes warnings in Tools.Standalone.test_pike (which has an abstract
base class with prototypes for lfuns).

2020-04-07

2020-04-07 09:31:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added string_builder_append_{file,line}_directive().

2020-04-06

2020-04-06 10:40:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added string_builder_append_comment().

2019-12-07

2019-12-07 13:26:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Implemented an alternative lfun lookup table.

2019-12-01

2019-12-01 14:51:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: More use of QUICK_FIND_LFUN().

2019-11-26

2019-11-26 10:38:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added convenience function find_identifier_inh().

2019-11-20

2019-11-20 19:13:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Added lfun::_reverse().

This is a function that is called by reverse() to generate
a reversed object.

2019-11-14

2019-11-14 09:46:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Move node_allocator to struct compilation.

Allocated nodes may need to live during an entire translation unit.

This moves the allocator from struct Pike_compiler (ie compilation.h)
to struct compilation (aka CompilationEnvironment.PikeCompiler).

Fixes use of already freed nodes after certain syntax errors.

2019-11-14 09:38:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make sure that Pike_compiler->compiler is initialized.

2019-11-11

2019-11-11 13:08:24 by Arne Goedeke <arne@deuso.de>

Compiler: do not make function names static strings

It is not safe to create static strings for constant C strings when
used from shared modules. When modules are unloaded the shared string
may then point into unmapped memory which will lead so segmentation
faults.

This is a partial revert of commit
f1b636b7822d862a1a7958ddeff5e82f555acf68.

2019-11-03

2019-11-03 21:56:43 by Mateusz Krawczuk <krawczukmat@gmail.com>

Debugger: add basic breakpoint struct and line offset counting function.

2019-11-02

2019-11-02 18:24:01 by Mateusz Krawczuk <krawczukmat@gmail.com>

Profiling: zero-initialize program's identifier profiling fields.

This is a follow-up to ac77f9767aaa, where the 'fun' member
has been removed from the program.
Also moved the code to the point after 'funp' initialization.

2019-11-02 16:45:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix template type for _destruct().

2019-10-18

2019-10-18 12:28:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'patches/pike221' into 8.0

* patches/pike221:
Compiler: object->program_id only exists --with-debug.

2019-10-18 12:27:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: object->program_id only exists --with-debug.

2019-10-18 09:14:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'patches/pike221' into 8.0

* patches/pike221:
Compiler: Make get_name_of_function() survive destructed functions.
Compiler: Improved robustness of placeholder activation.

2019-10-18 08:57:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved robustness of placeholder activation.

Make program_id match prog->id in activated placeholder objects
(previously it stayed as null_program->id).

Fixes some of PIKE-221 (#8221).

2019-10-16

2019-10-16 08:58:31 by Marcus Comstedt <marcus@mc.pp.se>

Thread.ResourceCountKey: Make destruct immediate

2019-08-03

2019-08-03 10:42:28 by Mateusz Krawczuk <krawczukmat@gmail.com>

[debugger] Add WIP code for the debugger.

This commit contains changes in the language core necessary for
enabling the debugger's breakpoint and stepping feature.

It also contains a work-in-progress pmod, Debug/Debugger, that is an
interface between the interpreter and debugging client.

The debugger needs Pike to be compiled '--with-debug'. The core's
behavior remains unchanged in case of this flag's absence.

Co-authored-by: Henrik Grubbström (Grubba) <grubba@grubba.org>
Co-authored-by: William Welliver <william@welliver.org>

2019-07-22

2019-07-22 11:58:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Move string_builder_append_disassembly() to string_builder.cmod.

Some minor API-changes to string_builder_append_disassembly() to make
it architecture-independant, and suitable for more use-cases than
just byte-code disassembly. The displayed address is now independant
of the actual address of the memory dump.

Also adds some documentation.

2019-06-27

2019-06-27 16:19:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added find_inherited_{fun,prog}().

2019-06-26

2019-06-26 14:23:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Increase paranoia of the implements and is_compatible caches.

implements() and is_compatible() should now survive if their low-level
implementations release the interpreter lock.

Fixes PIKE-192 (#8192).

2019-06-26 14:21:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'patches/pike192'

* patches/pike192:
Compiler: Increase paranoia of the implements and is_compatible caches.

2019-06-26 14:18:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Increase paranoia of the implements and is_compatible caches.

implements() and is_compatible() should now survive if their low-level
implementations release the interpreter lock.

Fixes PIKE-192 (#8192).

2019-06-11

2019-06-11 12:22:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Survive new_program being NULL.

Fixes [LysLysKOM 23386221] some more.

2019-05-07

2019-05-07 08:52:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Remove some redundant code.

Disambiguation of multiple inherit ::-references is now done
by low_program_from_svalue().

2019-05-04

2019-05-04 09:12:19 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/master' into new_utf8

2019-05-02

2019-05-02 10:00:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjusted some error messages.

2019-04-11

2019-04-11 18:21:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: get_iterator() now passes extra args to lfun::_get_iterator().

2019-04-09

2019-04-09 11:23:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Warn about lfuns that are not declared protected.

2019-04-02

2019-04-02 12:34:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed typo in lfun::destroy() compat code.

2019-04-02 11:42:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Support arrays in program_from_svalue() et al.

They now handle arrays in the same manner as inherit.

2019-04-02 11:29:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added compat entries for destroy().

2019-04-02 11:27:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added low-level function is_lfun_name().

2019-04-02 11:08:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [debug]: Updated yet another linenumber parser.

2019-03-29

2019-03-29 11:50:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Reuse inherited references that are already inline.

There is no need to create a new ID_INLINE reference if there
already exists one from the inherit.

2019-03-21

2019-03-21 12:00:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [debug]: Updated a few more linenumber parsers.

2019-03-19

2019-03-19 12:33:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge commit '722771973bd' into patches/lyslyskom22891031

* commit '722771973bd': (6177 commits)
Verify that callablep responses are aligned with reality.
...

2019-03-18

2019-03-18 22:27:31 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler: Silence compiler warnings

GCC 8 got more picky about function pointer signatures, but there is
really no need to let those warnings bother us.

2019-03-14

2019-03-14 10:39:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge commit '2470270f500c728d10b8895314d8d8b07016e37b' into grubba/typechecker-automap

* commit '2470270f500c728d10b8895314d8d8b07016e37b': (18681 commits)
Removed the old typechecker.
...

2019-03-08

2019-03-08 17:36:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Call end_pass_identifier() for identifier annotations.

2019-02-12

2019-02-12 11:29:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Missed one place in store_linenumber_* rename.

2019-02-11

2019-02-11 10:25:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Renamed store_linenumber_frame_* to store_linenumber_local_*.

This naming should be somewhat clearer.

2019-02-10

2019-02-10 21:16:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Removed some dead and obsolete code.

2019-02-09

2019-02-09 11:46:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make add_{,program_}annotation() PMOD_EXPORT.

This makes it possible to add annotations to programs implemented in C.

2019-02-08

2019-02-08 10:13:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added store_linenumber_frame_end().

This reduces leaking of local variable info between blocks of code.

2019-02-07

2019-02-07 15:03:41 by William Welliver <william@welliver.org>

Debugger: correctly compute line offsets with variable info present.

2019-02-07 15:02:50 by William Welliver <william@welliver.org>

Merge branch 'grubba/wop-local-variables-debug-info' into bill/debugger-concept

2019-02-07 09:51:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

WIP: Local variables debug info.

2019-02-07 09:48:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added pseudo opcodes F_FRAME_*.

These are intended to be used for propagating information
about local variables in the current frame.

2019-02-07 09:04:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

WIP: Local variables debug info.

2019-02-06

2019-02-06 22:25:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Fixed markup typo.

2019-02-06 22:22:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Added magic lfun ::_annotations().

2019-02-06 22:22:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed some COMPILER_DEBUG bugs.

2019-02-06 22:22:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug: dump_program_{tables,desc}() are now annotations-aware.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Annotations: Only register annotations in the first pass.

Annotations are now created in the first pass, and kept
as is for later passes. This makes it possible to store
pass-persistent state in the annotations.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Annotations: Missed adjusting one place in previous commit.

Fixes duplicate annotations for inherits.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Removed some now dead code.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Return an array(multiset) from predef::annotations().

A multiset is a more natural datatype for the set of annotations.

NB: The low-level code still uses arrays; this will most likely
be changed later.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Inherit annotations are now stored in a multiset.

This is a more natural representation of a set of annotations.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typos in previous commit.

2019-02-06 22:17:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use multisets for annotations on identifiers.

2019-02-06 22:17:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: m_clear() now supports multisets and objects.

Adds LFUN _m_clear().

2019-02-06 22:17:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Added m_add().

This function adds (as opposed to inserts) an element to a multiset.

Also adds corresponding (fake) lfun::_m_add().

2019-02-06 22:15:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Adjusted API for lfun::_annotations().

The API for lfun::_annotations() now aligns better with the
APIs for lfun::_indices(), lfun::_values() and lfun::_types().

Also adds some minimal documentation for some undocumented lfuns.

2019-02-06 22:15:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Fixed leak of arrays in annotations() on programs.

2019-02-06 18:53:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

WOP: Local variables debug info.

2019-02-02

2019-02-02 18:29:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Extended low_get_line() with local variable info.

2019-02-02 15:51:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Extended linenumber info table with local variable info.

Adds store_linenumber_frame_{name,type}().

2019-02-01

2019-02-01 22:53:33 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler: Fix autodoc typo

2019-01-27

2019-01-27 19:05:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Fixed markup typo.

2018-12-29

2018-12-29 20:54:03 by William Welliver <william@welliver.org>

debugger: a little debug, and keeping the local names from being freed.

2018-12-23

2018-12-23 13:39:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug: dump_program_{tables,desc}() are now annotations-aware.

2018-12-21

2018-12-21 12:19:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed some COMPILER_DEBUG bugs.

2018-12-19

2018-12-19 12:11:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

LFUNs: Added magic lfun ::_annotations().

2018-12-17

2018-12-17 13:41:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use multisets for annotations on identifiers.

2018-12-16

2018-12-16 08:35:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typos in previous commit.

2018-12-15

2018-12-15 13:34:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Inherit annotations are now stored in a multiset.

This is a more natural representation of a set of annotations.

2018-12-13

2018-12-13 10:51:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Return an array(multiset) from predef::annotations().

A multiset is a more natural datatype for the set of annotations.

NB: The low-level code still uses arrays; this will most likely
be changed later.

2018-12-12

2018-12-12 10:14:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Removed some now dead code.

2018-12-11

2018-12-11 11:29:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Annotations: Missed adjusting one place in previous commit.

Fixes duplicate annotations for inherits.

2018-12-11 09:45:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Annotations: Only register annotations in the first pass.

Annotations are now created in the first pass, and kept
as is for later passes. This makes it possible to store
pass-persistent state in the annotations.

2018-12-09

2018-12-09 10:45:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Added m_add().

This function adds (as opposed to inserts) an element to a multiset.

Also adds corresponding (fake) lfun::_m_add().

2018-12-08

2018-12-08 16:04:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: m_clear() now supports multisets and objects.

Adds LFUN _m_clear().

2018-12-04

2018-12-04 12:00:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Fixed leak of arrays in annotations() on programs.

2018-12-03

2018-12-03 15:19:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Adjusted API for lfun::_annotations().

The API for lfun::_annotations() now aligns better with the
APIs for lfun::_indices(), lfun::_values() and lfun::_types().

Also adds some minimal documentation for some undocumented lfuns.

2018-12-03 04:38:40 by William Welliver <william@welliver.org>

debugger: track stepping mode by thread, remove some debugging output

2018-12-03 02:23:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Added predef::annotations().

This function returns the annotations (if any) corresponding to the
symbols returned by indices() on the same value.

Also adds lfun::_annotations().

2018-12-01

2018-12-01 14:28:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

EFUNs: Added predef::annotations().

This function returns the annotations (if any) corresponding to the
symbols returned by indices() on the same value.

Also adds lfun::_annotations().

2018-11-30

2018-11-30 17:45:37 by William Welliver <william@welliver.org>

debugger: allow creation of breakpoints on programs that haven't been created yet.

warning: this code almost certainly has a number of crashers. it works in the most
basic of situations but don't expect much more from it yet.

2018-11-29

2018-11-29 03:13:19 by William Welliver <william@welliver.org>

debugger: multiple breakpoint support, enable/disable support.

2018-11-28

2018-11-28 19:40:22 by William Welliver <william@welliver.org>

debugger: finding offsets in a program composed of multiple files works more reliably.

2018-11-28 19:40:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added support for Pike.Annotations.Inherited.

This attribute has the same semantics as the attribute
of the same name in Java.

2018-11-28 19:36:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved class annotations to the inherits.

This adds semantics to having annotations on inherits.

2018-11-28 19:36:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added Pike.Annotation.

The compiler now calls end_pass() in any annotations on the
program being compiled once each compiler pass.

2018-11-28 19:36:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make Coverity happy.

Coverity doesn't like ending a do-while(0) loop with continue.

Fixes [CID 1441424].

2018-11-28 19:36:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix file name in backtraces.

The file name for code where the next line number entry
switches to a different file was activated prematurely.

Fixes the rest of [LysLysKOM 22997909].

2018-11-22

2018-11-22 15:34:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added support for Pike.Annotations.Inherited.

This attribute has the same semantics as the attribute
of the same name in Java.

2018-11-21

2018-11-21 12:09:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'patches/lyslyskom22997909' into 8.0

* patches/lyslyskom22997909:
Testsuite: Test low_get_line() some more.
Runtime: Fix file name in backtraces.
Compiler: Keep track of the file name...

2018-11-21 12:08:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'patches/lyslyskom22997909'

* patches/lyslyskom22997909:
Testsuite: Test low_get_line() some more.
Runtime: Fix file name in backtraces.
Compiler: Keep track of the file name...

2018-11-21 12:02:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix file name in backtraces.

The file name for code where the next line number entry
switches to a different file was activated prematurely.

Fixes the rest of [LysLysKOM 22997909].

2018-11-18

2018-11-18 18:06:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make Coverity happy.

Coverity doesn't like ending a do-while(0) loop with continue.

Fixes [CID 1441424].

2018-11-17

2018-11-17 15:08:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added Pike.Annotation.

The compiler now calls end_pass() in any annotations on the
program being compiled once each compiler pass.

2018-11-16

2018-11-16 15:49:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved class annotations to the inherits.

This adds semantics to having annotations on inherits.

2018-11-15

2018-11-15 14:43:31 by William Welliver <william@welliver.org>

preliminary proof of concept debugger. single breakpoint, single stepping, continue, local viewing but no local names.

2018-11-14

2018-11-14 14:19:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed multi-counting of annotations.

Annotations were added in every pass of the compiler. They are
now cleared at the start of each pass.

2018-11-13

2018-11-13 14:48:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Make the GC aware about annotations.

2018-11-12

2018-11-12 10:30:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: The 'implement'-keyword is no more.

This functionality will be provided via the annotation syntax instead.

2018-11-07

2018-11-07 13:38:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

PikeCompiler: Move high-level classes to _static_modules.Builtin.

Top-level CMOD symbols in pike_compiler.cmod were previously lost
to the void unless explicitly handled. They now instead show up
in _static_modules.Builtin (as with similar symbols elsewhere).

2018-11-06

2018-11-06 14:51:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: First go at storing annotations.

2018-11-04

2018-11-04 16:11:11 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/master' into new_utf8

2018-11-03

2018-11-03 14:21:37 by Marcus Comstedt <marcus@mc.pp.se>

Merge remote-tracking branch 'origin/8.1' into gobject-introspection

2018-10-27

2018-10-27 12:23:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved support for defining no-ref variables.

2018-10-07

2018-10-07 10:00:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Renamed keyword implements to implement.

This is to avoid the name clash with Program.implements().

2018-10-06

2018-10-06 11:00:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added new keyword and syntax: implements.

This keyword is intended to be used to inform the compiler
that the current class intends to implement an api.

2018-08-05

2018-08-05 11:38:53 by Marcus Comstedt <marcus@mc.pp.se>

Compiler: Fix off-by-one indexing in string_builder_append_pike_opcode()

2018-08-05 10:04:47 by Marcus Comstedt <marcus@mc.pp.se>

Thread.ResourceCountKey: Make destruct immediate

2018-07-16

2018-07-16 12:55:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support inherit of CompilerEnvironment.

Fix some bugs triggered in the supporter subsystem when
executing in an inherited CompilerEnviroment.

2018-07-07

2018-07-07 09:50:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Cleaned up the resolv() calling conventions.

CompilerEnvironment()->PikeCompiler()->resolv() now takes a single
argument, and looks up the current file and handlers from the
PikeCompiler object, and then calls CompilerEnvironment()->resolv().

The actual calling of resolv() in the handlers is now performed
by CompilerEnvironment()->resolv().

2018-05-19

2018-05-19 14:43:13 by Tobias S. Josefowitz <tobij@tobij.de>

GC: Inline GC marker struct into memory object structs

This avoids unnecessary padding while keeping mostly compatible to most
other users of these structs and markers.

2018-05-19 09:13:29 by Arne Goedeke <el@laramies.com>

Merge branch 'tobij/inline_gc_markers' into 8.1

2018-03-17

2018-03-17 20:13:55 by Martin Nilsson <nilsson@fastmail.com>

Remove redundant includes.

2018-02-18

2018-02-18 12:50:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added string_builder_append_pike_opcode().

2018-02-15

2018-02-15 15:54:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e' into patches/pike63

* commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e': (19587 commits)
...

2018-02-12

2018-02-12 21:49:35 by Marcus Comstedt <marcus@mc.pp.se>

Fix spelling of FALLTHRU directive

The non-standard spelling "FALL_THROUGH" is not recognized by gcc 7.3.
Also, the comment must not contain any other text, or be placed inside
braces.

2018-02-03

2018-02-03 10:47:58 by Peter Bortas <bortas@gmail.com>

Merge remote-tracking branch 'origin/8.1' into peter/travis

2018-02-03 10:46:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fix duplicate entries from indices() et al on programs.

2018-02-03 09:48:55 by Peter Bortas <bortas@gmail.com>

Merge branch '8.1' into peter/travis

2018-01-12

2018-01-12 12:11:05 by Stephen R. van den Berg <srb@cuci.nl>

Equvivalent and equivalent are not equivalent.

2018-01-12 12:09:30 by Stephen R. van den Berg <srb@cuci.nl>

Equvivalent and equivalent are not equivalent.

2017-12-31

2017-12-31 23:19:10 by Peter Bortas <bortas@gmail.com>

Merge remote-tracking branch 'origin/8.1' into peter/travis

2017-12-30

2017-12-30 14:02:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed string_builder_append_disassembly().

Support appending disassembly without corresponding memory dump.

2017-12-20

2017-12-20 16:50:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved handling of inherit in extra pass.

Don't complain about unfinished programs in the extra pass.

2017-12-20 16:49:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed variant lookup bug in extra pass.

2017-12-16

2017-12-16 15:31:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typo from COMPILER_PASS_* conversion.

Fixes handling of local/inline variables that got broken when
COMPILER_PASS_* were added.

Fixes multiple testsuite failures.

2017-12-14

2017-12-14 15:01:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added even more COMPILER_PASS_*.

The compiler now seems to survive renumbering of COMPILER_PASS_*.

Also fixes a few (disabled) debug statements in language.yacc.

2017-12-11

2017-12-11 18:05:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Add symbolic constants COMPILER_PASS_*.

This is in preparation for adding more passes.

2017-12-07

2017-12-07 15:41:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Warn if variant type changes in second pass.

2017-12-01

2017-12-01 14:53:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved variant robustness.

Perform a more lenient scan for the previous definition
of a variant in the second pass.

Should fix issues with not finding variants in the second
pass, causing the fatal "Internal error: Not allowed to
add more identifiers during second compiler pass."

2017-11-19

2017-11-19 13:40:51 by Arne Goedeke <el@laramies.com>

Compiler: fix compile error with profiling

These profiling initialization was moved to low_add_identifier.

2017-11-18

2017-11-18 10:13:13 by Arne Goedeke <el@laramies.com>

Interpreter: merge low_return variants

2017-11-14

2017-11-14 17:59:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typo in previous commit.

2017-11-14 17:55:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved variant robustness.

Perform a more lenient scan for the previous definition
of a variant in the second pass.

Should fix issues with not finding variants in the second
pass, causing the fatal "Internal error: Not allowed to
add more identifiers during second compiler pass."

2017-11-13

2017-11-13 17:05:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Only check LFUN types in second pass.

2017-11-11

2017-11-11 16:35:01 by Tobias S. Josefowitz <tobij@tobij.de>

GC: Inline markers into datastructures

Initial work is done. This may have worse performance characteristics
for now. Futher work will use the block allocator provided iterator
instead of linked lists to visit all objects and potentially optimize
the memory layout of the marker struct.

2017-11-10

2017-11-10 15:28:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Let #pragma no_deprecation_warnings inhibit some more.

falling back to destroy() if _detruct() doesn't exist.

2017-11-05

2017-11-05 15:53:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch 'grubba/rename_lfun_destroy' into 8.1

* grubba/rename_lfun_destroy:
Modules: Fixed logts of warnings.
Testsuite: Updated for LFUN::_destruct().
Compiler: Don't complain about LFUN::destroy() in compat mode.
Fix multiple warnings.
Runtime: LFUN::destroy() has been renamed to _destruct().
Compiler: Rename LFUN::destroy() to LFUN::_destruct().

2017-11-05 15:15:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Don't complain about LFUN::destroy() in compat mode.

2017-11-05 14:35:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Rename LFUN::destroy() to LFUN::_destruct().

As decided at Pike Conference 2017.

2017-11-04

2017-11-04 15:42:14 by Arne Goedeke <el@laramies.com>

Remove computed goto interpreter mode

By descision of the Pike conference, computed goto mode was removed.

2017-11-04 14:51:06 by Arne Goedeke <el@laramies.com>

Remove !SHARED_NODES

Pike with SHARED_NODES disabled did not work. By descision of the Pike
Conference it is removed.

2017-08-02

2017-08-02 11:59:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added convenience function lexical_inherit().

This function looks up a symbol in the specified lexical scope
and inherits it.

2017-07-31

2017-07-31 21:53:49 by Martin Nilsson <nilsson@fastmail.com>

Added some const

2017-07-19

2017-07-19 17:18:16 by Martin Nilsson <nilsson@fastmail.com>

ID_STATIC -> ID_PROTECTED

2017-06-25

2017-06-25 07:46:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed prototype for _size_object().

2017-04-08

2017-04-08 20:30:39 by Martin Nilsson <nilsson@fastmail.com>

Use Pike_sp instead of sp

2017-03-19

2017-03-19 15:41:08 by Arne Goedeke <el@laramies.com>

Interpreter: merge low_return variants

2017-03-06

2017-03-06 08:11:02 by Arne Goedeke <el@laramies.com>

Compiler: instr_prologue_* are only available with machine code

2017-02-25

2017-02-25 18:13:05 by Arne Goedeke <el@laramies.com>

Compiler: instr_prologue_* are only available with machine code

2017-02-25 13:28:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use low_resolve_identifier() in resolve_program().

This reduces the overhead somewhat.

2017-02-24

2017-02-24 18:11:00 by Arne Goedeke <el@laramies.com>

Compiler: instr_prologue_* are only available with machine code

2017-02-19

2017-02-19 20:07:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Cleaned up resolve_identifier() somewhat.

Adds low_resolve_identifier().

2017-02-18

2017-02-18 12:24:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed warning.

2017-02-18 10:44:15 by Arne Goedeke <el@laramies.com>

Interpreter: merge low_return variants

2017-02-13

2017-02-13 18:38:16 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: More code simplifications.

Rename add_identifier() to low_add_identifier(), to make place
for a new add_identifier() that also updates the references table.

Make use of the new higher-level add_identifier().

2017-02-10

2017-02-10 22:17:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Reduce the amount of code duplication somewhat.

Adds internal function add_identifier(), to help set up the
argument and call debug_add_to_identifiers().

2017-02-09

2017-02-09 17:34:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved yyreport() et al to pike_compiler.cmod.

More code cleanup.

2017-02-08

2017-02-08 17:03:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved {null,placeholder}_program to pikecompiler.cmod.

Use the CMOD preprocessor for these programs.

2017-02-07

2017-02-07 17:19:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved definition of trampoline class to builtin.cmod.

NB: Moved declaration of struct and program to svalue.h due to
use by macros there.

2017-02-07 16:04:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Survive add_program_constant() without active compilation.

This is needed to be able to use CMODs at the top level.

2017-02-04

2017-02-04 13:37:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Move some more stuff from program.c to pike_compiler.c.

2017-02-02

2017-02-02 15:47:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Break out compiler stuff from program.c to pike_compiler.c.

Code layout cleanup.

Work in progress; there's still quite a bit of stuff left in
program.c that ought to be in pike_compiler.c.

2017-02-01

2017-02-01 16:13:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added internal function find_predef_identifier().

2017-02-01 13:34:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Updated syntax in doc for lfun::create().

2017-01-31

2017-01-31 14:50:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added reverse_symbol_lookup() et al.

This is an API intended for use by the disassemblers.

2017-01-30

2017-01-30 17:03:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Some layout adjustments of string_builder_append_disassembly().

2017-01-28

2017-01-28 14:30:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed indentation of PROGRAM_BUILD_DEBUG.

2017-01-28 14:16:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Adjusted warning message for masked variants.

2017-01-28 14:03:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added INHERIT_LOCAL.

Move handling of local:: to find_inherited_identifier().

2017-01-25

2017-01-25 15:22:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Break out sprintf-related stuff from stralloc.h to sprintf.h.

Minor header file cleanup.

2017-01-23

2017-01-23 14:55:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added API function string_builder_append_disassembly().

This is a function intended to be used to simplify formatting of
disassembly output.

2017-01-08

2017-01-08 14:20:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: __ARGS__ is now a macro expanding to __args__.

This ensures that the symbol was reserved in prior versions of Pike,
and also makes it possible to check support via #ifdef.

2017-01-06

2017-01-06 12:13:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added support for arguments to implicit lambdas.

2016-12-31

2016-12-31 17:12:23 by Arne Goedeke <el@laramies.com>

Replace dynamic_buffer API everywhere

This change should be purely cosmetic. It replaces the old
dynamic_buffer API by the corresponding byte_buffer API everywhere.
The wrapper definitions in dynamic_buffer.h will remain for now.

2016-12-31 17:12:22 by Arne Goedeke <el@laramies.com>

dynamic_buffer: use new buffer internally

The API of dynamic_buffer is now a slim swapper around the new buffer
API. This changes many places where the dynamic_buffer internals were
directly used.

2016-12-31 17:12:22 by Arne Goedeke <el@laramies.com>

describe_svalue: do not use global buffer

This commit removes the dynamic buffer from describe_svalue and related
funtions.

2016-12-30

2016-12-30 09:29:45 by Arne Goedeke <el@laramies.com>

Replace dynamic_buffer API everywhere

This change should be purely cosmetic. It replaces the old
dynamic_buffer API by the corresponding byte_buffer API everywhere.
The wrapper definitions in dynamic_buffer.h will remain for now.

2016-12-30 09:29:44 by Arne Goedeke <el@laramies.com>

describe_svalue: do not use global buffer

This commit removes the dynamic buffer from describe_svalue and related
funtions.

2016-12-29

2016-12-29 15:02:35 by Arne Goedeke <el@laramies.com>

dynamic_buffer: use new buffer internally

The API of dynamic_buffer is now a slim swapper around the new buffer
API. This changes many places where the dynamic_buffer internals were
directly used.

2016-12-18

2016-12-18 21:47:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: The DefaultCompilerEnvironment is a CompilerEnvironment.

2016-12-17

2016-12-17 13:56:45 by Martin Nilsson <nilsson@fastmail.com>

Identifiers can no longer contain non-ascii whitespaces. wide_isidchar can now also easily be upgraded to disallow other special characters.

2016-12-17 13:41:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation [LFUNs]: Improved doc for lfun::`->=() et al.

2016-11-14

2016-11-14 07:51:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build [NT]: Fixed C99-ism.

Fixes compilation issue on NT.

2016-11-08

2016-11-08 12:46:01 by Arne Goedeke <el@laramies.com>

dynamic_buffer: use new buffer internally

The API of dynamic_buffer is now a slim swapper around the new buffer
API. This changes many places where the dynamic_buffer internals were
directly used.

2016-11-07

2016-11-07 14:03:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [resolver]: Protect id_to_program() against circularities.

2016-11-05

2016-11-05 11:24:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added ID_WEAK.

Variables with the modifier flag ID_WEAK now become IDENTIFIER_WEAK.

2016-11-04

2016-11-04 09:54:46 by Tobias S. Josefowitz <tobij@tobij.de>

program.c: autodoc fix

2016-10-30

2016-10-30 11:44:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Warn about unreachable variant functions.

2016-10-12

2016-10-12 13:42:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Documented optional further args to search().

Also fixes the types for search() and lfun::_search().

2016-09-22

2016-09-22 09:14:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Object variables declared as mixed may contain this...

Don't reference count direct cyclic references via mixed variables.

Fixes [LysLysKOM 21860701]/[Pike mailinglist 14570].

2016-09-22 09:13:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Object variables declared as mixed may contain this...

Don't reference count direct cyclic references via mixed variables.

Fixes [LysLysKOM 21860701]/[Pike mailinglist 14570].

2016-09-16

2016-09-16 09:34:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added CompilerEnvironment()->lock().

This is a class that exposes the compiler internal lock.

Fixes some of [bug 7783 (#7783)].

2016-09-15

2016-09-15 11:31:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added CompilerEnvironment()->lock().

This is a class that exposes the compiler internal lock.

Fixes some of [bug 7783 (#7783)].

2016-08-21

2016-08-21 01:49:11 by Martin Nilsson <nilsson@fastmail.com>

No need of calling findstring on __INIT. We have a reference in lfun_strings.

2016-07-27

2016-07-27 18:12:46 by Arne Goedeke <el@laramies.com>

Interpreter: simplify struct pike_frame

- expendibles and save_sp are usually only used during setup and frame
deallocation. It is enough to store them as offsets from 'locals'
- reordered the struct entries to avoid some padding

2016-07-23

2016-07-23 21:43:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation [Compiler]: Added some notes about supporters.

2016-07-14

2016-07-14 20:20:55 by Martin Nilsson <nilsson@fastmail.com>

hashtable.h isn't used here.

2016-07-11

2016-07-11 06:19:05 by Arne Goedeke <el@laramies.com>

Interpreter: remove mark_sp_base

mark_sp_base in struct pike_frame was unused

2016-07-04

2016-07-04 18:08:17 by Martin Nilsson <nilsson@fastmail.com>

It's tedious to write trim_all_whites. Make trim the canonical name.

2016-06-20

2016-06-20 15:03:32 by Per Hedbor <ph@opera.com>

Use enums for lfun:s for more convenient debug

2016-06-14

2016-06-14 09:13:37 by Arne Goedeke <el@laramies.com>

Interpreter: seperate apply functions into several steps

2016-06-14 09:13:37 by Arne Goedeke <el@laramies.com>

Interpreter: remove mark_sp_base from frame

mark_sp_base was always identical to save_mark_sp and never used.

2016-06-14 09:13:37 by Arne Goedeke <el@laramies.com>

Interpreter: store save_sp and expandibles as offsets

2016-06-13

2016-06-13 15:26:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Variables]: Fixed integer range check for complex integer types.

Fixes eg the Filesystem.Zip (which uses typedefed integers) tests on
32-bit systems.

2016-06-12

2016-06-12 08:35:52 by Arne Goedeke <el@laramies.com>

Interpreter: store save_sp and expandibles as offsets

2016-06-10

2016-06-10 13:41:00 by Arne Goedeke <el@laramies.com>

Interpreter: remove mark_sp_base from frame

mark_sp_base was always identical to save_mark_sp and never used.

2016-05-27

2016-05-27 13:58:50 by Per Hedbor <ph@opera.com>

int(range) is now stored in a native integer if the range will fit.

Since "large" is stored as INT32 max/min it tends to always fit if the
range is not unbound.

This means that a variable set as int(0..255) will no longer be able
to store values bigger than or smaller than the size of the native
integer, which is an incomatible change, albeit a fairly logical one.

2016-05-17

2016-05-17 14:47:24 by Per Hedbor <ph@opera.com>

make _sqrt a "fake" lfun

2016-05-17 14:14:25 by Per Hedbor <ph@opera.com>

Renamed pow lfun from pow to `**.

This is somewhat incompatible, previously pow(X,3) called X->pow,
now it will call X->`**.

2016-05-17 14:12:25 by Per Hedbor <ph@opera.com>

Added ** as the exponentiation operator.

2016-05-06

2016-05-06 13:43:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added INHERIT_{SELF,GLOBAL,ALL}.

Clean up find_inherited_identifier() somewhat by using symbolic
constants.

2016-05-06 11:02:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Got rid of test that was always true.

This was a remnant of the Pike 7.6 compat layer.

2016-05-06 10:48:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: this_function now obeys the inherit specifier.

2016-05-05

2016-05-05 09:53:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved handling of inherit ::this_program.

2016-05-05 08:45:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use find_inherited_identifier() for ::this_program.

2016-05-02

2016-05-02 17:35:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed some bugs in find_inherited_identifier().

2016-05-02 16:37:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added helper function find_inherited_identifier().

This function is intended to be used to reduce some of
the duplicated code in language.yacc.

2016-05-01

2016-05-01 11:05:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [auto]: Fixed multiple issues.

The PIKE_T_AUTO type node now always has a child type.

gc_check_type() now knows about PIKE_T_AUTO.

{debug_,}push_auto_typed_type() is no more.

Fixed issue with low_describe_type() appending to the wrong
buffer when describing the auto type.

Fixes some related type reference counting errors.

2016-04-12

2016-04-12 17:01:37 by Arne Goedeke <el@laramies.com>

Interpreter: seperate apply functions into several steps

2016-04-08

2016-04-08 19:48:49 by Martin Nilsson <nilsson@fastmail.com>

Removed PTRDIFF_T_TO_LONG

2016-03-20

2016-03-20 13:10:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Survive alias getting replaced by constant in second pass.

2016-03-20 13:08:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Survive alias getting replaced by constant in second pass.

2016-03-15

2016-03-15 21:19:34 by Martin Nilsson <nilsson@fastmail.com>

No need to include stuff.

2016-03-13

2016-03-13 21:40:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Random: Updated some types and AutoDoc.

2016-03-09

2016-03-09 21:07:25 by Martin Nilsson <nilsson@fastmail.com>

Change the _random interface to provide rnadom_string and random from the called random object.

2016-02-12

2016-02-12 13:50:54 by Martin Nilsson <nilsson@fastmail.com>

Removed PTRDIFF_T_TO_LONG

2016-01-29

2016-01-29 21:03:22 by Martin Nilsson <nilsson@fastmail.com>

Removed map_variable.

2016-01-29 20:41:25 by Martin Nilsson <nilsson@fastmail.com>

Removed simple_add_variable as it isn't used and has the old type of type argument.

2016-01-29 19:54:23 by Martin Nilsson <nilsson@fastmail.com>

Remove the fatal shorthand for Pike_fatal.

2016-01-29 19:29:59 by Martin Nilsson <nilsson@fastmail.com>

Remove pike_add_function2.

2016-01-26

2016-01-26 19:38:42 by Martin Nilsson <nilsson@fastmail.com>

SIMPLE_BAD_ARG_ERROR is only kept for compatibility, but we still had 500+ uses of it.

2016-01-11

2016-01-11 19:49:51 by Martin Nilsson <nilsson@fastmail.com>

Use variadic macros.

2016-01-06

2016-01-06 14:07:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Fixed typo in documentation comment.

2016-01-04

2016-01-04 14:59:45 by Per Hedbor <ph@opera.com>

Merge branch 'per/auto_type_81' into 8.1

2016-01-04 14:57:56 by Per Hedbor <ph@opera.com>

First stage of the 'auto' type.

Works, but for now only for variable declarations, not return types
(entirely, most of the plumbing is done) or for variables declared in
foreach and sscanf.

Since the loop variables in foreach is really the most important
location, this is of somewhat limited use so far.

Commited for safekeeping.

Conflicts:
src/language.yacc
src/lexer.h
src/pike_types.c
src/svalue.h

2016-01-04 14:57:56 by Per Hedbor <ph@opera.com>

Somewhat better handling of global auto variables

2015-12-29

2015-12-29 12:53:55 by Per Hedbor <ph@opera.com>

Somewhat better handling of global auto variables

2015-12-28

2015-12-28 13:21:58 by Per Hedbor <ph@opera.com>

First stage of the 'auto' type.

Works, but for now only for variable declarations, not return types
(entirely, most of the plumbing is done) or for variables declared in
foreach and sscanf.

Since the loop variables in foreach is really the most important
location, this is of somewhat limited use so far.

Commited for safekeeping.

Conflicts:
src/language.yacc
src/lexer.h
src/pike_types.c
src/svalue.h

2015-12-25

2015-12-25 12:05:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Rename debug_find_shared_string().

Rename debug_find_shared_string() to debug_findstring(), since
it does what debug_findstring() has done historically, and remove
the old (new?) implementation of debug_findstring().

2015-12-22

2015-12-22 17:26:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use debug_find_shared_string() instead of debug_findstring().

These calls all are to check that the string has been properly added
to the string hash table (ie "finished"), so it is safe to just perform
a straight hash table lookup.

Fixes the performance issue caused when using debug_findstring().

2015-12-19

2015-12-19 18:19:10 by Tobias S. Josefowitz <tobij@tobij.de>

Compiler: added compile and program unload events

2015-11-30

2015-11-30 22:43:54 by Martin Nilsson <nilsson@fastmail.com>

Removed some 8-bit characters that grep doesn't like (I should probably fix grep).

2015-10-17

2015-10-17 11:46:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Fixed typo in --with-debug code.

2015-10-17 00:45:56 by Martin Nilsson <nilsson@fastmail.com>

Mark some more code as unreachable.

2015-10-17 00:28:32 by Martin Nilsson <nilsson@fastmail.com>

Obsess less about if size_shift is 3.

2015-10-14

2015-10-14 18:49:19 by Martin Nilsson <nilsson@fastmail.com>

Removed Intel IA64 compiler specific DO_NOT_WARN.

2015-10-11

2015-10-11 14:04:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Merge branch '8.1' into grubba/typechecker-mk3

* 8.1: (51 commits)
Compiler [Types]: Got rid of my_describe_type().
Compiler [Types]: Fixed wide strings in nested types.
Compiler [Types]: low_describe_type() now uses string_builder.
string_builder_sprintf: Fixed '+' for floats.
string_builder_sprintf: Added support for %T.
Calendar.mkrules: Improved backward compat.
Auth.OAuth.Client: Fixed AutoDoc markup issue.
New modules for communicating with different (RESTful) web apis (including OAuth and OAuth2 client modules) .
Documentation [%]: Added some clarifications and improved markup.
Inotify: Minor code cleanup. Potential fix for [CID 1325796].
Inotify: Removed some debug output.
Filesystem.Monitor [Inotify]: Improved support for blocking mode.
Inotify: Don't reference count immediate circular references.
Inotify: Removed some dead code.
System.Inotify, Filesystem.Monitor: Updates to use new Inotify API.
Inotify: Use fd_callback_boxes, internal event parsing.
Search.Database.MySQL: Censor the SQL-url.
Sql: Added censor_sql_url().
Search.Database.MySQL: Avoid long lived database connections.
Inotify: Don't throw errors in rm_watch() on invalid watch descriptor.
...

2015-10-02

2015-10-02 06:22:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed invalid pointer dereference in error message.

2015-09-01

2015-09-01 15:41:08 by Per Hedbor <ph@opera.com>

Optimized store_prog_string and store_constant somewhat.

They are now O(n) instead of O(n^2) for common cases.

For strings, when the number of references to the string is 1, and for
constants when equal is not true (using == instead of equal) and
refs==1 and the whatever is not an object but has references.

2015-09-01 15:39:17 by Per Hedbor <ph@opera.com>

Optimized store_prog_string and store_constant somewhat.

They are now O(n) instead of O(n^2) for common cases.

For strings, when the number of references to the string is 1, and for
constants when equal is not true (using == instead of equal) and
refs==1 and the whatever is not an object but has references.

2015-08-25

2015-08-25 16:50:15 by Per Hedbor <ph@opera.com>

Merge remote-tracking branch 'origin/8.1' into per/substrings

2015-08-24

2015-08-24 17:42:42 by Martin Nilsson <nilsson@fastmail.com>

GTK1 is deprecated

2015-08-24 14:43:50 by Per Hedbor <ph@opera.com>

Merge remote-tracking branch 'origin/8.1' into per/substrings

2015-08-23

2015-08-23 09:38:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Build: Fixed some warnings.

The first argument to low_quick_add_function() can't be const, since
it will have references added...

2015-08-22

2015-08-22 18:35:09 by Arne Goedeke <el@laramies.com>

Strings: generate more static strings

quick_add_function and make_shared_string will now create
static strings when the argument is a compile time constant

2015-08-18

2015-08-18 16:55:08 by Per Hedbor <ph@opera.com>

Merge branch 'arne/string_alloc' into 8.1

Conflicts:
src/backend.cmod
src/builtin.cmod
src/builtin_functions.c
src/stralloc.c

2015-08-07

2015-08-07 14:31:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: LFUN prototypes are not useful...

Reenable the code that hid prototypes from the LFUN lookup table.

2015-06-14

2015-06-14 06:53:34 by Arne Goedeke <el@laramies.com>

Interpreter: seperate apply functions into several steps

2015-06-11

2015-06-11 10:09:13 by Martin Karlgren <marty@roxen.com>

count_memory: avoid visiting refs at all in negative lookahead mode.

2015-06-05

2015-06-05 09:38:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved cycle detection in implements() and is_compatible().

Under some circumstances the new cache entries could be overwritten
before the functions had completed, leading to infinite recursion.

Fixes [InfoKOM 775534].

Compiler: Added some missing END_CYCLIC().

All execution branches from a BEGIN_CYCLIC() must either
END_CYCLIC() or throw an error before DECLARE_CYCLIC()
falls out of scope.

Potential fix for [LysLysKOM 20940558] (Pike developer list).

2015-06-04

2015-06-04 20:59:17 by Martin Karlgren <marty@roxen.com>

count_memory: avoid visiting refs at all in negative lookahead mode.

2015-05-25

2015-05-25 15:33:02 by Martin Nilsson <nilsson@opera.com>

Removed trailing spaces.

2015-05-19

2015-05-19 18:05:25 by Martin Nilsson <nilsson@opera.com>

Allocation failure fixes.

2015-05-19 16:06:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved stack robustness against compiler errors.

Some syntax errors leave droppings on the stack, and this could confuse
other code.

Fixes fatal "yyparse() left 2 droppings on the stack!" for a testsuite test.

2015-05-19 16:02:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved stack robustness against compiler errors.

Some syntax errors leave droppings on the stack, and this could confuse
other code.

Fixes fatal "yyparse() left 2 droppings on the stack!" for a testsuite test.

2015-05-16

2015-05-16 09:00:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some error handling for aliases.

Fixes [CID 1298215].

2015-05-15

2015-05-15 09:15:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed typo in prototype reference fix.

Fixes various compilation issues with the Crypto modules.

2015-05-15 08:24:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Don't reference inherited prototypes.

Having local references to inherited prototype functions is not
useful, as they can never become anything else than a prototype.

It also confuses code that uses mixins and attempts to use the
anonymous inherit specifier to access the base implementation
in one inherited class when there's a corresponding prototype
in another inherited class, in which case both functions were
returned. This typically caused "Calling undefined function.".

As a bonus this also improves code generation somewhat.

2015-05-14

2015-05-14 14:25:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed decode_value() for GTK1-related objects.

The base module for GTK1 has been renamed from ___GTK to ___GTK1...

Fixes "Decode failed: Decode error: Failed to get program from ID 1035.".

2015-05-03

2015-05-03 18:49:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Program: Disabled some code when not PIKE_DEBUG. Fixes [CID 742547].

2015-05-01

2015-05-01 22:21:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Program: Removed some dead code. Fixes [CID 1294593].

2015-04-28

2015-04-28 14:02:09 by 0

Silence more compiler warnings by restoring the UNUSED() family of macros. If
this change exposes any invalid attributes, please remove them specifically
instead.

2015-04-28 13:56:46 by 0

Silence more compiler warnings by restoring the UNUSED() family of macros. If
this change exposes any invalid attributes, please remove them specifically
instead.

2015-04-24

2015-04-24 12:36:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Always validate the linenumber information.

Fixes [CID 1294660].

2015-04-23

2015-04-23 16:31:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Misc: Added some missing fall-through markers and breaks.

2015-03-16

2015-03-16 17:27:53 by Martin Nilsson <nilsson@opera.com>

Remove deprecated security system.

2015-03-13

2015-03-13 21:15:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Doc: Clarified the difference between LFUNs `==() and _equal().

2015-02-07

2015-02-07 13:02:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Clear local variables on pop.

Local variables may get reused after pop, and such code expects
getting clean variables. This also reduces the lifetime for
various locks and similar to the expected range.

Note that this reduces the quality of the generated code somewhat.

2015-02-07 12:55:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Clear local variables on pop.

Local variables may get reused after pop, and such code expects
getting clean variables. This also reduces the lifetime for
various locks and similar to the expected range.

Note that this reduces the quality of the generated code somewhat.

2014-12-05

2014-12-05 15:01:31 by Martin Nilsson <nilsson@opera.com>

check_type_string is a noop. Remove it.

2014-12-04

2014-12-04 19:27:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added low_is_variant_dispatcher().

This function is useful when you have an identifier that might be a
variant dispatcher, but you don't know of a corresponding reference.

2014-12-04 19:27:12 by Per Hedbor <ph@opera.com>

Removed F_IDENTIFIER: It was never generated.

This lessens the confusion and code-duplication somewhat.

2014-12-04 19:27:09 by Per Hedbor <ph@opera.com>

Added a note about the lfun list in the autodoc parser

2014-12-04 19:27:03 by Per Hedbor <ph@opera.com>

Only set IDENTIFIER_NO_THIS_REF for object and function variables

2014-12-04 19:26:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved cycle detection in implements() and is_compatible().

Under some circumstances the new cache entries could be overwritten
before the functions had completed, leading to infinite recursion.

Fixes [InfoKOM 775534].

2014-12-04 19:26:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Clean up some of the visit_* API.

All the visit_*() functions now have all arguments.

2014-12-04 19:26:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Propagate the extra parameter everywhere.

All the visit_*() functions and macros should now propagate the
argument extra.

2014-12-04 19:26:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Added visit_{enter,leave}() API.

Make it easier to keep track of state in the visit_*() API
by tracking when we start and stop visiting things.

2014-12-04 19:26:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added PROGRAM_CLEAR_STORAGE.

Adds a flag indicating that the storage held by objects of the class
should be cleared prior to being freed. This is mainly to avoid having
secrets around longer than necessary.

FIXME: Consider adding a corresponding flag for objects to mark eg
some bignums for clearing.

2014-12-04 19:26:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added convenience function get_inherited_storage().

This function returns the storage in the current object belonging
to a specific inherit.

2014-12-04 19:26:29 by Per Hedbor <ph@opera.com>

Changed return type of get_{inherit_,}storae to void*

This makes it possible to remove quite a lot of casts.

2014-12-04 19:26:26 by Per Hedbor <ph@opera.com>

Moved implements_cache and friend to power of two.

Also shrunk it by a factor of four, we really should have dynamic
sizes here.

2014-12-04 19:26:17 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed thread context conflict.

co_wait_interpreter() doesn't swap out and in the active thread...

Fixes [LysLysKOM 20811527] (and probably [LysLysKOM 20811537] as well).

2014-12-04 19:26:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved type checking for program references.

Inherits and type declarations now complain about use of
deprecated symbols.

2014-12-04 19:26:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Avoid threads_disable().

The Pike compiler now uses a dedicated reentrant lock instead
of the brute-force approach of using threads_disable().

This should improve concurrency with other threads.

2014-12-04 19:26:00 by Martin Nilsson <nilsson@opera.com>

realloc takes void* and doesn't need any cast.

2014-12-04 19:25:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved robustness of parent_storage().

Under some circumstances parent_storage() could return
a storage pointer to a class that had inherited the
parent program. Fix this by making sure that we get the
storage for the program that we expect to find as parent.

2014-12-04 19:25:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support __INIT with C programs.

When a C program inherits Pike code, it may need to have an __INIT.
This would previously cause fatal errors as end_program() transited
to compiler pass #2 before the __INIT symbol had been added.

end_first_pass() now transits from pass #1 to pass #2 if finish
has been set, and ensures that __INIT (if needed) exists.

2014-12-04 19:25:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: __INIT() has side effects...

Make sure that __INIT gets marked as having side effects,
or calls to it may get optimized away...

Also renames an internal variable.

2014-12-04 19:25:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed variant zapping of reference #0.

The variant dispatcher collector was missing an offset, and always
zapped the modifier bits for identifier reference #0. This has the
effect that identifier reference #0 got the modifier bits intended
for the last variant dispatcher in the class.

2014-12-04 19:25:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improve diagnostics from the variant dispatcher.

The variant dispatcher now informs about all potential alternatives
when there's an argument mismatch.

2014-12-04 19:25:46 by Per Hedbor <ph@opera.com>

Revert "Runtime: Improve diagnostics from the variant dispatcher."

This reverts commit a0b635a537e32c03c6e95afd7e42dd8021efc406.

Now Process.popen(string) works again.

2014-12-04 19:25:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Reinstate "Runtime: Improve diagnostics from the variant dispatcher."

Process.popen(string) should now work with it enabled.

This reverts commit 50348d848ec84753a198290cf5be9425a5b69f8e, and
reinstates commit a0b635a537e32c03c6e95afd7e42dd8021efc406 + patch.

2014-12-04 19:25:31 by Martin Nilsson <nilsson@opera.com>

Inline find_object_type() to fix const warning.

2014-12-04 19:25:31 by Martin Nilsson <nilsson@opera.com>

Hide stub function f_compilation_env_filter_exception.

2014-12-04 19:25:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support modifier-style attributes in more places.

The syntaxes

__attribute__("foo", mixed) x;

and

__attribute__("foo") mixed x;

are now equivalent.

2014-12-04 19:25:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: program_from_type() now uses find_object_type().

This fixes a bug where program_from_type could return eg the program
for a function object argument and similar. It now only recurses
meta types and not value types.

2014-12-04 19:25:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added support for casting types to program.

Casting an object type value to program will now result in the
corresponding program. eg:

program p = (program)_typeof(o);

is approximately the same as

program p = object_program(o);

2014-12-04 19:25:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved variant dispatcher diagnostics.

The variant dispatcher now attempts to generate a more
informational error than "Invalid arguments to x()!"
when the actual arguments don't match any of the variants.

2014-12-04 19:25:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix scope name for inherit ::this_program.

The scope name for inherits using ::this_program used to
be "this_program", which caused the "this_program::"-scope
to refer to the inherit rather than to the current class.

The scope now instead gets its name from the name of the current class.

Also fixes Crypto.CTR.State, which triggered the problem.

2014-12-04 19:25:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Using FIND_LFUN() with non-LFUNS is an error.

Make sure to fatal if FIND_LFUN() is used with a fake LFUN.

2014-12-04 19:25:08 by Tobias S. Josefowitz <tobij@tobij.de>

optimization: use new unaligned helpers

2014-12-04 19:25:08 by Tobias S. Josefowitz <tobij@tobij.de>

mostly harmless overflows, fixed

2014-12-04 19:25:07 by Arne Goedeke <el@laramies.com>

program: check lfun number before accesing array

this led to out of bounds reads when accessing lfuns like _random

2014-12-04 19:24:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Migrate OPT_* flags to the variant dispatcher.

Variant dispatchers need to have the same set of OPT_* flags
as the functions they dispatch to, to avoid over optimization.

Fixes [Pike Mailinglist 13786]/[LysLysKOM 20594561].

2014-12-04 19:24:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Document some previously undocumented symbols.

Most builtin stuff should now be documented.

2014-12-04 19:24:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug.size_object: Added some doc for lfun::_size_object().

All lfuns should now be documented.

2014-12-04 19:24:40 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Moved some lfun documentation around.

2014-12-04 19:24:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

random: lfun::_random() now actually is a (fake) lfun.

lfun::_random() now behaves like a proper lfun.

Moved some documentation around accordingly.

2014-12-04 19:24:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

AutoDoc: Improved documentation of some LFUNs.

2014-12-04 19:24:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Language: Support referring directly to inherited scopes.

find_inherit() now falls back to the most recent scope if
it is not present among the direct scopes. This is useful
when having deeply nested inherits, and allows for eg:

container::m_obj::base_obj::m_name::create();

to possibly be replaced with just

m_name::create();

2014-12-04 19:24:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

decode_value: id_to_program() now knows about Nettle.

2014-12-04 19:24:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Git rid of some symbol mangling.

Fixes lookup of deep inherits.

2014-12-04 19:24:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed inherits of deep mixins.

Fixes the long standing [bug 6063 (#6063)].

2014-12-04 19:24:31 by Arne Goedeke <el@laramies.com>

fixed count_memory_in_programs

2014-12-04 19:24:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug: Fixed bug in dump_program_tables().

The filename for inherited references was looked up in the wrong
program.

2014-12-04 19:24:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Rename the arguments to really_low_reference_inherited_identifier().

The arguments were confusing in that 'e' was the inherit number and
'i' was the reference number. They are now named 'i' for the inherit
number, and 'f' for the reference number.

2014-12-04 19:24:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make more stuff available to cmods.

{really_,}low_reference_inherited_identifier() are needed
to be able to access overloaded identifiers from C-modules.

2014-12-04 19:24:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added get_inherit_storage().

Adds easy access to the storage belonging to a specific inherit
in an object. This function should be used in preference to
get_storage() when the inherit graph is known, to improve
support for multiple inherit of programs implemented in C.

2014-12-04 19:24:12 by Arne Goedeke <el@laramies.com>

Runtime: Fixed typo in FIND_PROGRAM_LINE().

Fixes a segfault in call_backtraces()

2014-12-04 19:24:11 by Arne Goedeke <el@laramies.com>

compiler: use new block allocator for node_s

2014-12-04 19:24:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed bug in ext_store_program_line().

The filename was leaked, could be lost and triggered the
"Invalid file entry in linenumber info." fatal when used
in a pike compiled --with-debug.

2014-12-04 19:24:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fixed typo in FIND_PROGRAM_LINE().

Fixes SIGSEGV when rendering some backtraces in PIKE_DEBUG mode.

2014-12-04 19:24:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Modules: Export some more functions to the module API.

These functions are needed to find inherited symbols.

2014-12-04 19:24:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Objects: Exit event handlers may need the parent.

Make sure that parent_storage() also works from exit event
handlers. Fixes fatal "Shouldn't get an exception in destruct()."

Also propagates the PROGRAM_HAS_C_METHODS flag on inherit.

2014-12-04 19:24:07 by Per Hedbor <ph@opera.com>

Added support for an _object_size method in objects.

If defined the return value from that function will be added to the
size calculated by _object_size.

This is mainly useful to get more correct debug information about
memory usage, as an example when using Debug.pp_object_usage.

Callbacks have currently only been added to Image.Image and
System.Memory.

Currently the normal memory_usge() function does not include these
sizes, it should probably do so, however.

2014-12-04 19:24:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Changed line number file name representation.

The program line number table now contains indices into
the program string table to keep track of file names,
instead of having a binary dump of the file name directly
in the line number table. This makes for a somewhat cleaner
line number code.

Fixes old FIXME.

2014-12-04 19:24:05 by Martin Nilsson <nilsson@opera.com>

Save one realloc for wide string file names and moved trivial code into make_plain_file.

2014-12-04 19:24:00 by Marcus Comstedt <marcus@mc.pp.se>

Runtime: Fix references to threads_disabled if no threads

2014-12-04 19:23:56 by Arne Goedeke <el@laramies.com>

uninitialized memory access

2014-12-04 19:23:56 by Arne Goedeke <el@laramies.com>

initialize pike_frame->num_args even in special cases

2014-12-04 19:23:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: More __INIT() related fixes.

Avoid calling __INIT() when it is just a prototype.

2014-12-04 19:23:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed __INIT() prototype detection.

The __INIT() prototype detection in the decode_value() case
was off by one in the previous commit. With this fix all of
the known issues introduced by the __INIT() changes seem to
be fixed.

2014-12-04 19:23:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Inhibit warnings for creating deprecated lfuns.

Fixes [LysLysKOM 20354456].

2014-12-04 19:23:46 by Martin Nilsson <nilsson@opera.com>

Removed auto bignum checks.

2014-12-04 19:23:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

encode_value: Support variant functions.

Note: No changes were needed to decode_value().

2014-12-04 19:23:44 by Arne Goedeke <el@laramies.com>

fixed pike_type leak

2014-12-04 19:23:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

decode_value: Fix handling of inherits.

Use program.c:lower_inherit() in decode_value(). The new
parent flags handling in low_inherit() isn't safe to use
from decode_value(), since the program_state stack isn't
necessarily the same as when the encoded program was
initially compiled.

Fixes various dumping errors.

2014-12-04 19:23:40 by Arne Goedeke <el@laramies.com>

Added new block allocator. It dramatically speeds up free, when
allocating many blocks and deallocation happens non linearly.

2014-12-04 19:23:39 by Per Hedbor <ph@opera.com>

[performance] Use the hashtable more when indexing objects

Now it is used even if there is only one identifier in the object.
That helps more than it should, really

2014-12-04 19:23:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed overriding of variant functions.

Overriding of variant functions now seems to work as intended.

Also adds testsuite test that checks some of the cases.

2014-12-04 19:23:35 by Martin Nilsson <nilsson@opera.com>

Removed the experimental facets implementation.

2014-12-04 19:23:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved handling of variant functions.

The idea here is that a non-variant function restarts the function
definition for the symbol (ie overrides all earlier variants), and
a variant function adds another case to the existing definition for
the symbol (if any).

Also added detection of variant getters and setters.

2014-12-04 19:23:33 by Martin Nilsson <nilsson@opera.com>

Small compile fix.

2014-12-04 19:23:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Minor code cleanup.

Store Pike_compiler->new_program in a local variable in
define_function().

2014-12-04 19:23:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved overriding of variant functions.

Overriding a variant function with a non variant
now causes later variant function overrides to
not reinstate the function.

2014-12-04 19:23:31 by Per Hedbor <ph@opera.com>

Added get_lax_type_of_svalue. Used for constant:s.

int(0..0) -> zero
int(X..Y) -> int
string(X..Y) -> string

This was done to remove some code duplication, and as an added feature
constant x = "foo"; now allows you to assign "f\xfff" when inheriting.

2014-12-04 19:23:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved variant dispatcher.

Inherited dispatchers and the ::-operator now work in some cases.

2014-12-04 19:23:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added dispatcher for variant functions. (EXPERIMENTAL!)

This is the first attempt at a generic dispatcher for
variant functions. It seems to work for the trivial cases:

| Pike v7.9 release 5 running Hilfe v3.5 (Incremental Pike Frontend)
| > class foo {
| >> variant int bar(int a) { return a*2; }
| >> variant string bar(string s) { return "FOO" + s + "FOO"; }
| >> variant string bar() { return "FOO"; }
| >> }
| > typeof(foo()->bar);
| (1) Result: function( : string) | function(int : int) | function(string : string)
| > foo()->bar(17);
| (2) Result: 34
| > foo()->bar("BAR");
| (3) Result: "FOOBARFOO"
| > foo()->bar();
| (4) Result: "FOO"
| > foo()->bar(1.2);
| Compiler Error: 1: Bad argument 1 to bar.
| Compiler Error: 1: Expected: string | int.
| Compiler Error: 1: Got : float.
| > foo()->bar((mixed)1.2);
| Invalid arguments to bar()!
| HilfeInput:1: HilfeInput()->foo()->bar(1.2)
| HilfeInput:1: HilfeInput()->___HilfeWrapper()

Note that it is probably broken for more complicated cases.
Such cases include when the variants have differing modifiers
(including when one of the variants lack the variant modifier).

2014-12-04 19:23:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Removed some obsolete variant code.

Changed approach to implementing variant functions.
This removes the remnants of the old approach.

2014-12-04 19:23:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Hide variant functions from the normal lookup functions.

The idea here is to hide the variant functions from normal lookup,
and then to add a dispatcher function, which calls the appropriate
variant function later.

2014-12-04 19:23:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added new lookup functions for variants.

Added new lookup function really_low_find_variant_identifier()
that looks up based on both name and type.

2014-12-04 19:23:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed updating of PROGRAM_{NEEDS,USES}_PARENT.

low_inherit() may get called with a parent offset of 24
(OBJECT_PARENT + 42) or 25 (INHERIT_PARENT + 42) when
called from decode_value().

Make sure we don't start zapping flags in random programs
on the compiler stack when this happens.

Fixes [LysLysKOM 20258894] and [LysLysKOM 20273476]/[Pike 13584].

2014-12-04 19:23:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Repurposed reference_inherited_identifier().

The previously unused function reference_inherited_identifier() is
now analogous to the low_* and really_low_* variants, and exported.

2014-12-04 19:23:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed a few bugs in reference_inherited_identifier().

2014-12-04 19:23:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added resolve_program().

Added helper function resolve_program() to simplify resolving of
program symbols during compile-time for C-modules.

This function is used from precompiled code when inheriting
strings (API level 5).

2014-12-04 19:23:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added support for ::this_program.

This syntax refers to the previous definition of the current class
in its parent, and is typically used with inherit like:

inherit Foo;

// Override the Bar inherited from Foo.
class Bar {
// Bar is based on the implementation from Foo.
inherit ::this_program;

// ...
}

Note that this change is slightly incompatible with Pike 7.8.

2014-12-04 19:23:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed low_inherit() updating parent flags.

The PROGRAM_{NEEDS,USES}_PARENT flags could be lost
in pass 2 of the compiler.

Also fixes a related issue when low_inherit() is
called by decode_value().

2014-12-04 19:23:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: low_inherit() now updates parent flags.

Moved update of parent flags (PROGRAM_{NEEDS,USES}_PARENT) from
compiler_do_inherit() to low_inherit(), to help out C-modules
that inherit programs needing parent pointers, since they
typically use low_inherit() directly.

2014-12-04 19:23:18 by Felipe Monteiro de Carvalho <fcarvalho@opera.com>

Fixes compilation on Kubuntu 12.10.

According to the bison manual, yydebug is only available if YYDEBUG is
defined and equals 1. Also the yyparse prototype was wrong.

2014-12-04 19:23:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Reduced verbosity for softcast errors.

2014-12-04 19:23:13 by Arne Goedeke <el@laramies.com>

PMOD_EXPORT some more symbols, which are being used by dynamic modules
in case of PIKE_DEBUG

2014-12-04 19:23:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved diagnostics in -rt mode.

Also adds the string_builder_explain_*() functions, that
mirror the corresponding yyexplain_*() functions.

2014-12-04 19:23:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make sure private implies both local and protected.

The typechecker and other stuff got confused when symbols
were private but not protected.

Fixes [LysLysKOM 20106812]:
| 20106812 idag 12:54 /12 rader/ Mattias Wingstedt (Firefruit)
| Mottagare: Pike (-) erfarenhetsutbyte <12765>
| Ärende: Felarv
| ------------------------------------------------------------
| Jag får "type mismatch in argument" där argumentet som förväntas är en
| Error.Generic. Den klagar på "Missing identifier error_name".
|
| Det jag skickar in är ett objekt från en klass som ärver
| Error.Generic. Fast den verkar ha rätt, när jag instansierar en
| Error.Generic får den en error_name, som saknas när jag instansierar
| min klass som ärver Error.Generic. I övrigt verkar de båda objekten
| innehålla samma medlemsvariabler.
|
| Pike version 7.8 release 700.
|
| Vad kan det vara för fin finess mitt program har råkat ut för?
| (20106812) /Mattias Wingstedt (Firefruit)/----------

2014-12-04 19:23:02 by 0

Wrap unused parameters in UNUSED(), and debug-only parameters in DEBUGUSED(), to cut
down on compiler warnings. The macro also renames parameters to catch accidental use.
(There are more places to clean up but I don't want to modify code that isn't compiling
on my machine.)

2014-12-04 19:22:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added low_program_from_svalue().

This allows for passing the parent object and identifier when needed.

This is needed for [bug 6573 (#6573)].

2014-12-04 19:22:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use cast to program instead of object_program() for inherits.

This is needed to be able to simulate inheritable programs with objects.

Fixes [bug 6573 (#6573)].

2014-11-19

2014-11-19 17:18:52 by Anders Johansson <anders@roxen.com>

Build: Support Bison 3.

2014-11-15

2014-11-15 13:42:52 by Stephen R. van den Berg <srb@cuci.nl>

Remove superfluous legacy compat support prior to 7.8.

2014-11-10

2014-11-10 09:51:23 by Martin Nilsson <nilsson@opera.com>

ins_short isn't used.

2014-11-06

2014-11-06 05:50:42 by Martin Nilsson <nilsson@opera.com>

Added some consts.

2014-10-22

2014-10-22 17:19:23 by Arne Goedeke <el@laramies.com>

Fix -Wglobbered warnings.

One of them was actually legitimate.

2014-10-22 17:18:28 by Arne Goedeke <el@laramies.com>

Fix -Wglobbered warnings.

One of them was actually legitimate.

2014-10-18

2014-10-18 20:51:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Doc: Added some Doxygen markup for C-level APIs.

2014-10-06

2014-10-06 17:00:00 by Per Hedbor <ph@opera.com>

Revert "Do not consider a function to be implemented if it's just a prototype."

This reverts commit 1881b02893eb681b6b18b9363410364509abb2ec.

It did not really work, since the 'implements' function is used in other places
where the prototype checking should not really be done.

As an example, defining a variable that was of type A to be type B.

It would not work if B had prototypes that were in A.

2014-10-06 16:45:16 by Per Hedbor <ph@opera.com>

Do not consider a function to be implemented if it's just a prototype.

This changes typechecking in an incompatible manner.

Currently the SSL code does not compile.

2014-10-05

2014-10-05 20:45:32 by Martin Nilsson <nilsson@opera.com>

Remove remaining explicit 7.6 compat.

2014-10-03

2014-10-03 16:16:13 by Per Hedbor <ph@opera.com>

Removed security system (on this branch)

2014-10-01

2014-10-01 16:29:23 by Martin Nilsson <nilsson@opera.com>

Fix warnings

2014-09-30

2014-09-30 15:26:44 by Per Hedbor <ph@opera.com>

Support this::x for variables in this object.

This is equivalent to this_program::x, but shorter to write. And,
incidentally, more logical and more like other languages.

2014-09-26

2014-09-26 19:43:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved diagnostics.

The fatal "Internal error: Not allowed to add more identifiers during
second compiler pass" now informs about what the identifier was.

2014-09-09

2014-09-09 19:11:04 by Stephen R. van den Berg <srb@cuci.nl>

Silence warnings.

2014-09-05

2014-09-05 10:16:04 by Arne Goedeke <el@laramies.com>

strings: make simple constants static

2014-09-05 10:15:59 by Arne Goedeke <el@laramies.com>

strings: create static strings in more places

2014-09-04

2014-09-04 15:57:43 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/8.0' into string_alloc

Conflicts:
src/stralloc.c

2014-09-03

2014-09-03 22:42:10 by Martin Nilsson <nilsson@opera.com>

Fixed a few warnings.

2014-09-03 21:11:21 by Martin Nilsson <nilsson@opera.com>

strchr is C89 and 4.3BSD

2014-09-03 18:14:04 by Martin Nilsson <nilsson@opera.com>

memcpy is C89 and 4.3BSD

2014-09-03 17:53:37 by Martin Nilsson <nilsson@opera.com>

memset is C89 and 4.3BSD

2014-08-26

2014-08-26 08:48:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added some missing END_CYCLIC().

All execution branches from a BEGIN_CYCLIC() must either
END_CYCLIC() or throw an error before DECLARE_CYCLIC()
falls out of scope.

Potential fix for [LysLysKOM 20940558] (Pike developer list).

2014-08-24

2014-08-24 12:37:20 by Arne Goedeke <el@laramies.com>

Strings: generate more static strings

quick_add_function and make_shared_string will now create
static strings when the argument is a compile time constant

2014-08-24 00:34:59 by Martin Nilsson <nilsson@opera.com>

Pike 7.2 was released 2002. Stop supporting compat for it.

2014-08-22

2014-08-22 18:02:24 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/8.0' into string_alloc

2014-08-22 14:47:02 by Martin Nilsson <nilsson@opera.com>

Improved type checking.

2014-08-21

2014-08-21 18:11:55 by Martin Nilsson <nilsson@opera.com>

Added void to zero argument functions.

2014-08-20

2014-08-20 15:30:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added low_is_variant_dispatcher().

This function is useful when you have an identifier that might be a
variant dispatcher, but you don't know of a corresponding reference.

2014-08-14

2014-08-14 13:46:10 by Per Hedbor <ph@opera.com>

Removed F_IDENTIFIER: It was never generated.

This lessens the confusion and code-duplication somewhat.

2014-08-11

2014-08-11 23:57:00 by Per Hedbor <ph@opera.com>

Added a note about the lfun list in the autodoc parser

2014-08-07

2014-08-07 16:24:31 by Per Hedbor <ph@opera.com>

Only set IDENTIFIER_NO_THIS_REF for object and function variables

2014-06-23

2014-06-23 14:28:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved cycle detection in implements() and is_compatible().

Under some circumstances the new cache entries could be overwritten
before the functions had completed, leading to infinite recursion.

Fixes [InfoKOM 775534].

2014-06-18

2014-06-18 13:31:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Added visit_{enter,leave}() API.

Make it easier to keep track of state in the visit_*() API
by tracking when we start and stop visiting things.

2014-06-17

2014-06-17 15:08:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Propagate the extra parameter everywhere.

All the visit_*() functions and macros should now propagate the
argument extra.

2014-06-17 14:14:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC: Clean up some of the visit_* API.

All the visit_*() functions now have all arguments.

2014-06-16

2014-06-16 17:45:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added PROGRAM_CLEAR_STORAGE.

Adds a flag indicating that the storage held by objects of the class
should be cleared prior to being freed. This is mainly to avoid having
secrets around longer than necessary.

FIXME: Consider adding a corresponding flag for objects to mark eg
some bignums for clearing.

2014-06-02

2014-06-02 19:02:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added convenience function get_inherited_storage().

This function returns the storage in the current object belonging
to a specific inherit.

2014-05-26

2014-05-26 15:14:49 by Per Hedbor <ph@opera.com>

Changed return type of get_{inherit_,}storae to void*

This makes it possible to remove quite a lot of casts.

2014-05-22

2014-05-22 16:48:08 by Per Hedbor <ph@opera.com>

Moved implements_cache and friend to power of two.

Also shrunk it by a factor of four, we really should have dynamic
sizes here.

2014-05-12

2014-05-12 16:42:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed thread context conflict.

co_wait_interpreter() doesn't swap out and in the active thread...

Fixes [LysLysKOM 20811527] (and probably [LysLysKOM 20811537] as well).

2014-05-03

2014-05-03 09:41:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved type checking for program references.

Inherits and type declarations now complain about use of
deprecated symbols.

2014-04-28

2014-04-28 14:39:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Avoid threads_disable().

The Pike compiler now uses a dedicated reentrant lock instead
of the brute-force approach of using threads_disable().

This should improve concurrency with other threads.

2014-04-27

2014-04-27 20:50:24 by Martin Nilsson <nilsson@opera.com>

realloc takes void* and doesn't need any cast.

2014-04-26

2014-04-26 12:06:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved robustness of parent_storage().

Under some circumstances parent_storage() could return
a storage pointer to a class that had inherited the
parent program. Fix this by making sure that we get the
storage for the program that we expect to find as parent.

2014-04-20

2014-04-20 15:15:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: __INIT() has side effects...

Make sure that __INIT gets marked as having side effects,
or calls to it may get optimized away...

Also renames an internal variable.

2014-04-20 10:02:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support __INIT with C programs.

When a C program inherits Pike code, it may need to have an __INIT.
This would previously cause fatal errors as end_program() transited
to compiler pass #2 before the __INIT symbol had been added.

end_first_pass() now transits from pass #1 to pass #2 if finish
has been set, and ensures that __INIT (if needed) exists.

2014-04-16

2014-04-16 19:15:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed variant zapping of reference #0.

The variant dispatcher collector was missing an offset, and always
zapped the modifier bits for identifier reference #0. This has the
effect that identifier reference #0 got the modifier bits intended
for the last variant dispatcher in the class.

2014-04-08

2014-04-08 21:16:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Reinstate "Runtime: Improve diagnostics from the variant dispatcher."

Process.popen(string) should now work with it enabled.

This reverts commit 50348d848ec84753a198290cf5be9425a5b69f8e, and
reinstates commit a0b635a537e32c03c6e95afd7e42dd8021efc406 + patch.

2014-04-08 17:49:36 by Per Hedbor <ph@opera.com>

Revert "Runtime: Improve diagnostics from the variant dispatcher."

This reverts commit a0b635a537e32c03c6e95afd7e42dd8021efc406.

Now Process.popen(string) works again.

2014-04-07

2014-04-07 18:52:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improve diagnostics from the variant dispatcher.

The variant dispatcher now informs about all potential alternatives
when there's an argument mismatch.

2014-03-12

2014-03-12 17:22:25 by Martin Nilsson <nilsson@opera.com>

Hide stub function f_compilation_env_filter_exception.

2014-03-12 17:18:40 by Martin Nilsson <nilsson@opera.com>

Inline find_object_type() to fix const warning.

2014-03-01

2014-03-01 12:28:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Support modifier-style attributes in more places.

The syntaxes

__attribute__("foo", mixed) x;

and

__attribute__("foo") mixed x;

are now equivalent.

2014-02-27

2014-02-27 19:12:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: program_from_type() now uses find_object_type().

This fixes a bug where program_from_type could return eg the program
for a function object argument and similar. It now only recurses
meta types and not value types.

2014-02-26

2014-02-26 22:59:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added support for casting types to program.

Casting an object type value to program will now result in the
corresponding program. eg:

program p = (program)_typeof(o);

is approximately the same as

program p = object_program(o);

2014-02-18

2014-02-18 13:37:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved variant dispatcher diagnostics.

The variant dispatcher now attempts to generate a more
informational error than "Invalid arguments to x()!"
when the actual arguments don't match any of the variants.

2014-02-05

2014-02-05 21:03:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fix scope name for inherit ::this_program.

The scope name for inherits using ::this_program used to
be "this_program", which caused the "this_program::"-scope
to refer to the inherit rather than to the current class.

The scope now instead gets its name from the name of the current class.

Also fixes Crypto.CTR.State, which triggered the problem.

2014-01-16

2014-01-16 20:28:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Using FIND_LFUN() with non-LFUNS is an error.

Make sure to fatal if FIND_LFUN() is used with a fake LFUN.

2014-01-15

2014-01-15 19:54:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Using FIND_LFUN() with non-LFUNS is an error.

Make sure to fatal if FIND_LFUN() is used with a fake LFUN.

2014-01-15 10:47:21 by Arne Goedeke <el@laramies.com>

program: check lfun number before accesing array

this led to out of bounds reads when accessing lfuns like _random

2014-01-12

2014-01-12 02:07:06 by Tobias S. Josefowitz <tobij@tobij.de>

mostly harmless overflows, fixed

2014-01-12 02:04:38 by Tobias S. Josefowitz <tobij@tobij.de>

optimization: use new unaligned helpers

2014-01-12 02:00:55 by Arne Goedeke <el@laramies.com>

program: check lfun number before accesing array

this led to out of bounds reads when accessing lfuns like _random

2014-01-05

2014-01-05 15:14:13 by Marcus Comstedt <marcus@mc.pp.se>

Merge branch '8.0' into gobject-introspection

2013-12-12

2013-12-12 16:49:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Migrate OPT_* flags to the variant dispatcher.

Variant dispatchers need to have the same set of OPT_* flags
as the functions they dispatch to, to avoid over optimization.

Fixes [Pike Mailinglist 13786]/[LysLysKOM 20594561].

2013-11-20

2013-11-20 21:35:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Document some previously undocumented symbols.

Most builtin stuff should now be documented.

2013-11-18

2013-11-18 20:11:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Documentation: Moved some lfun documentation around.

2013-11-18 20:08:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug.size_object: Added some doc for lfun::_size_object().

All lfuns should now be documented.

2013-11-18 20:05:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

random: lfun::_random() now actually is a (fake) lfun.

lfun::_random() now behaves like a proper lfun.

Moved some documentation around accordingly.

2013-11-16

2013-11-16 11:53:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

AutoDoc: Improved documentation of some LFUNs.

2013-11-10

2013-11-10 19:00:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Git rid of some symbol mangling.

Fixes lookup of deep inherits.

2013-11-08

2013-11-08 17:37:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

decode_value: id_to_program() now knows about Nettle.

2013-11-08 14:57:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Language: Support referring directly to inherited scopes.

find_inherit() now falls back to the most recent scope if
it is not present among the direct scopes. This is useful
when having deeply nested inherits, and allows for eg:

container::m_obj::base_obj::m_name::create();

to possibly be replaced with just

m_name::create();

2013-11-03

2013-11-03 18:07:23 by Arne Goedeke <el@laramies.com>

fixed count_memory_in_programs

2013-11-03 18:00:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed inherits of deep mixins.

Fixes the long standing [bug 6063 (#6063)].

2013-11-03 16:59:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Debug: Fixed bug in dump_program_tables().

The filename for inherited references was looked up in the wrong
program.

2013-10-31

2013-10-31 16:01:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Rename the arguments to really_low_reference_inherited_identifier().

The arguments were confusing in that 'e' was the inherit number and
'i' was the reference number. They are now named 'i' for the inherit
number, and 'f' for the reference number.

2013-10-28

2013-10-28 20:02:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make more stuff available to cmods.

{really_,}low_reference_inherited_identifier() are needed
to be able to access overloaded identifiers from C-modules.

2013-10-19

2013-10-19 11:30:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Added get_inherit_storage().

Adds easy access to the storage belonging to a specific inherit
in an object. This function should be used in preference to
get_storage() when the inherit graph is known, to improve
support for multiple inherit of programs implemented in C.

2013-10-14

2013-10-14 21:51:13 by Arne Goedeke <el@laramies.com>

Runtime: Fixed typo in FIND_PROGRAM_LINE().

Fixes a segfault in call_backtraces()

2013-10-09

2013-10-09 15:56:24 by Arne Goedeke <el@laramies.com>

compiler: use new block allocator for node_s

2013-10-07

2013-10-07 16:48:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed bug in ext_store_program_line().

The filename was leaked, could be lost and triggered the
"Invalid file entry in linenumber info." fatal when used
in a pike compiled --with-debug.

2013-10-05

2013-10-05 13:05:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Modules: Export some more functions to the module API.

These functions are needed to find inherited symbols.

2013-10-05 11:56:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Fixed typo in FIND_PROGRAM_LINE().

Fixes SIGSEGV when rendering some backtraces in PIKE_DEBUG mode.

2013-10-05 11:55:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Objects: Exit event handlers may need the parent.

Make sure that parent_storage() also works from exit event
handlers. Fixes fatal "Shouldn't get an exception in destruct()."

Also propagates the PROGRAM_HAS_C_METHODS flag on inherit.

2013-09-22

2013-09-22 11:51:20 by Arne Goedeke <el@laramies.com>

Get rid of some harmless valgrind warnings

2013-09-18

2013-09-18 10:29:23 by Per Hedbor <ph@opera.com>

Added support for an _object_size method in objects.

If defined the return value from that function will be added to the
size calculated by _object_size.

This is mainly useful to get more correct debug information about
memory usage, as an example when using Debug.pp_object_usage.

Callbacks have currently only been added to Image.Image and
System.Memory.

Currently the normal memory_usge() function does not include these
sizes, it should probably do so, however.

2013-09-12

2013-09-12 09:47:15 by Arne Goedeke <el@laramies.com>

initialize pike_frame->num_args even in special cases

2013-09-08

2013-09-08 23:08:05 by Martin Nilsson <nilsson@opera.com>

Save one realloc for wide string file names and moved trivial code into make_plain_file.

2013-09-08 20:45:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Changed line number file name representation.

The program line number table now contains indices into
the program string table to keep track of file names,
instead of having a binary dump of the file name directly
in the line number table. This makes for a somewhat cleaner
line number code.

Fixes old FIXME.

2013-08-14

2013-08-14 09:23:42 by Marcus Comstedt <marcus@mc.pp.se>

Runtime: Fix references to threads_disabled if no threads

2013-08-01

2013-08-01 17:02:42 by Arne Goedeke <el@laramies.com>

uninitialized memory access

2013-08-01 17:02:42 by Arne Goedeke <el@laramies.com>

initialize pike_frame->num_args even in special cases

2013-07-17

2013-07-17 17:50:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed __INIT() prototype detection.

The __INIT() prototype detection in the decode_value() case
was off by one in the previous commit. With this fix all of
the known issues introduced by the __INIT() changes seem to
be fixed.

2013-07-17 17:35:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: More __INIT() related fixes.

Avoid calling __INIT() when it is just a prototype.

2013-07-09

2013-07-09 10:13:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Inhibit warnings for creating deprecated lfuns.

Fixes [LysLysKOM 20354456].

2013-06-21

2013-06-21 09:18:55 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/7.9' into pdf

2013-06-17

2013-06-17 21:40:00 by Martin Nilsson <nilsson@opera.com>

Removed auto bignum checks.

2013-06-17 11:24:19 by Arne Goedeke <el@laramies.com>

fixed pike_type leak

2013-06-16

2013-06-16 10:53:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

encode_value: Support variant functions.

Note: No changes were needed to decode_value().

2013-06-15

2013-06-15 12:51:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

decode_value: Fix handling of inherits.

Use program.c:lower_inherit() in decode_value(). The new
parent flags handling in low_inherit() isn't safe to use
from decode_value(), since the program_state stack isn't
necessarily the same as when the encoded program was
initially compiled.

Fixes various dumping errors.

2013-06-12

2013-06-12 20:04:24 by Arne Goedeke <el@laramies.com>

Added new block allocator. It dramatically speeds up free, when
allocating many blocks and deallocation happens non linearly.

2013-06-12 19:01:37 by Arne Goedeke <el@laramies.com>

new block alloc

2013-06-12 18:34:31 by Arne Goedeke <el@laramies.com>

new block alloc

2013-06-12 18:21:52 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/7.9' into ba

Conflicts:
src/interpret.c
src/interpret.h
src/pike_embed.c

2013-06-12 15:46:22 by Per Hedbor <ph@opera.com>

[performance] Use the hashtable more when indexing objects

Now it is used even if there is only one identifier in the object.
That helps more than it should, really

2013-06-11

2013-06-11 23:50:34 by Arne Goedeke <el@laramies.com>

Merge remote-tracking branch 'origin/7.9' into ba

2013-06-11 21:51:01 by Arne Goedeke <el@laramies.com>

ammend this

2013-06-08

2013-06-08 20:27:56 by Martin Nilsson <nilsson@opera.com>

Removed the experimental facets implementation.

2013-06-08 11:16:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed overriding of variant functions.

Overriding of variant functions now seems to work as intended.

Also adds testsuite test that checks some of the cases.

2013-06-02

2013-06-02 22:56:03 by Martin Nilsson <nilsson@opera.com>

Small compile fix.

2013-06-02 20:18:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved handling of variant functions.

The idea here is that a non-variant function restarts the function
definition for the symbol (ie overrides all earlier variants), and
a variant function adds another case to the existing definition for
the symbol (if any).

Also added detection of variant getters and setters.

2013-06-01

2013-06-01 10:19:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved overriding of variant functions.

Overriding a variant function with a non variant
now causes later variant function overrides to
not reinstate the function.

2013-06-01 09:17:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Minor code cleanup.

Store Pike_compiler->new_program in a local variable in
define_function().

2013-05-31

2013-05-31 17:33:01 by Per Hedbor <ph@opera.com>

Added get_lax_type_of_svalue. Used for constant:s.

int(0..0) -> zero
int(X..Y) -> int
string(X..Y) -> string

This was done to remove some code duplication, and as an added feature
constant x = "foo"; now allows you to assign "f\xfff" when inheriting.

2013-05-29

2013-05-29 22:01:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Improved variant dispatcher.

Inherited dispatchers and the ::-operator now work in some cases.

2013-05-28

2013-05-28 20:37:29 by Per Hedbor <ph@opera.com>

First stage of the 'auto' type.

Works, but for now only for variable declarations, not return types
(entirely, most of the plumbing is done) or for variables declared in
foreach and sscanf.

Since the loop variables in foreach is really the most important
location, this is of somewhat limited use so far.

Commited for safekeeping.

2013-05-26

2013-05-26 14:43:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added dispatcher for variant functions. (EXPERIMENTAL!)

This is the first attempt at a generic dispatcher for
variant functions. It seems to work for the trivial cases:

| Pike v7.9 release 5 running Hilfe v3.5 (Incremental Pike Frontend)
| > class foo {
| >> variant int bar(int a) { return a*2; }
| >> variant string bar(string s) { return "FOO" + s + "FOO"; }
| >> variant string bar() { return "FOO"; }
| >> }
| > typeof(foo()->bar);
| (1) Result: function( : string) | function(int : int) | function(string : string)
| > foo()->bar(17);
| (2) Result: 34
| > foo()->bar("BAR");
| (3) Result: "FOOBARFOO"
| > foo()->bar();
| (4) Result: "FOO"
| > foo()->bar(1.2);
| Compiler Error: 1: Bad argument 1 to bar.
| Compiler Error: 1: Expected: string | int.
| Compiler Error: 1: Got : float.
| > foo()->bar((mixed)1.2);
| Invalid arguments to bar()!
| HilfeInput:1: HilfeInput()->foo()->bar(1.2)
| HilfeInput:1: HilfeInput()->___HilfeWrapper()

Note that it is probably broken for more complicated cases.
Such cases include when the variants have differing modifiers
(including when one of the variants lack the variant modifier).

2013-05-26 14:43:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Removed some obsolete variant code.

Changed approach to implementing variant functions.
This removes the remnants of the old approach.

2013-05-26 14:43:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Hide variant functions from the normal lookup functions.

The idea here is to hide the variant functions from normal lookup,
and then to add a dispatcher function, which calls the appropriate
variant function later.

2013-05-26 14:43:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added new lookup functions for variants.

Added new lookup function really_low_find_variant_identifier()
that looks up based on both name and type.

2013-05-17

2013-05-17 13:43:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed updating of PROGRAM_{NEEDS,USES}_PARENT.

low_inherit() may get called with a parent offset of 24
(OBJECT_PARENT + 42) or 25 (INHERIT_PARENT + 42) when
called from decode_value().

Make sure we don't start zapping flags in random programs
on the compiler stack when this happens.

Fixes [LysLysKOM 20258894] and [LysLysKOM 20273476]/[Pike 13584].

2013-04-28

2013-04-28 20:04:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed a few bugs in reference_inherited_identifier().

2013-04-28 18:03:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Repurposed reference_inherited_identifier().

The previously unused function reference_inherited_identifier() is
now analogous to the low_* and really_low_* variants, and exported.

2013-04-27

2013-04-27 17:16:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed low_inherit() updating parent flags.

The PROGRAM_{NEEDS,USES}_PARENT flags could be lost
in pass 2 of the compiler.

Also fixes a related issue when low_inherit() is
called by decode_value().

2013-04-27 13:59:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added support for ::this_program.

This syntax refers to the previous definition of the current class
in its parent, and is typically used with inherit like:

inherit Foo;

// Override the Bar inherited from Foo.
class Bar {
// Bar is based on the implementation from Foo.
inherit ::this_program;

// ...
}

Note that this change is slightly incompatible with Pike 7.8.

2013-04-21

2013-04-21 10:12:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added resolve_program().

Added helper function resolve_program() to simplify resolving of
program symbols during compile-time for C-modules.

This function is used from precompiled code when inheriting
strings (API level 5).

2013-04-20

2013-04-20 21:04:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: low_inherit() now updates parent flags.

Moved update of parent flags (PROGRAM_{NEEDS,USES}_PARENT) from
compiler_do_inherit() to low_inherit(), to help out C-modules
that inherit programs needing parent pointers, since they
typically use low_inherit() directly.

2013-04-08

2013-04-08 10:46:49 by Felipe Monteiro de Carvalho <fcarvalho@opera.com>

Fixes compilation on Kubuntu 12.10.

According to the bison manual, yydebug is only available if YYDEBUG is
defined and equals 1. Also the yyparse prototype was wrong.

2013-02-25

2013-02-25 13:11:43 by Arne Goedeke <el@laramies.com>

PMOD_EXPORT some more symbols, which are being used by dynamic modules
in case of PIKE_DEBUG

2013-02-19

2013-02-19 17:39:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Reduced verbosity for softcast errors.

2013-02-19 15:25:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved diagnostics in -rt mode.

Also adds the string_builder_explain_*() functions, that
mirror the corresponding yyexplain_*() functions.

2013-02-03

2013-02-03 13:08:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Make sure private implies both local and protected.

The typechecker and other stuff got confused when symbols
were private but not protected.

Fixes [LysLysKOM 20106812]:
| 20106812 idag 12:54 /12 rader/ Mattias Wingstedt (Firefruit)
| Mottagare: Pike (-) erfarenhetsutbyte <12765>
| Ärende: Felarv
| ------------------------------------------------------------
| Jag får "type mismatch in argument" där argumentet som förväntas är en
| Error.Generic. Den klagar på "Missing identifier error_name".
|
| Det jag skickar in är ett objekt från en klass som ärver
| Error.Generic. Fast den verkar ha rätt, när jag instansierar en
| Error.Generic får den en error_name, som saknas när jag instansierar
| min klass som ärver Error.Generic. I övrigt verkar de båda objekten
| innehålla samma medlemsvariabler.
|
| Pike version 7.8 release 700.
|
| Vad kan det vara för fin finess mitt program har råkat ut för?
| (20106812) /Mattias Wingstedt (Firefruit)/----------

2012-12-30

2012-12-30 15:37:27 by 0

Wrap unused parameters in UNUSED(), and debug-only parameters in DEBUGUSED(), to cut
down on compiler warnings. The macro also renames parameters to catch accidental use.
(There are more places to clean up but I don't want to modify code that isn't compiling
on my machine.)

2012-10-28

2012-10-28 15:40:20 by Marcus Comstedt <marcus@mc.pp.se>

Merge branch '7.9' into gobject-introspection

2012-10-27

2012-10-27 15:36:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Use cast to program instead of object_program() for inherits.

This is needed to be able to simulate inheritable programs with objects.

Fixes [bug 6573 (#6573)].

2012-10-27 15:29:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Added low_program_from_svalue().

This allows for passing the parent object and identifier when needed.

This is needed for [bug 6573 (#6573)].

2012-10-09

2012-10-09 12:36:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Don't complain about unused private LFUNs. Fixes [bug 6553 (#6553)].

2012-10-06

2012-10-06 11:38:03 by Marcus Comstedt <marcus@mc.pp.se>

Merge branch '7.9' into gobject-introspection

2012-07-18

2012-07-18 12:56:57 by Arne Goedeke <el@laramies.com>

Merge branch '7.9' into block_alloc

Conflicts:
src/modules/system/configure.in
src/post_modules/CritBit/tree_low.c
src/post_modules/CritBit/tree_low.h
src/post_modules/CritBit/tree_source.H

2012-07-15

2012-07-15 13:15:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Improved robustness of low_get_line().

The linenumber and offset deltas could get swapped if the end
of the table was reached, more entries added and then resumed.

This could in turn trigger the "get_small_number used on filename entry"
fatal error.

2012-06-15

2012-06-15 09:54:06 by Arne Goedeke <el@laramies.com>

Merge remote branch 'origin/7.9' into rblock_alloc

Conflicts:
src/post_modules/CritBit/floattree.cmod
src/post_modules/CritBit/inttree.cmod
src/post_modules/CritBit/stringtree.cmod

2012-06-12

2012-06-12 15:04:01 by Per Hedbor <ph@opera.com>

Use power-of-two hashtable for string->offset mapping for objects.

This could almost certainly be optimized further, but for now gives about
0.2% better performance in the benchmarks. Probably less in real code,
though.

2012-06-08

2012-06-08 11:01:57 by Stephen R. van den Berg <srb@cuci.nl>

quick_ made quick, and compacted some code.

2012-04-29

2012-04-29 20:53:39 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: First try at resolving inherited symbols via inherited lfun::`->().

2012-04-01

2012-04-01 16:15:04 by Arne Goedeke <el@laramies.com>

Merge remote branch 'origin/7.9' into breaking_into_pieces

2012-02-01

2012-02-01 14:30:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Runtime: Made parent_storage() more robust.

Now supports being called from event handlers again.

2012-01-16

2012-01-16 12:08:29 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Workaround for call_c_initializers() creating broken frames. Fixes [bug 6156 (#6156)].

Proper fix in Pike 7.9.

2012-01-12

2012-01-12 17:03:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Forward compatibility with 64-bit line numbers from Pike 7.9.

2012-01-12 14:49:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: The compiler and runtime are now INT_TYPE-clean wrt line numbers.

2012-01-07

2012-01-07 02:41:04 by 0

Fix profiling of recursive functions by tracking recursion level. Fixes [bug 5131 (#5131)].

2012-01-07 02:36:30 by 0

Fix profiling of recursive functions by tracking recursion level. Fixes [bug 5131 (#5131)].

2011-12-09

2011-12-09 12:28:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

CompilerEnvironment: Separated report() to a separate Reporter class.

2011-12-05

2011-12-05 19:40:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

CompilerHandler: Support calling of report() in the master and handler objects.

2011-11-20

2011-11-20 17:33:32 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Moved the resolve_cache to the compiler context proper.

2011-11-16

2011-11-16 22:52:20 by Tobias S. Josefowitz <tobij@tobij.de>

Change in internal timehandling; ability to invalidate current_time.

2011-11-05

2011-11-05 15:02:44 by Martin Nilsson <nilsson@opera.com>

Removed $Id$.

2011-11-02

2011-11-02 21:38:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Getters/Setters: Avoid relying on stale pointers.

The identifier tables may be reallocated between the definition
of the getter/setter, and it being set later in define_function()...
Fixes issue reported by 郭雪松 <zenothing@hotmail.com>, thanks.

2011-10-29

2011-10-29 15:33:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Getters/Setters: Avoid relying on stale pointers.

The identifier tables may be reallocated between the definition
of the getter/setter, and it being set later in define_function()...
Fixes issue reported by 郭雪松 <zenothing@hotmail.com>, thanks.

2011-10-28

2011-10-28 13:04:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Atomic megapatch: Use svalue accessor macros everywhere.

2011-09-15

2011-09-15 11:21:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Revert "Compiler: Fixed resolving of external symbols in deep inherits. Fixes [bug 6063 (#6063)].". Fixes [bug 6065 (#6065)].

This reverts commit 015e37ddcac414407f936bba22eab6995f9d2ef7.

The above commit caused [bug 6065 (#6065)]. Another approach is needed.

2011-09-15 11:13:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Revert "Compiler: Fixed resolving of external symbols in deep inherits. Fixes [bug 6063 (#6063)].". Fixes [bug 6065 (#6065)].

This reverts commit 6c98ca273df23f43842684297485e213f60ef66c.

The above commit caused [bug 6065 (#6065)]. Another approach is needed.

2011-09-05

2011-09-05 17:36:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed resolving of external symbols in deep inherits. Fixes [bug 6063 (#6063)].

Thanks to 郭雪松 <zenothing@hotmail.com> for the bugreport.

2011-09-05 17:30:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed resolving of external symbols in deep inherits. Fixes [bug 6063 (#6063)].

Thanks to 郭雪松 <zenothing@hotmail.com> for the bugreport.

2011-07-22

2011-07-22 12:12:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Atomic: Store the type in the ref_type field for all reference types.

2011-04-25

2011-04-25 16:12:49 by Martin Stjernholm <mast@lysator.liu.se>

No more foreign_idents.

2011-04-25 16:12:40 by Martin Stjernholm <mast@lysator.liu.se>

No more foreign_idents.

2011-04-25 16:11:00 by Martin Stjernholm <mast@lysator.liu.se>

No more foreign_idents.

2011-02-04

2011-02-04 22:57:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Serializer: Rotated the argument order for the {,de}serializer() callback function to be more convenient.

2011-01-21

2011-01-21 16:22:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Serializer: First implementation of the Serializer interface.

2011-01-15

2011-01-15 15:21:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added predef::types() in analogue with indices() and values().

Also adds lfun::_types() and ::_types().

2010-11-26

2010-11-26 12:16:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

First step towards supporting deferred evaluation of constants.

2010-11-26 11:08:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Oops, missed initializing ref.run_time_type in low_inherit().

2010-11-25

2010-11-25 20:36:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added cache for vtable lookups in the get case.

2010-11-25 20:33:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Preparations for changing the identifier information for constants.

2010-11-20

2010-11-20 12:50:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

First go at supporting static storage.

2010-11-11

2010-11-11 14:34:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added low_program_index_no_free().

2010-07-01

2010-07-01 11:25:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Allocate object storage with xcalloc() to reduce the amount of work for call_c_initializers().

Rev: src/encode.c:1.294
Rev: src/object.c:1.309
Rev: src/program.c:1.778

2010-05-19

2010-05-19 09:32:22 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Some autodoc updates regarding hash functions.

Rev: src/builtin_functions.c:1.700
Rev: src/program.c:1.777

2010-04-10

2010-04-10 14:07:30 by Martin Stjernholm <mast@lysator.liu.se>

Added a memory checker hint.

Rev: src/program.c:1.776

2010-02-18

2010-02-18 08:52:55 by Stephen R. van den Berg <srb@cuci.nl>

A const is a const is a const.

Rev: src/program.c:1.775
Rev: src/program.h:1.268
Rev: src/svalue.c:1.259
Rev: src/svalue.h:1.172

2010-02-08

2010-02-08 17:40:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed issue where PikeCompiler()->apply_attribute_constant() could throw errors for unevaluated constant expressions.

Rev: src/program.c:1.774

2009-11-28

2009-11-28 13:36:21 by Martin Stjernholm <mast@lysator.liu.se>

More rtldebug to get better info when gc_mark problems happen.

Rev: Makefile:1.168
Rev: src/array.c:1.226
Rev: src/gc.c:1.338
Rev: src/gc.h:1.138
Rev: src/mapping.c:1.214
Rev: src/multiset.c:1.119
Rev: src/object.c:1.304
Rev: src/pike_types.c:1.361
Rev: src/program.c:1.773
Rev: src/svalue.c:1.255

2009-11-20

2009-11-20 10:58:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Avoid generating unnecessary parent pointers for inherits and types.
Fixes [bug 2672 (#2672)].

Rev: src/docode.c:1.206
Rev: src/las.c:1.442
Rev: src/program.c:1.772

2009-09-12

2009-09-12 13:31:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Cleaned up facet handling somewhat.
Added a few FIXMEs.

Rev: src/language.yacc:1.452
Rev: src/program.c:1.771
Rev: src/program.h:1.267

2009-09-09

2009-09-09 15:58:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

More documentation fixes.

Rev: src/program.c:1.770

2009-09-08

2009-09-08 16:49:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Improved some CompilerEnvironment-related AutoDoc mk II markup.
Added some FIXME markers regarding f_compilation_env_filter_exception().

Rev: src/program.c:1.769

2009-08-18

2009-08-18 19:55:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed hiding of functions with prototypes.
Fixed issue with PROGRAM_BUILD_DEBUG not working.

Rev: src/program.c:1.768

2009-08-18 15:56:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

override_identifier() now knows more about handling of external symbols.
The above makes encode_value() more happy about encoding the master program.
Fixed range bug in low_add_many_to_program().

Rev: src/program.c:1.767

2009-08-17

2009-08-17 11:41:33 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added low_add_many_to_program().

Rev: src/program.c:1.766
Rev: src/program.h:1.266

2009-06-24

2009-06-24 17:35:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Protential bugfix.

Rev: src/program.c:1.765

2009-06-22

2009-06-22 12:08:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed some warnings.

Rev: src/program.c:1.764
Rev: src/program.h:1.265

2009-06-21

2009-06-21 17:16:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed issue where symbols could be hidden by a later inherit of the same symbol but protected.

Rev: src/program.c:1.763

2009-06-17

2009-06-17 15:39:05 by Henrik Grubbström (Grubba) <grubba@grubba.org>

low_get_function_line() now knows about prototypes.
Fixes [bug 4855 (#4855)] ("Bad offset" when generating backtrace).

Rev: src/program.c:1.762

2009-04-22

2009-04-22 17:17:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Pike 7.6 and earlier compat for store_constant(UNDEFINED).
Note that this behaviour is usually not something you'd want, but apparently there's code out there needing it.

Rev: src/program.c:1.761

2009-03-12

2009-03-12 17:31:36 by Henrik Grubbström (Grubba) <grubba@grubba.org>

PikeCompiler()->apply_attribute_constant() now knows about strict_sprintf_format.

Rev: src/program.c:1.760

2009-03-04

2009-03-04 16:21:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed bug in yyexplain_not_implements() where REPORT_NOTICE was escalated to REPORT_WARNING.

Rev: src/program.c:1.759

2009-03-04 14:17:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed core-dump typo in yyexplain_not_implements().

Rev: src/program.c:1.758

2008-12-15

2008-12-15 21:46:09 by Martin Stjernholm <mast@lysator.liu.se>

Fixed make_plain_file to honor the malloced flag for narrow strings,
and fixed length calculation bug.

Rev: src/program.c:1.757

2008-09-15

2008-09-15 14:46:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

extern declared variables now work again.

Rev: src/program.c:1.756

2008-09-14

2008-09-14 17:01:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

define_variable() now hides the original variable when overloading local or extern variables.

Rev: src/program.c:1.755

2008-09-14 11:16:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed overriding of inherited local identifiers.

Rev: src/program.c:1.754

2008-09-04

2008-09-04 11:36:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added duplicate filtering pass to fixate_program() after fsort_program_identifier_index().
This fixes issues where duplicate identifiers shows up in indices() on objects.
Made program_identifier_index_compare() more stable.
Added output of the identifier name in the identifier index table in dump_program_tables().

Rev: src/program.c:1.753

2008-09-03

2008-09-03 14:46:13 by Martin Stjernholm <mast@lysator.liu.se>

Fixed a debug printout as intended.

Rev: src/program.c:1.752

2008-08-27

2008-08-27 15:45:19 by Jonas Wallden <jonasw@roxen.com>

Fix debug message.

Rev: src/program.c:1.751

2008-08-26

2008-08-26 16:13:05 by Martin Stjernholm <mast@lysator.liu.se>

Another attempt to fix the "external refs after unregister" debug
check.

Rev: src/program.c:1.750

2008-08-18

2008-08-18 15:18:18 by Martin Stjernholm <mast@lysator.liu.se>

Added another convenience function to get program lines easier in gdb.

Rev: src/program.c:1.749

2008-08-17

2008-08-17 16:22:41 by Martin Stjernholm <mast@lysator.liu.se>

Added more compilation dependency registrations. This can potentially make
the compiler bark on more cyclic reference cases, but it's necessary to
ensure indexed programs aren't (completely or partially) empty in pass 2,
which can lead to very strange compilation errors.

Also cleaned up some compiler error messages a little.

Rev: src/las.c:1.434
Rev: src/program.c:1.748

2008-08-17 15:59:07 by Martin Stjernholm <mast@lysator.liu.se>

Restored the free in the old unused compile() function, but noted
another possible ref problem there.

Rev: src/program.c:1.747

2008-08-17 15:50:53 by Martin Stjernholm <mast@lysator.liu.se>

Fixed extra free of programs that could occur if a nested delayed
compilation failed.

Rev: src/program.c:1.746

2008-08-17 11:01:40 by Martin Stjernholm <mast@lysator.liu.se>

More COMPILER_DEBUG improvements.

Rev: src/program.c:1.745

2008-08-15

2008-08-15 17:26:15 by Martin Stjernholm <mast@lysator.liu.se>

Fixed wrong runtime type for a mapped variable. This could cause gc fatals.

Rev: src/program.c:1.744

2008-08-14

2008-08-14 22:12:39 by Martin Stjernholm <mast@lysator.liu.se>

Check that the inherited program is really finished in pass 2. Also
extended those error messages so that mere mortals might understand
what it really is about.

Rev: src/program.c:1.743

2008-08-13

2008-08-13 21:11:58 by Martin Stjernholm <mast@lysator.liu.se>

Fixed cleanup to work with the "external refs after unregister" debug
check.

Rev: src/program.c:1.742

2008-08-13 18:02:03 by Martin Stjernholm <mast@lysator.liu.se>

Probably a better fix for the multiple run_cleanup calls bug.

Rev: src/pike_compiler.h:1.16
Rev: src/program.c:1.741

2008-08-13 14:45:08 by Martin Stjernholm <mast@lysator.liu.se>

Added a disclaimer comment about the last fix.

Rev: src/program.c:1.740

2008-08-13 14:27:36 by Martin Stjernholm <mast@lysator.liu.se>

Fix for multiple run_cleanup calls for failed delay compiled programs.
Also exteded the COMPILER_DEBUG messages somewhat.

Rev: src/pike_compiler.h:1.15
Rev: src/program.c:1.739

2008-08-06

2008-08-06 12:25:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed bug in call_handle_inherit().

Rev: src/program.c:1.738

2008-07-16

2008-07-16 01:19:46 by Martin Stjernholm <mast@lysator.liu.se>

Nicer if low_make_buf_space takes a signed amount to allow shrinking, than
that it's given a very large unsigned number that causes wrap-around.

Rev: src/dynamic_buffer.c:1.27
Rev: src/dynamic_buffer.h:1.22
Rev: src/program.c:1.737

2008-07-16 01:00:19 by Martin Stjernholm <mast@lysator.liu.se>

Fixed some warnings and removed a bunch of unused variables.

Rev: src/program.c:1.736

2008-07-14

2008-07-14 11:49:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Mark private symbols as local.

Rev: src/program.c:1.735

2008-07-13

2008-07-13 19:06:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Named non-local integer constants now get a somewhat less strict type.

Rev: src/program.c:1.734

2008-07-13 16:26:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed another instance of the fatal "Not allowed to add more identifiers during second compiler pass.".

Rev: src/program.c:1.733

2008-07-09

2008-07-09 20:42:25 by Martin Stjernholm <mast@lysator.liu.se>

Some cleanup.

Rev: src/program.c:1.732

2008-07-09 20:32:48 by Martin Stjernholm <mast@lysator.liu.se>

Fixed incorrect old-style use of T_INT without subtype to mark a free
value. This was in newly added code from rev 1.667; please be more
careful.

Rev: src/program.c:1.731

2008-06-29

2008-06-29 21:00:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Reduced amount of info in deprecation warning to report a less confusing message.

Rev: src/program.c:1.730

2008-06-29 12:50:04 by Martin Nilsson <mani@lysator.liu.se>

SEE_STATIC -> SEE_PROTECTED

Rev: src/encode.c:1.283
Rev: src/language.yacc:1.441
Rev: src/object.c:1.300
Rev: src/program.c:1.729

2008-06-29 12:37:11 by Martin Nilsson <mani@lysator.liu.se>

ID_STATIC -> ID_PROTECTED

Rev: src/backend.cmod:1.229
Rev: src/builtin.cmod:1.217
Rev: src/errors.h:1.40
Rev: src/interpret_functions.h:1.208
Rev: src/iterators.cmod:1.70
Rev: src/language.yacc:1.440
Rev: src/object.c:1.299
Rev: src/pike_search.c:1.31
Rev: src/program.c:1.728
Rev: src/signal_handler.c:1.333
Rev: src/threads.c:1.259

2008-06-28

2008-06-28 21:50:11 by Martin Stjernholm <mast@lysator.liu.se>

More static -> protected.

Rev: src/object.c:1.298
Rev: src/program.c:1.727
Rev: src/program.h:1.256

2008-06-28 11:01:54 by Martin Stjernholm <mast@lysator.liu.se>

Fixed wrongthinking in eval_low optimization; we have to flush the
instruction cache on the area each time. (It's still a substantial
improvement though, since only the area with the new code is flushed instead
of the whole program.)

Rev: src/las.c:1.425
Rev: src/program.c:1.726
Rev: src/program.h:1.255

2008-06-28 09:08:08 by Martin Stjernholm <mast@lysator.liu.se>

Removed a forgotten header only used for debug.

Rev: src/program.c:1.725

2008-06-28 07:00:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now has a chance at supporting machine code on systems without execinfo.h.

Rev: src/program.c:1.724

2008-06-28 03:25:51 by Martin Stjernholm <mast@lysator.liu.se>

Don't flush the instruction cache over and over again for the same area in
eval_low when machine code is used. This should speed up constant evaluation
a bit (benchmarks run about 8% faster overall for ia32).

Rev: src/las.c:1.421
Rev: src/program.c:1.723
Rev: src/program.h:1.254

2008-06-27

2008-06-27 11:33:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

m_generation() is no more.

Rev: src/builtin.cmod:1.215
Rev: src/encode.c:1.281
Rev: src/mapping.c:1.207
Rev: src/mapping.h:1.70
Rev: src/program.c:1.722
Rev: src/program.h:1.253

2008-06-24

2008-06-24 18:47:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added fake lfun _m_generation().

Rev: src/program.c:1.721
Rev: src/program.h:1.252

2008-06-23

2008-06-23 16:41:03 by Martin Stjernholm <mast@lysator.liu.se>

mc_count_bytes fix.

Rev: src/modules/Gmp/mpf.cmod:1.38
Rev: src/modules/Gmp/mpq.cmod:1.30
Rev: src/program.c:1.720

2008-06-10

2008-06-10 13:56:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compatibility with Pike 7.6 and earlier for program_magic_identifier().
Referring to 'this' for a surrounding class should now work for compat code again.

Rev: src/program.c:1.719

2008-06-09

2008-06-09 10:57:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Bugfix of get_identifier_line().

Rev: src/program.c:1.718

2008-06-02

2008-06-02 15:43:30 by Martin Stjernholm <mast@lysator.liu.se>

Export low_get_storage.

Rev: src/program.c:1.717
Rev: src/program.h:1.251

2008-06-01

2008-06-01 11:19:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed some Autodoc mk II typos.

Rev: src/builtin_functions.c:1.670
Rev: src/program.c:1.716

2008-05-31

2008-05-31 18:06:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed some typos.

Rev: src/program.c:1.715

2008-05-31 16:21:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added get_identifier_line().

Rev: src/program.c:1.714
Rev: src/program.h:1.250

2008-05-31 12:15:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Some cleanups.
Now calls PikeCompiler()->report() via the yy* functions.

Rev: src/program.c:1.713

2008-05-30

2008-05-30 16:57:03 by Martin Stjernholm <mast@lysator.liu.se>

Modernized an error call.

Rev: src/program.c:1.712

2008-05-30 16:17:07 by Martin Stjernholm <mast@lysator.liu.se>

Fixed some borken, borken, boRKen behavior. Considering how ancient
that compiler_pass == 2 check is (1.87 1998/04/24 00:32:09 hubbe), I
think this is fairly safe.

Rev: src/program.c:1.711

2008-05-30 11:20:44 by Henrik Grubbström (Grubba) <grubba@grubba.org>

It is now possible to return a reference to the current inherit in this object.
The third argument to program_magic_identifier() should now be -1 when no inherit has been specified (0 is now reserved for referring to the current inherit).
This is also reflected in the F_THIS node.
The F_THIS opcode is now used exclusively to refer to specific inherits.
Use the F_THIS_OBJECT opcode to refer to the current object.

Rev: src/docode.c:1.201
Rev: src/interpret_functions.h:1.204
Rev: src/language.yacc:1.426
Rev: src/las.c:1.415
Rev: src/peep.in:1.83
Rev: src/program.c:1.710

2008-05-29

2008-05-29 16:32:55 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Deprecation warnings are now disabled by #pragma no_deprecation_warnings.

Rev: src/program.c:1.709

2008-05-29 12:36:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Implemented support for extern variables (ie prototypes for variables).

Rev: src/object.c:1.295
Rev: src/program.c:1.708

2008-05-27

2008-05-27 19:36:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

DON'T use low_clone() unless you know what you're doing...
All error object should now be cloned with fast_clone_object() or better.
Reinstated the freeing of err->error_message and err->error_backtrace now that the error objects are properly initialized.
Added some more Autodoc mk II about the compiler.

Rev: src/cpp.c:1.170
Rev: src/dynamic_load.c:1.92
Rev: src/error.c:1.162
Rev: src/object.c:1.293
Rev: src/program.c:1.707

2008-05-24

2008-05-24 16:41:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed conversion of errors to warnings in compat mode.

Rev: src/program.c:1.706

2008-05-24 16:21:21 by Henrik Grubbström (Grubba) <grubba@grubba.org>

One more...

Rev: src/program.c:1.705

2008-05-24 16:20:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Bugfix for early exit from va_yyreport() (leaving droppings on stack).

Rev: src/program.c:1.704

2008-05-24 15:42:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Bugfix for infinite resolve loop when loading eg GTK.

Rev: src/program.c:1.703

2008-05-24 15:14:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler messaging mega patch.
va_yyreport() is now the main C-level dispatcher for compiler messages.
It also handles the automatic conversion of type errors to warnings in compat mode.
Consolidated the location for the implementation of most of the yy*-messaging functions to program.c.
Added yytype_report().
Changed APIs for yyexplain_*().
Moved the definitions of REPORT_* from pike_compiler.h to program.h.
va_yyerror() and low_yyerror() are no more.
Most type-system messages should now be marked with the appropriate subsystem.
Reenabled the typechecking for sscanf and sprintf() now that errors are converted into warnings in compat mode.

Rev: src/language.yacc:1.425
Rev: src/las.c:1.413
Rev: src/las.h:1.79
Rev: src/modules/sprintf/sprintf.c:1.153
Rev: src/pike_compiler.h:1.14
Rev: src/pike_types.c:1.337
Rev: src/pike_types.h:1.118
Rev: src/program.c:1.702
Rev: src/program.h:1.248
Rev: src/sscanf.c:1.184

2008-05-22

2008-05-22 20:13:19 by Martin Stjernholm <mast@lysator.liu.se>

Fixed a typo.

Rev: src/program.c:1.701

2008-05-21

2008-05-21 21:55:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added {va_,}yyreport(). yywarning() is now based on va_yyreport().

Rev: src/program.c:1.700
Rev: src/program.h:1.247

2008-05-18

2008-05-18 15:36:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added CompilerEnvironment()->PikeCompiler()->apply_attribute_constant().

Rev: src/pike_compiler.h:1.13
Rev: src/program.c:1.699

2008-05-18 13:42:10 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Allow yyerror() and yywarning() to be called outside the compilation context.

Rev: src/language.yacc:1.424
Rev: src/program.c:1.698

2008-05-16

2008-05-16 18:20:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

{en,de}code_value() now know about location information for identifiers.
Moved the filename storage for identifiers to the string table.
encode_value() now knows about new-style getters and setters.
Unified the encoding of identifiers to reduce the amount of code duplication.
Bumped the version to Pike 7.7.47 since the dump format has changed.

Rev: src/encode.c:1.266
Rev: src/program.c:1.697
Rev: src/program.h:1.246
Rev: src/version.h:1.401

2008-05-16 13:28:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added this_function.
Identifiers now can keep track of where they were defined.

Rev: src/program.c:1.696

2008-05-14

2008-05-14 14:10:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed minor typo.

Rev: src/program.c:1.695

2008-05-14 10:52:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Improved diagnostics from define_variable().

Rev: src/program.c:1.694

2008-05-13

2008-05-13 17:11:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Changed representation of GETTER/SETTER identifiers.
The getter/setter information is now stored directly in struct identifier, rather than embedded in the program code.
This means that getter/setters implemented in C won't need to allocate any space for the program code.
It also does away with one level of indirection, which should improve performance marginally.

Rev: src/docode.c:1.199
Rev: src/object.c:1.292
Rev: src/program.c:1.693
Rev: src/program.h:1.244

2008-05-11

2008-05-11 14:55:54 by Martin Stjernholm <mast@lysator.liu.se>

Fixed missing PMOD_EXPORT on the visit functions.

Rev: src/array.c:1.207
Rev: src/array.h:1.75
Rev: src/constants.c:1.60
Rev: src/constants.h:1.37
Rev: src/mapping.c:1.201
Rev: src/mapping.h:1.68
Rev: src/multiset.c:1.111
Rev: src/multiset.h:1.44
Rev: src/object.c:1.291
Rev: src/object.h:1.96
Rev: src/pike_types.c:1.332
Rev: src/pike_types.h:1.115
Rev: src/program.c:1.692
Rev: src/program.h:1.243
Rev: src/stralloc.c:1.219
Rev: src/stralloc.h:1.104

2008-05-11 02:36:00 by Martin Stjernholm <mast@lysator.liu.se>

Implemented visit functions for the visit_thing_fn interface. The gc
check/mark functions are restored to how they were before the
GC_PASS_COUNT_MEMORY stuff.

Rev: src/array.c:1.206
Rev: src/array.h:1.74
Rev: src/constants.c:1.59
Rev: src/constants.h:1.36
Rev: src/mapping.c:1.200
Rev: src/mapping.h:1.67
Rev: src/multiset.c:1.110
Rev: src/multiset.h:1.43
Rev: src/object.c:1.290
Rev: src/object.h:1.95
Rev: src/pike_types.c:1.331
Rev: src/pike_types.h:1.114
Rev: src/program.c:1.691
Rev: src/program.h:1.242
Rev: src/stralloc.c:1.218
Rev: src/stralloc.h:1.103

2008-05-10

2008-05-10 20:43:25 by Martin Stjernholm <mast@lysator.liu.se>

Disabled a debug check that trigged wrongly.

Rev: src/program.c:1.690

2008-05-08

2008-05-08 10:50:19 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Somewhat improved diagnostics generated by yyexplain_not_compatible().
Fixes [bug 4534 (#4534)].

Rev: src/program.c:1.689

2008-05-04

2008-05-04 16:49:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Only warn once when calling deprecated symbols, not once for every argument.
new_get_return_type() now calls CompilerEnvironment()->PikeCompiler()->apply_type_attribute() with two arguments.

Rev: src/pike_types.c:1.326
Rev: src/program.c:1.688

2008-05-04 14:04:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

More warnings for __deprecated__ symbols.
Added CompilerEnvironment()->PikeCompiler()->apply_type_attribute().
Added some FIXMEs.

Rev: src/pike_compiler.h:1.12
Rev: src/pike_types.c:1.325
Rev: src/program.c:1.687

2008-05-03

2008-05-03 20:06:07 by Henrik Grubbström (Grubba) <grubba@grubba.org>

First go at warning for deprecated symbols.
Added CompilerEnvironment()->PikeCompiler()->{push,pop}_type_attribute().
pike_types_le() now calls the above when encountering asymmetric attribute types.
Added some tests for the above.

Rev: src/pike_compiler.h:1.11
Rev: src/pike_types.c:1.324
Rev: src/program.c:1.686
Rev: src/testsuite.in:1.804

2008-05-03 15:54:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Minor documentation cleanup.

Rev: src/program.c:1.685

2008-05-03 15:51:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Simulate inherits in second pass.
Fixes LysLysKOM 16472935.

Rev: src/compilation.h:1.36
Rev: src/language.yacc:1.417
Rev: src/program.c:1.684
Rev: src/testsuite.in:1.803

2008-05-03 15:29:26 by Martin Nilsson <mani@lysator.liu.se>

Put all illegal size shift fatals behind ifdef PIKE_DEBUG.

Rev: src/builtin.cmod:1.199
Rev: src/builtin_functions.c:1.660
Rev: src/cpp.c:1.169
Rev: src/encode.c:1.265
Rev: src/iterators.cmod:1.66
Rev: src/operators.c:1.231
Rev: src/preprocessor.h:1.93
Rev: src/program.c:1.683
Rev: src/sscanf.c:1.172
Rev: src/stralloc.c:1.217

2008-05-02

2008-05-02 10:56:06 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added handle_inherit() to CompilerEnvironment and PikeCompiler.

Rev: src/pike_compiler.h:1.10
Rev: src/program.c:1.682

2008-05-02 04:15:18 by Martin Stjernholm <mast@lysator.liu.se>

Added Pike.count_memory to be able to see the memory consumed by arbitrary
pike structures.

The Gmp classes have been fixed to accurately report sizes, but there's
probably more to do in other modules.

Rev: lib/modules/Pike.pmod/module.pmod:1.17
Rev: src/array.c:1.205
Rev: src/builtin_functions.c:1.659
Rev: src/gc.c:1.305
Rev: src/gc.h:1.131
Rev: src/mapping.c:1.199
Rev: src/modules/Gmp/acconfig.h:1.8
Rev: src/modules/Gmp/configure.in:1.48
Rev: src/modules/Gmp/mpf.cmod:1.35
Rev: src/modules/Gmp/mpq.cmod:1.27
Rev: src/modules/Gmp/mpz_glue.c:1.178
Rev: src/multiset.c:1.107
Rev: src/object.c:1.288
Rev: src/pike_types.c:1.323
Rev: src/program.c:1.681
Rev: src/stralloc.c:1.216
Rev: src/stralloc.h:1.102

2008-05-01

2008-05-01 20:42:20 by Martin Stjernholm <mast@lysator.liu.se>

Fixed a debug printout.

Rev: src/program.c:1.680

2008-04-26

2008-04-26 19:04:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Moved compilation_depth to struct compilation.
Yet another step on the way to making the compiler thread safe.
Got rid of some now unused cleanup code in dynamic_load.c.

Rev: src/builtin_functions.c:1.656
Rev: src/dynamic_load.c:1.91
Rev: src/encode.c:1.264
Rev: src/language.yacc:1.416
Rev: src/pike_compiler.h:1.9
Rev: src/program.c:1.679
Rev: src/program.h:1.240

2008-04-26 16:08:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Cosmetic Autodoc mk II fix.

Rev: src/program.c:1.678

2008-04-26 14:27:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

The global svalue stack used_modules is no more.
Moved used_modules to struct pike_compilation.
Got rid of the old struct pike_compilation fields used_modules_save and num_used_modules_save.

Rev: src/pike_compiler.h:1.8
Rev: src/program.c:1.677

2008-04-26 11:17:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed bug where the default module from the end of pass 1 could be used at the start of pass 2.

Rev: src/program.c:1.676

2008-04-25

2008-04-25 11:26:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Some bugs remained in the last commit...

Rev: src/program.c:1.675

2008-04-24

2008-04-24 16:03:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Made the Pike compiler somewhat more transparent.
Added change_compiler_compatibility() and get_{compilation_handler,default_module}().
Added _sprintf() for PikeCompiler.
dump_program_tables() now also dumps the string table.

Rev: src/pike_compiler.h:1.6
Rev: src/program.c:1.674

2008-04-20

2008-04-20 13:00:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now uses safe_apply_current2().

Rev: src/program.c:1.673

2008-04-19

2008-04-19 18:01:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Some more Autodoc mk II markup.

Rev: src/program.c:1.672

2008-04-19 17:04:30 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Reverted incorrect Autodoc.

Rev: src/program.c:1.671

2008-04-19 15:36:48 by Martin Bähr <mbaehr@email.archlab.tuwien.ac.at>

autodoc fix

Rev: src/program.c:1.670

2008-04-19 13:52:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed lack of references to programs that have compilation delayed.
Added some more debug malloc checks.
Removed some dead variables.
Mapped default_module as well in PikeCompiler.

Rev: src/program.c:1.669

2008-04-19 10:11:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added enum SeverityLevel to CompilerEnvironment.
Some minor AutoDoc mk II fixes.

Rev: src/program.c:1.668

2008-04-18

2008-04-18 19:57:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Pike compiler mega patch mk II.

Rev: src/builtin_functions.c:1.653
Rev: src/language.yacc:1.414
Rev: src/pike_compiler.h:1.4
Rev: src/program.c:1.667
Rev: src/program.h:1.239

2008-04-15

2008-04-15 19:16:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added sufficient magic to compile_compiler() to use use the compiler to compile itself.

Rev: src/program.c:1.666

2008-04-15 13:07:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added PMOD_EXPORT for {enter,exit}_compiler().

Rev: src/program.c:1.665
Rev: src/program.h:1.238

2008-04-15 02:07:22 by Martin Nilsson <mani@lysator.liu.se>

%S not available here. Added h-file for get_all_args.

Rev: src/program.c:1.664

2008-04-14

2008-04-14 16:34:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Moved some of the resolver code to the CompilationEnvironment object.

Rev: src/pike_compiler.h:1.3
Rev: src/program.c:1.663

2008-04-14 13:19:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now uses the REPORT_* macros.

Rev: src/language.yacc:1.412
Rev: src/program.c:1.662

2008-04-14 12:19:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

CompilationEnvironment()->report() is now used for warnings as well.

Rev: src/program.c:1.661

2008-04-14 10:14:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Pike compiler mega patch.
Added predef::CompilerEnvironment, which is a wrapper for struct compilation.
Moved the definition of struct compilation to the new header file "pike_compiler.h".
The compilation struct is now contained in the current context in the current_object during compilation.
The global variable lex is no more, it has moved into the compilation struct.
Added enter_compiler() and exit_compiler().
predef::compile() is now shorthand for predef::CompilerContext()->compile().

Rev: src/builtin_functions.c:1.652
Rev: src/compilation.h:1.35
Rev: src/docode.c:1.197
Rev: src/docode.h:1.20
Rev: src/dynamic_load.c:1.90
Rev: src/encode.c:1.263
Rev: src/language.yacc:1.411
Rev: src/las.c:1.406
Rev: src/lex.c:1.121
Rev: src/lex.h:1.36
Rev: src/lexer.h:1.66
Rev: src/module.c:1.52
Rev: src/object.c:1.284
Rev: src/operators.c:1.230
Rev: src/pike_compiler.h:1.1
Rev: src/pike_types.c:1.321
Rev: src/program.c:1.660
Rev: src/program.h:1.237

2008-04-07

2008-04-07 01:45:53 by Martin Bähr <mbaehr@email.archlab.tuwien.ac.at>

fix for autodoc

Rev: src/program.c:1.659

2008-04-06

2008-04-06 21:43:31 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Some preparations for making the compiler less opaque.
Added the initial stuff for PikeCompiler. Not working yet.

Rev: src/program.c:1.658

2008-04-06 11:49:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Cleaned up use of program_state->parent_identifier. Removed some dead code.

Rev: src/language.yacc:1.410
Rev: src/program.c:1.657

2008-03-29

2008-03-29 16:20:19 by Martin Stjernholm <mast@lysator.liu.se>

Fixed proper use of the gc to detect pike type leaks. Some other minor
fiddling with the leak reports.

Rev: src/gc.c:1.302
Rev: src/global.h:1.111
Rev: src/module.c:1.50
Rev: src/pike_types.c:1.318
Rev: src/pike_types.h:1.111
Rev: src/program.c:1.656
Rev: src/svalue.c:1.238

2008-03-26

2008-03-26 15:07:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Moved SETJMP out of the loop in store_constant(); it is now somewhat faster.

Rev: src/program.c:1.655

2008-03-20

2008-03-20 15:34:37 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Support inherited files having names encoded according to UTF-8.

Rev: src/program.c:1.654

2008-02-27

2008-02-27 23:59:24 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Changed the definition of Pike_fp->context to a pointer.
This should reduce the overhead for apply() somewhat.

Rev: src/apply_low.h:1.33
Rev: src/builtin.cmod:1.194
Rev: src/interpret.c:1.386
Rev: src/interpret.h:1.171
Rev: src/interpret_functions.h:1.200
Rev: src/modules/Gmp/mpz_glue.c:1.171
Rev: src/object.c:1.282
Rev: src/object.h:1.93
Rev: src/opcodes.c:1.170
Rev: src/operators.c:1.227
Rev: src/program.c:1.653

2008-02-19

2008-02-19 15:35:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

{size,align}of_variable() now know about PIKE_T_GET_SET.

Rev: src/program.c:1.652

2008-02-14

2008-02-14 18:23:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added sanity check for aliases to check_program().

Rev: src/program.c:1.651

2008-02-12

2008-02-12 18:51:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Improved diagnostics.

Rev: src/module.c:1.48
Rev: src/program.c:1.650

2008-02-06

2008-02-06 18:29:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Adding aliases for variables is now encode_value()-safe...

Rev: src/program.c:1.649

2008-02-03

2008-02-03 19:38:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

More relaxations...

Rev: src/program.c:1.648

2008-02-03 18:08:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Reduce the number of warnings somewhat...

Rev: src/program.c:1.647

2008-02-02

2008-02-02 14:27:50 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Improved diagnostics.

Rev: src/program.c:1.646

2008-01-28

2008-01-28 19:46:13 by Martin Stjernholm <mast@lysator.liu.se>

I give up: Reinstated the old behavior regarding storing UNDEFINED in
mapping values. Fixed mapping_index_no_free to not munge the zero type in
the mapping, at least.

Rev: src/mapping.c:1.198
Rev: src/program.c:1.645

2008-01-28 15:18:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Oops...

Rev: src/program.c:1.644

2008-01-28 15:17:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

The integer subtype doesn't survive being in a mapping anymore.
Added some extra debug checks.

Rev: src/program.c:1.643

2008-01-26

2008-01-26 22:34:27 by Martin Stjernholm <mast@lysator.liu.se>

Eradicated all instances of setting type to T_INT without also setting the
subtype in an svalue. From now on one should either set the subtype or use
the new svalue type PIKE_T_FREE (see svalue.h).

Rev: src/OCPikeInterpreter.m:1.3
Rev: src/apply_low.h:1.32
Rev: src/array.c:1.198
Rev: src/array.h:1.71
Rev: src/bignum.c:1.42
Rev: src/builtin.cmod:1.193
Rev: src/builtin_functions.c:1.650
Rev: src/configure.in:1.1038
Rev: src/cpp.c:1.164
Rev: src/encode.c:1.250
Rev: src/error.c:1.151
Rev: src/interpret.c:1.385
Rev: src/interpret_functions.h:1.197
Rev: src/iterators.cmod:1.64
Rev: src/las.c:1.403
Rev: src/main.c:1.228
Rev: src/mapping.c:1.195
Rev: src/module.c:1.47
Rev: src/modules/Gmp/mpz_glue.c:1.170
Rev: src/modules/HTTPLoop/accept_and_parse.c:1.39
Rev: src/modules/HTTPLoop/requestobject.c:1.31
Rev: src/modules/Image/colortable.c:1.130
Rev: src/modules/Java/jvm.c:1.84
Rev: src/modules/Parser/html.c:1.178
Rev: src/modules/Parser/xml.cmod:1.97
Rev: src/modules/Postgres/postgres.c:1.55
Rev: src/modules/_math/math.c:1.87
Rev: src/modules/files/sendfile.c:1.78
Rev: src/modules/spider/spider.c:1.134
Rev: src/multiset.c:1.106
Rev: src/object.c:1.281
Rev: src/operators.c:1.226
Rev: src/pike_error.h:1.42
Rev: src/post_modules/Shuffler/Shuffler.cmod:1.45
Rev: src/post_modules/_ADT/circular_list.cmod:1.18
Rev: src/post_modules/_ADT/sequence.cmod:1.19
Rev: src/program.c:1.642
Rev: src/signal_handler.c:1.331
Rev: src/sscanf.c:1.170
Rev: src/svalue.c:1.234
Rev: src/svalue.h:1.149

2008-01-24

2008-01-24 13:58:26 by Martin Stjernholm <mast@lysator.liu.se>

Reordered conditions to avoid false alarms from valgrind.

Rev: src/program.c:1.641

2008-01-21

2008-01-21 22:46:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Removed some unneeded code.

Rev: src/program.c:1.640

2008-01-21 22:43:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Moved some redundant code to where it was actually used.

Rev: src/program.c:1.639

2008-01-13

2008-01-13 19:53:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed potential bug when inheriting from scoped classes.

Rev: src/program.c:1.638

2008-01-13 15:49:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added missing initializer for identifier opt_flags for variables and aliases.

Rev: src/program.c:1.637

2008-01-05

2008-01-05 20:08:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed the warning "Unused local variable ." (ie the empty variable name).

Rev: src/program.c:1.636

2008-01-04

2008-01-04 11:33:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler messages should not contain linebreaks.

Rev: src/program.c:1.635

2008-01-03

2008-01-03 16:49:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Only warn about unused variables in the second pass.

Rev: src/program.c:1.634

2008-01-03 15:58:27 by Henrik Grubbström (Grubba) <grubba@grubba.org>

{low_,}pop_local_variables() now warn about unused variables.

Rev: src/program.c:1.633

2007-12-28

2007-12-28 13:38:16 by Martin Nilsson <mani@lysator.liu.se>

nomask -> final

Rev: lib/modules/Stdio.pmod/module.pmod:1.231
Rev: lib/modules/Thread.pmod:1.44
Rev: src/gc.c:1.301
Rev: src/language.yacc:1.391
Rev: src/modules/_Charset/charsetmod.c:1.63
Rev: src/modules/_Charset/iso2022.c:1.45
Rev: src/program.c:1.632
Rev: src/program.h:1.236

2007-11-15

2007-11-15 17:41:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Initial support for new-style getter/setters.

Rev: src/program.c:1.631

2007-11-15 17:09:42 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed some more warnings.

Rev: src/program.c:1.630

2007-11-10

2007-11-10 19:45:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

It's not a good idea to mark LFUNS as used.

Rev: src/program.c:1.629

2007-10-24

2007-10-24 15:49:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Mark LFUNs as used.

Rev: src/program.c:1.628

2007-10-16

2007-10-16 09:18:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now behaves the same as yyerror()...

Rev: src/program.c:1.627

2007-10-16 09:17:20 by Henrik Grubbström (Grubba) <grubba@grubba.org>

yywarning() now survives not having a current file.

Rev: src/program.c:1.626

2007-10-13

2007-10-13 15:34:59 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Detect attempts to add identifiers, identifier_references and inherits in pass 2.

Rev: src/program.c:1.625

2007-10-12

2007-10-12 14:33:28 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now only warns about suspect overloadings in strict types mode.

Rev: src/program.c:1.624

2007-10-12 12:59:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed issues with the type checking for overloading of functions.

Rev: src/program.c:1.623

2007-10-11

2007-10-11 15:46:57 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added some warnings for overloading symbols with nonmatching types.

Rev: src/program.c:1.622

2007-09-29

2007-09-29 15:09:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Unified IDENTIFIER_EXTERN and IDENTIFIER_ALIAS into IDENTIFIER_ALIAS.
ID_ALIAS is no more.
Added {low_,}define_alias() in analogue with the other identifiers.
Aliases are now used in some places where previously an identifier was copied.
Added support for constants (ie aliases) referring directly to variables and functions in the surrounding scopes.
A program may now be indexed on such a constant (ie alias).
Added some FIXMEs.
Changed API for low_program_from_function().
Disabled find_child() (could not find anything using it).
Bumped build bumber since the identifier encoding has changed.

Rev: src/language.yacc:1.382
Rev: src/object.c:1.277
Rev: src/program.c:1.621
Rev: src/program.h:1.233
Rev: src/version.h:1.394

2007-09-25

2007-09-25 16:56:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>

check_program() now knows something about extern symbols.

Rev: src/program.c:1.620

2007-09-24

2007-09-24 19:18:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Changed the semantics of program_index_no_free() somewhat in preparation for having symbols with storage in parent classes.
Changed the representation of tentatively typed function identifiers.
They are now marked by having the run time type T_MIXED.
Changed the encoding in the identifier_flags field somewhat to free up a bit to indicate that the symbol has storage in an external scope.
Bumped version to 7.7.36 since the dump format for programs has changed.
Fixed minor bug in index_no_free() when indexing a function that wasn't a program.

Rev: src/object.c:1.275
Rev: src/operators.c:1.222
Rev: src/program.c:1.619
Rev: src/program.h:1.230
Rev: src/version.h:1.393

2007-09-14

2007-09-14 18:38:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed fatal error "Getter/setter variable outside program!" et al, when an inherited getter/setter is used via the ::-operator.

Rev: src/program.c:1.618

2007-09-04

2007-09-04 16:45:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now supports mixin for static symbols.

Rev: src/program.c:1.617

2007-05-26

2007-05-26 19:14:59 by Martin Stjernholm <mast@lysator.liu.se>

Added a PROGRAM_LIVE_OBJ flag to be able to accurately detect exit callbacks
in inherits. It also allows users to override the assumption that an exit or
event callback makes it necessary for the gc to treat the objects as live.

Rev: src/gc.c:1.286
Rev: src/gc.h:1.128
Rev: src/object.c:1.274
Rev: src/program.c:1.616
Rev: src/program.h:1.229

2007-05-13

2007-05-13 15:45:32 by Martin Stjernholm <mast@lysator.liu.se>

Document that the old event-specific program callbacks have a certain
benefit afterall.

Rev: src/program.c:1.615

2007-05-13 14:55:26 by Martin Stjernholm <mast@lysator.liu.se>

Reworked the cycle handling in the gc and documented it in detail, to work
out some kinks and to make it more convincing that the end result really is
what the gc claims it to be.

Rev: src/gc.c:1.281
Rev: src/pike_embed.c:1.11
Rev: src/program.c:1.614

2007-04-25

2007-04-25 22:02:07 by Martin Stjernholm <mast@lysator.liu.se>

Some fixes to gc locate and cleanup code for strings and types in the
program structs.

Rev: src/program.c:1.613

2007-01-16

2007-01-16 18:31:18 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed NULL dereference at out of memory in low_start_new_program().
Found by Klocwork.

Rev: src/program.c:1.612

2007-01-16 18:22:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Removed redundant condition.

Rev: src/program.c:1.611

2006-10-27

2006-10-27 18:45:00 by Henrik Grubbström (Grubba) <grubba@grubba.org>

First try at implementing getter/setter variables. Seems to work.

Rev: src/program.c:1.610

2006-08-20

2006-08-20 21:08:49 by Peter Bortas <zino@lysator.liu.se>

make_program_executable may be called with empty programs.

Rev: src/program.c:1.575

2006-08-09

2006-08-09 14:03:02 by Martin Stjernholm <mast@lysator.liu.se>

Comment fix.

Rev: src/program.c:1.609

2006-08-09 01:55:45 by Martin Stjernholm <mast@lysator.liu.se>

Use the homegrown heap manager for executable memory on Windows too. The
reason is that VirtualProtect doesn't work if it's given an area that
haven't been reserved with a single VirtualAlloc MEM_RESERVE call.

Rev: src/dmalloc.h:1.62
Rev: src/pike_embed.c:1.10
Rev: src/pike_memory.c:1.183
Rev: src/pike_memory.h:1.55
Rev: src/program.c:1.608

2006-08-08

2006-08-08 22:23:11 by Martin Stjernholm <mast@lysator.liu.se>

Make some effort to find the real page size.

Rev: src/configure.in:1.991
Rev: src/pike_embed.c:1.9
Rev: src/pike_memory.c:1.182
Rev: src/pike_memory.h:1.54
Rev: src/program.c:1.607

2006-08-05

2006-08-05 20:35:41 by Martin Stjernholm <mast@lysator.liu.se>

Check for errors from VirtualProtect.

Rev: src/program.c:1.574

2006-08-05 20:07:50 by Martin Stjernholm <mast@lysator.liu.se>

Don't do page alignment on the block passed to VirtualProtect on
Windows.

Rev: src/program.c:1.606

2006-07-06

2006-07-06 16:46:13 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed some cases of safe_apply_low2().

Rev: src/language.yacc:1.371
Rev: src/program.c:1.605
Rev: src/svalue.c:1.230

2006-07-05

2006-07-05 20:47:53 by Martin Stjernholm <mast@lysator.liu.se>

One more PMOD_EXPORT.

Rev: src/program.c:1.604
Rev: src/program.h:1.225

2006-07-05 19:28:11 by Martin Stjernholm <mast@lysator.liu.se>

Added PMOD_EXPORTs.

Rev: src/fsort.c:1.25
Rev: src/fsort.h:1.7
Rev: src/interpret.c:1.378
Rev: src/interpret.h:1.169
Rev: src/language.yacc:1.370
Rev: src/las.h:1.73
Rev: src/operators.c:1.211
Rev: src/operators.h:1.19
Rev: src/pike_memory.c:1.179
Rev: src/pike_memory.h:1.53
Rev: src/pike_types.c:1.255
Rev: src/pike_types.h:1.95
Rev: src/program.c:1.603
Rev: src/program.h:1.224
Rev: src/stralloc.h:1.100

2006-07-05 02:21:51 by Martin Stjernholm <mast@lysator.liu.se>

Added do_free_program. Added some PMOD_EXPORTs.

Rev: src/program.c:1.602

2006-07-04

2006-07-04 14:38:17 by Martin Stjernholm <mast@lysator.liu.se>

Handle valgrind discarding in mexec_free.

Rev: src/pike_memory.c:1.177
Rev: src/program.c:1.601

2006-07-04 14:38:17 by Martin Stjernholm <mast@lysator.liu.se>

Handle valgrind discarding in mexec_free.

Rev: src/pike_memory.c:1.158
Rev: src/program.c:1.573

2006-07-04 14:38:16 by Martin Stjernholm <mast@lysator.liu.se>

Handle valgrind discarding in mexec_free.

Rev: src/pike_memory.c:1.145
Rev: src/program.c:1.501

2006-03-22

2006-03-22 20:01:46 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Backported fix for low_get_function_line() from Pike 7.7.

Rev: src/program.c:1.572

2006-03-22 19:59:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed main cause of "Bad offset: pc:* program:* (*)".
get_function_line() assumed that all functions are implemented in pike...

Rev: src/program.c:1.600

2005-12-31

2005-12-31 15:03:57 by Martin Nilsson <mani@lysator.liu.se>

Another safe_apply_low3 reference.

Rev: src/program.c:1.599

2005-12-31 03:36:44 by Martin Nilsson <mani@lysator.liu.se>

Facet init and exit needs more work. Disable them for now.

Rev: src/facetgroup.cmod:1.6
Rev: src/language.yacc:1.361
Rev: src/module.c:1.36
Rev: src/program.c:1.598
Rev: src/program.h:1.221

2005-11-16

2005-11-16 13:15:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Backported is_compatible() relaxation for integers from Pike 7.6.

Rev: src/program.c:1.500

2005-11-06

2005-11-06 21:42:54 by Henrik Grubbström (Grubba) <grubba@grubba.org>

id_to_program() now knows about GTK2.

Rev: src/program.c:1.597

2005-11-01

2005-11-01 21:53:24 by Jonas Wallden <jonasw@roxen.com>

Backport optimization from 7.7: No need to mprotect memory allocated with mmap.

Rev: src/program.c:1.499

2005-11-01 21:53:00 by Jonas Wallden <jonasw@roxen.com>

Backport optimization from 7.7: No need to mprotect memory allocated with mmap.

Rev: src/program.c:1.571

2005-11-01 10:16:08 by Henrik Grubbström (Grubba) <grubba@grubba.org>

No need to mprotect memory allocated with mmap.

Rev: src/program.c:1.596

2005-08-14

2005-08-14 11:27:24 by Jonas Wallden <jonasw@roxen.com>

Workaround for false positive reported by Valgrind caused by a correct
compiler optimization.

Rev: src/program.c:1.498

2005-08-10

2005-08-10 11:55:49 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Moved handling of the UNDEFINED symbol from find_module_identifier() to resolve_identifier().
This should make global.UNDEFINED work.

Rev: src/program.c:1.595

2005-06-23

2005-06-23 13:33:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now uses sync_instruction_memory(3C) if it exists as recommended by SPARC Compliance Definition 2.4.

Rev: src/program.c:1.594

2005-06-09

2005-06-09 09:26:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed leak introduced by the new mexec_alloc code.

Rev: src/program.c:1.570

2005-06-09 09:25:43 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed leak introduced by the new mexec_alloc code.

Rev: src/program.c:1.497

2005-06-09 09:25:11 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed leak introduced by the new mexec_alloc code.

Rev: src/program.c:1.593

2005-05-31

2005-05-31 11:59:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added some comments.

Rev: src/program.c:1.592

2005-05-30

2005-05-30 12:43:04 by Martin Stjernholm <mast@lysator.liu.se>

Some damage control in a severely broken part of the resolver mess:
Now we at least get a warning if resolv() throws an error in pass 1 in
rtldebug mode. Also fixed a temporary leak of the backtrace in this
case.

Rev: src/program.c:1.496

2005-05-30 12:38:43 by Martin Stjernholm <mast@lysator.liu.se>

Some damage control in a severely broken part of the resolver mess:
Now we at least get a warning if resolv() throws an error in pass 1 in
rtldebug mode. Also fixed a temporary leak of the backtrace in this
case.

Rev: src/program.c:1.569

2005-05-30 12:36:08 by Martin Stjernholm <mast@lysator.liu.se>

Some damage control in a severely broken part of the resolver mess:
Now we at least get a warning if resolv() throws an error in pass 1 in
rtldebug mode. Also fixed a temporary leak of the backtrace in this
case.

Rev: src/program.c:1.591

2005-05-26

2005-05-26 17:05:06 by Martin Stjernholm <mast@lysator.liu.se>

Fixed bug in PIKE_DEBUG code that could cause coredumps for failed compilations.

Rev: src/program.c:1.568

2005-05-26 17:04:38 by Martin Stjernholm <mast@lysator.liu.se>

Fixed bug in PIKE_DEBUG code that could cause coredumps for failed compilations.

Rev: src/program.c:1.590

2005-05-26 12:00:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Backported use of mexec_* from Pike 7.7.

Rev: src/program.c:1.495
Rev: src/program_areas.h:1.13

2005-05-26 12:00:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Backported use of mexec_* from Pike 7.7.

Rev: src/program.c:1.567
Rev: src/program_areas.h:1.14

2005-05-25

2005-05-25 17:09:41 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Now uses mexec_*() to allocate memory for machine-code segments.
Now page-aligns pointers passed to mprotect(2) to make Linux happy.
Fixes machinecode problems on Linux on x86_64-capable platforms.

Rev: src/program.c:1.589

2005-05-19

2005-05-19 22:35:40 by Martin Stjernholm <mast@lysator.liu.se>

Fixed various type errors for 64 bit architectures and other warnings. (Most
are in harmless debug messages, but anyway..)

Rev: src/array.c:1.181
Rev: src/backend.cmod:1.175
Rev: src/builtin_functions.c:1.599
Rev: src/code/bytecode.h:1.11
Rev: src/encode.c:1.228
Rev: src/gc.c:1.270
Rev: src/interpret_functions.h:1.184
Rev: src/las.c:1.364
Rev: src/modules/Image/image.c:1.222
Rev: src/modules/Parser/html.c:1.177
Rev: src/modules/_Charset/iso2022.c:1.38
Rev: src/modules/files/file.c:1.351
Rev: src/modules/files/sendfile.c:1.72
Rev: src/modules/spider/xml.c:1.75
Rev: src/modules/system/memory.c:1.34
Rev: src/object.c:1.267
Rev: src/peep.c:1.106
Rev: src/pike_types.c:1.247
Rev: src/post_modules/Shuffler/a_source_system_memory.c:1.12
Rev: src/post_modules/Shuffler/b_source_normal_file.c:1.14
Rev: src/program.c:1.588
Rev: src/rbtree.c:1.25
Rev: src/threads.c:1.244

2005-05-18

2005-05-18 12:36:54 by Martin Stjernholm <mast@lysator.liu.se>

Fixed various type errors for 64 bit architectures. (Most are in harmless
debug messages, but anyway..)

Rev: src/array.c:1.164
Rev: src/backend.cmod:1.146
Rev: src/builtin_functions.c:1.555
Rev: src/code/bytecode.h:1.11
Rev: src/encode.c:1.214
Rev: src/gc.c:1.257
Rev: src/interpret_functions.h:1.170
Rev: src/las.c:1.347
Rev: src/modules/Gmp/mpz_glue.c:1.162
Rev: src/modules/Image/encodings/xcf.c:1.49
Rev: src/modules/Parser/html.c:1.173
Rev: src/modules/files/file.c:1.321
Rev: src/modules/files/sendfile.c:1.70
Rev: src/modules/spider/xml.c:1.71
Rev: src/object.c:1.257
Rev: src/peep.c:1.99
Rev: src/pike_types.c:1.236
Rev: src/post_modules/Shuffler/a_source_system_memory.c:1.11
Rev: src/program.c:1.566
Rev: src/svalue.c:1.195
Rev: src/threads.c:1.238

2005-04-08

2005-04-08 17:01:02 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Improved diagnostics.

Rev: src/program.c:1.587

2005-03-22

2005-03-22 11:47:29 by Jonas Wallden <jonasw@roxen.com>

Make flag argument wide enough to hold all possible flag values.

Rev: src/program.c:1.494
Rev: src/program.h:1.183

2005-02-09

2005-02-09 16:43:35 by Martin Stjernholm <mast@lysator.liu.se>

Pass a flag to lfun::destroy about the reason for the destruct.

Rev: lib/modules/Object.pmod:1.1
Rev: src/builtin_functions.c:1.587
Rev: src/gc.c:1.262
Rev: src/object.c:1.265
Rev: src/object.h:1.90
Rev: src/program.c:1.586

2005-01-20

2005-01-20 00:27:17 by Martin Nilsson <mani@lysator.liu.se>

Added const

Rev: src/program.c:1.585

2005-01-07

2005-01-07 13:28:14 by Henrik Grubbström (Grubba) <grubba@grubba.org>

prototype lfuns now show again.

Rev: src/program.c:1.584

2004-12-19

2004-12-19 16:43:38 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Some object subtype fixes.

Rev: src/object.c:1.260
Rev: src/program.c:1.583

2004-12-19 14:47:12 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added compat.

Rev: src/program.c:1.582

2004-12-18

2004-12-18 18:39:56 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Inherit::this and Inherit::this_program should now work.

Rev: src/program.c:1.581

2004-12-18 16:41:04 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added support for Inherit::this_program.

Rev: src/program.c:1.580

2004-12-15

2004-12-15 02:22:13 by Martin Nilsson <mani@lysator.liu.se>

Another facet bug fix.

Rev: src/program.c:1.579

2004-12-08

2004-12-08 15:38:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

low_start_new_program() now uses new_node_s_context().
This should fix spurious fatal "Failed to free %d nodes when compiling!\n".
Also added some (disabled) diagnostics.

Rev: src/program.c:1.578

2004-11-06

2004-11-06 08:41:30 by Martin Nilsson <mani@lysator.liu.se>

Fixed reference count of facet_group.

Rev: src/program.c:1.577

2004-11-05

2004-11-05 17:56:34 by Henrik Grubbström (Grubba) <grubba@grubba.org>

yywarning() now uses string_builder_vsprintf().

Rev: src/program.c:1.576

2004-11-05 16:21:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

my_yyerror() now uses string_builder_vsprintf().
Corrected the arguments for a lot of my_yyerror() invocations.

Rev: src/language.yacc:1.350
Rev: src/las.c:1.352
Rev: src/pike_types.c:1.239
Rev: src/program.c:1.575
Rev: src/treeopt.in:1.75

2004-10-30

2004-10-30 15:57:19 by Martin Nilsson <mani@lysator.liu.se>

Free facet_group references in programs.

Rev: src/program.c:1.574

2004-10-30 11:38:30 by Martin Stjernholm <mast@lysator.liu.se>

Merge 'tags/v7.7.10': Implemented from-the-end indexing in ranges using the a[..<1] syntax. Added
`[..]. Still to do: Avoid fallback to `[] for ranges if it doesn't take two
args.

2004-10-30 11:38:29 by Martin Stjernholm <mast@lysator.liu.se>

Implemented from-the-end indexing in ranges using the a[..<1] syntax. Added
`[..]. Still to do: Avoid fallback to `[] for ranges if it doesn't take two
args.

Rev: src/docode.c:1.181
Rev: src/interpret.c:1.358
Rev: src/interpret_functions.h:1.176
Rev: src/language.yacc:1.347
Rev: src/las.c:1.351
Rev: src/lexer.h:1.51
Rev: src/opcodes.h:1.41
Rev: src/operators.c:1.198
Rev: src/operators.h:1.16
Rev: src/pike_types.c:1.238
Rev: src/program.c:1.573
Rev: src/program.h:1.213
Rev: src/testsuite.in:1.741
Rev: src/treeopt.in:1.74

2004-10-22

2004-10-22 23:26:13 by Martin Nilsson <mani@lysator.liu.se>

Facets

Rev: src/.cvsignore:1.37
Rev: src/Makefile.in:1.387
Rev: src/errors.h:1.27
Rev: src/facetgroup.cmod:1.1
Rev: src/interpret.c:1.357
Rev: src/interpret.h:1.155
Rev: src/language.yacc:1.344
Rev: src/lexer.h:1.50
Rev: src/main.c:1.215
Rev: src/program.c:1.572
Rev: src/program.h:1.212

2004-10-22 20:18:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Cosmetic fix.

Rev: src/program.c:1.571

2004-10-16

2004-10-16 07:27:30 by Marcus Agehall <agehall@gmail.com>

Done away with all warnings during compilation. Now compiles on GCC
3.4.2 without any warnings using the -Wall -Werror CFLAGS.
Some workarounds are not very nice, but they should do their job.

Rev: src/array.c:1.174
Rev: src/dynamic_load.c:1.85
Rev: src/encode.c:1.221
Rev: src/interpret.c:1.356
Rev: src/las.c:1.350
Rev: src/module.c:1.30
Rev: src/modules/Java/jvm.c:1.71
Rev: src/modules/_Charset/charsetmod.c:1.49
Rev: src/object.c:1.258
Rev: src/pike_search.c:1.24
Rev: src/post_modules/Nettle/cipher.cmod:1.34
Rev: src/post_modules/Nettle/hash.cmod:1.26
Rev: src/post_modules/Shuffler/a_source_pikestring.c:1.10
Rev: src/post_modules/Shuffler/a_source_system_memory.c:1.11
Rev: src/post_modules/Shuffler/c_source_stream.c:1.11
Rev: src/post_modules/Shuffler/d_source_pikestream.c:1.7
Rev: src/post_modules/Shuffler/e_source_block_pikestream.c:1.5
Rev: src/post_modules/Shuffler/shuffler.h:1.6
Rev: src/program.c:1.570
Rev: src/rusage.c:1.42

2004-10-11

2004-10-11 16:41:49 by Martin Stjernholm <mast@lysator.liu.se>

Show the error when the compile time replace() optimizer fails.

Rev: src/builtin_functions.c:1.469
Rev: src/language.yacc:1.317
Rev: src/las.c:1.326
Rev: src/program.c:1.493
Rev: src/program.h:1.182

2004-09-27

2004-09-27 15:12:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed race condition.

Rev: src/program.c:1.569

2004-09-27 15:12:09 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed race condition.

Rev: src/program.c:1.565

2004-09-27 15:12:03 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed race condition.

Rev: src/program.c:1.492

2004-09-27 15:11:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed race condition.

Rev: src/program.c:1.235

2004-09-27 15:11:51 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed race condition.

Rev: src/program.c:1.111

2004-09-18

2004-09-18 20:50:57 by Martin Nilsson <mani@lysator.liu.se>

RCSID is not really useful anymore.

Rev: src/array.c:1.169
Rev: src/backend.cmod:1.145
Rev: src/builtin_functions.c:1.567
Rev: src/callback.c:1.35
Rev: src/constants.c:1.54
Rev: src/cyclic.c:1.13
Rev: src/dlopen.c:1.74
Rev: src/docode.c:1.179
Rev: src/dynamic_buffer.c:1.25
Rev: src/dynamic_load.c:1.84
Rev: src/encode.c:1.219
Rev: src/error.c:1.133
Rev: src/fd_control.c:1.51
Rev: src/fdlib.c:1.66
Rev: src/fsort.c:1.23
Rev: src/gc.c:1.256
Rev: src/hashtable.c:1.15
Rev: src/interpret.c:1.353
Rev: src/iterators.cmod:1.55
Rev: src/language.yacc:1.342
Rev: src/las.c:1.349
Rev: src/lex.c:1.119
Rev: src/main.c:1.207
Rev: src/mapping.c:1.183
Rev: src/module.c:1.28
Rev: src/module_support.c:1.63
Rev: src/modules/_math/math.c:1.79
Rev: src/modules/files/datagram.c:1.9
Rev: src/modules/files/efuns.c:1.147
Rev: src/modules/files/file.c:1.329
Rev: src/modules/files/socket.c:1.91
Rev: src/modules/files/stat.c:1.30
Rev: src/module