Query
Sunday 29 March 2020
2020-03-29 13:23:51 (11 months ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/docode.c (+2/-0)(2 lines)
branch: master
Build [Compiler]: Add missing variable.
The emit0() macro requires the variable 'c' to contain the current
compilation context.
fixes compilation error.
Fixes#10023 .
Friday 13 March 2020
2020-03-13 16:04:00 (12 months ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/testsuite.in (+3/-2)(5 lines)
branch: master
Testsuite [Compiler]: Adjusted behavior for private inherit.
Previously symbols in privately inherited programs could be overridden
with symbols in the current program. Now they are instead kept as is.
Sunday 08 March 2020
2020-03-08 15:12:21 (12 months ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/lexer.h (+3/-1)(4 lines)
branch: master
Build [Compiler]: Fix gcc-warning.
Sunday 10 November 2019
2019-11-10 11:59:20 (1 year ago) by Marcus Comstedt <marcus@mc.pp.se>
- pike/src/pike_compiler.cmod (+4/-0)(4 lines)
branch: master
Debug [Compiler]: Fix spurious "Que, numbers out of whack" diagnostic
The Supporter field "previous" is only valid while the supporter is
linked into the current_supporter chain. After that it should not be
accessed. verify_supporters accesses it anyway, so zero it out when
unlinking the supporter to prevent the debug code from acting on stale
information.
Monday 04 November 2019
2019-11-04 16:07:32 (1 year ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/pike_compiler.cmod (+7/-3)(10 lines)
branch: master
Debug [Compiler]: Improved diagnostics for supporters.
Friday 02 February 2018
2018-02-02 17:12:51 (3 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/testsuite.in (+49/-0)(49 lines)
branch: master
Testsuite [Compiler]: Test indices() values() on programs.
Symbols should only be listed once...
Friday 25 November 2016
2016-11-25 11:26:35 (4 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/bin/mktestsuite (+2/-1)(3 lines)
- pike/src/testsuite.in (+12/-11)(23 lines)
branch: 8.1
Testsuite [Compiler]: Fixed some more broken class tests.
Fixes typo in fix from 5aa1376f27fc1b09462d3629f727f28d9bd1e095,
as well as several tests that were missed in that commit.
Thursday 24 November 2016
2016-11-24 17:06:59 (4 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/bin/mktestsuite (+4/-3)(7 lines)
- pike/lib/modules/Standards.pmod/testsuite.in (+3/-1)(4 lines)
- pike/src/post_modules/JSON/testsuite.in (+3/-2)(5 lines)
- pike/src/testsuite.in (+51/-45)(96 lines)
branch: 8.1
Total 112
Testsuite [Compiler]: Fixed fall-out from the named/unnamed class change.
This fixes the testsuite failures due to the following two changes:
* Anonymous classes not being allowed at top level.
* Named classes no longer being expressions.
Saturday 05 November 2016
2016-11-05 12:56:06 (4 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/testsuite.in (+15/-0)(15 lines)
branch: 8.1
Testsuite [Compiler]: Trivial test of __weak__.
Saturday 23 July 2016
2016-07-23 22:43:08 (5 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/program.c (+12/-1)(13 lines)
branch: 8.1
Documentation [Compiler]: Added some notes about supporters.
Thursday 04 December 2014
2014-12-04 20:24:03 (6 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/las.c (+65/-8)(73 lines)
branch: bill/master_archive_support
[compiler] Avoid recursion on the C-stack.
las.c:count_args() now uses the parent links (as per an old FIXME),
to avoid running out of C-stack when counting huge argument lists.
Fixes [bug6860 (#6860) ].
- pike/src/code/ia32.h (+2/-5)(7 lines)
branch: bill/master_archive_support
[compiler] Machine code support for x86 should now compile again.
Friday 23 August 2013
2013-08-23 13:30:47 (8 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/las.c (+65/-8)(73 lines)
branch: 7.8
[compiler] Avoid recursion on the C-stack.
las.c:count_args() now uses the parent links (as per an old FIXME),
to avoid running out of C-stack when counting huge argument lists.
Fixes [bug6860 (#6860) ].
- pike/src/las.c (+65/-8)(73 lines)
branch: 7.9
[compiler] Avoid recursion on the C-stack.
las.c:count_args() now uses the parent links (as per an old FIXME),
to avoid running out of C-stack when counting huge argument lists.
Fixes [bug6860 (#6860) ].
Monday 19 August 2013
2013-08-19 13:06:05 (8 years ago) by Henrik Grubbström (Grubba) <grubba@grubba.org>
- pike/src/code/ia32.h (+2/-5)(7 lines)
branch: 7.9
[compiler] Machine code support for x86 should now compile again.
Tuesday 02 October 2012
2012-10-02 11:03:44 (8 years ago) by Per Hedbor <ph@opera.com>
- pike/src/las.c (+9/-0)(9 lines)
branch: 7.9
[compiler] fix_type_field now fixes the type of car/cdr
This is needed to make it possible to run fix_type_field before the
tree has been completed.
it is used by the new conditional indexing operator.
Thursday 19 July 2012
2012-07-19 01:20:57 (9 years ago) by unknown <unknown user@unknown>
- pike/src/code/amd64.c (+13/-8)(21 lines)
branch: 7.9
[compiler][amd64] Can't easily compare functions and floats in
F_BRANCH_WHEN_{EQ,NEQ}. Also corrected some comment typos.
Monday 16 July 2012
2012-07-16 22:09:35 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+65/-31)(96 lines)
- pike/src/code/amd64.h (+8/-0)(8 lines)
branch: 7.9
[compiler][amd64] Use new features from peep.c
Place the code for calling check_threads_etc before the function instead of
inside it, to have one branch less in tight loops.
This saves about 4% in the nested loops test, at the cost of 12 bytes extra
code-space for functions that do not actually contain loops (for functions
that contain loops 3 bytes is saved intead)
One alternative would have to place the code after the function, if it does
contain a loop, then update the relative jumps to point to the code.
That is left for later.
- pike/src/peep.c (+15/-8)(23 lines)
branch: 7.9
[compiler] Added support for hooks before and after functions
The function callbacks can be used to generate helper code that will
not actually be inside the function body and similar tasks.
Thursday 28 June 2012
2012-06-28 22:56:29 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+6/-1)(7 lines)
branch: 7.9
[compiler][amd64] Attempt at faster PC updates.
Always just assign PC to the current address instead of adding the
difference. This is somewhat faster.
We still do too many updates, though.
As an example it is commont to have 2-3 update_pc in a row.
- pike/src/code/amd64.c (+42/-16)(58 lines)
branch: 7.9
[compiler][amd64] Added instr_prologue in a lot of places.
Also, load sp register more consistently, and only when
actually needed.
Monday 25 June 2012
2012-06-25 18:54:37 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+58/-0)(58 lines)
branch: 7.9
[compiler][amd64] Inline version of FOREACH
This is the old foreach( array, loop_variable ). About 10 times faster if the
loop variable is a local variable in the function.
2012-06-25 18:13:22 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+185/-13)(198 lines)
branch: 7.9
[compiler][amd64] Yet more inlined opcodes
Added inline versions of INDEX, INT_NDEX, NEG_INT_INDEX, LOCAL_INDEX.
They are only inlined when the index is an integer and the item to be
indexed is an array.
Adding support for string[int] might be useful.
2012-06-25 15:53:53 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+74/-1)(75 lines)
branch: 7.9
[compiler][amd64] Inline some more opcodes
Added SIZEOF, RETURN_LOCAL and CLEAR_2_LOCAL.
2012-06-25 15:10:12 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+117/-15)(132 lines)
branch: 7.9
[compiler][amd64] More inline opcodes.
Added the various *CALL*BULTIN* opcodes.
2012-06-25 01:30:39 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/docode.c (+3/-4)(7 lines)
branch: 7.9
[compiler] Fixed backtrace() for varargs functions
2012-06-25 01:02:25 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+258/-23)(281 lines)
branch: 7.9
[compiler][amd64] Inline a few mode opcodes
Added inline versions of LTOSVAL2_AND_FREE, LTOSVAL, ASSIGN and
ASSIGN_AND_POP. Slightly optimized BRANCH_WHEN_*ZERO and
BRANCH_WHEN_*LOCAL.
Friday 22 June 2012
2012-06-22 10:12:41 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+129/-29)(158 lines)
branch: 7.9
[compiler][amd64] Real mov16 and mov8 added.
Using the movzx instruction, this is for unsigned numbers. Versions
using movsz is needed if signed numbers are to be used.
Inlined a few more opcodes. Fixed branch when (non) zero and branch
when local to correctly treat 0.0 as non-zero.
Fixed clearing of zero type in ADD_LOCAL_INT[_and_pop] and
ADD_[NEG_]INT.
- pike/src/interpret_functions.h (+20/-0)(20 lines)
- pike/src/peep.in (+5/-0)(5 lines)
branch: 7.9
[compiler] Added ADD_LOCAL_INT to complement ADD_LOCAL_INT_AND_POP.
Also, do quick return for return UNDEFINED.
Wednesday 20 June 2012
2012-06-20 13:06:15 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/peep.in (+6/-5)(11 lines)
branch: 7.9
[compiler] Added missing arguments in peep.in
2012-06-20 05:43:06 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+176/-292)(468 lines)
- pike/src/interpret_functions.h (+21/-2)(23 lines)
- pike/src/peep.in (+31/-4)(35 lines)
branch: 7.9
[compiler][amd64] Cleaned up code somewhat and faster branches
Added FAST_BRANCH_WHEN{_,_NOT_}ZERO that knows that sp[-1] is an
integer. It can thus avoid doing any checking of types and the normal
pop_stack checks.
Also inlined the normal BRANCH_WHEN{_,_NON_}ZERO.
There is now a common function that is used to generate
modrm+sib+offset for the *mem* family of functions.
Also removed frame init/stack cleaning for Functions that just return
a constant.
Monday 18 June 2012
2012-06-18 01:45:27 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+68/-1)(69 lines)
- pike/src/interpret_functions.h (+61/-5)(66 lines)
- pike/src/peep.in (+31/-0)(31 lines)
branch: 7.9
[compiler] Significantly faster simple loops
New opcodes:
ASSIGN_LOCAL_NUMBER_AND_POP
ADD_LOCAL_NUMBER_AND_POP, ADD_LOCAL_LOCAL_AND_POP
and ASSIGN_GLOBAL_NUMBER_AND_POP
The rationale for the assign_local variants is that it is
significantly faster to do local=local and local+=[number||local] than
it is to do local&, number, f_add_to and similar.
The reason being that the locals act much like registers, they are
easy to assign values from the machinecode level.
Also added some perhaps dubious optimizations of the code that the
treeoptimizer produce for for-loops.
The result of the above is that the NestedLoops* tests are about eight
times faster. And runs entirely in native code, without any function
calls.
Thursday 14 June 2012
2012-06-14 23:11:43 (9 years ago) by Per Hedbor <ph@opera.com>
- pike/src/code/amd64.c (+433/-115)(548 lines)
branch: 7.9
[compiler][amd64] Some more optimizations and changes
Added branch_check_threads_etc calls that went missing.
Also changed how branch_check_threads_etc is called, the code now
maintains a counter on the C-stack, if adding 1 to it (as a signed
byte) causes it to overflow the C-function is called, after adding 128
to the in-memory counter. This saves rather a lot of calls.
Inlined F_{DUMB_,}RETURN, F_BRANCH_WHEN_{EQ,NE} F_ADD_NEG_INT,
F_ADD_INT and F_ADD_INTS.
Bugs mentioned
![]() | CLOSED | Optimizer fatal error "F_PUSH_ARRAY unexpected in this context." | ||
![]() | CLOSED | The type checker can run out of C-stack when compiling huge mapping constants. |