Branch: Tag:


2019-05-04 09:12:19 by Arne Goedeke <>

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


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

Merge commit '722771973bd' into patches/lyslyskom22891031

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


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

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 10:39:03 by Henrik Grubbström (Grubba) <>

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

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


2018-11-04 16:11:11 by Arne Goedeke <>

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


2018-11-03 14:21:37 by Marcus Comstedt <>

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


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

Merge commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e' into patches/pike63

* commit '75c9d1806f1a69ca21c27a2c2fe1b4a6ea38e77e': (19587 commits)


2017-10-07 21:04:32 by Martin Karlgren <>

Merge branch 'marty/call_frames' into 8.1

This introduces the --with-mc-stack-frames configure option, which will
instruct the machine code generator to insert proper stack frames (currently
only supported on X86-64). This is useful for profiling, especially in
combination with Debug.generate_perf_map() on Linux.


2017-07-20 14:59:12 by Martin Nilsson <>

Use get_unaligned instead of EXTRACT_


2017-02-21 20:49:34 by Martin Karlgren <>

Add --with-mc-stack-frames configure option. (Currently X86-64 only.)

This will enable frame pointers in machine code, thereby allowing e.g.
Linux perf to unwind the stack and get proper stack traces including
Pike functions.

2017-02-21 20:41:13 by Martin Karlgren <>

Inline the F_CATCH opcode (on AMD64 so far).

This is a prerequisite for MACHINE_CODE_STACK_FRAMES, since
inter_return_opcode_F_CATCH will "inject" itself on the C stack when the first
F_CATCH opcode is encountered (and won't vanish until inter return, which may
occur in an outer Pike frame).


2017-01-13 17:46:51 by Henrik Grubbström (Grubba) <>

Compiler [amd64]: First go at implementing DISASSEMBLE_CODE().

Work in progress; disassembly of SIB not yet implemented,
argument order is not correct in some cases, but it does disassemble
some opcodes correctly.


2015-05-25 14:56:10 by Martin Nilsson <>

Normalized file ends.


2014-07-15 13:09:00 by Per Hedbor <>


This calls the constant in arg1 with arg2 arguments from the stack.

These opcodes are used if the number of arguments is known and bigger
than 1.

It is not really all that big an optimization, it only removes the
mark stack handling. And, in fact, due to the fact that it removes
some peep optimizations it might be somewhat slower when not using the
amd64 machine code (since, as an example, APPLY/ASSIGN_LOCAL/POP is no
longer an opcode that is used in this case).

However, when using the amd64 code the assign local + pop opcode is
higly optimized, so it's not an issue that it is not merged into the
apply opcode. It is in fact more of a feature.

For that reason the code in docode.c is currently conditional.
The only code generator using it is the amd64 one.


2014-01-05 15:14:13 by Marcus Comstedt <>

Merge branch '8.0' into gobject-introspection


2013-08-16 12:57:03 by Per Hedbor <>

Since NULL is no longer possible, simplify CALL_MACHINE_CODE


2012-10-06 11:38:03 by Marcus Comstedt <>

Merge branch '7.9' into gobject-introspection


2012-07-18 12:56:57 by Arne Goedeke <>

Merge branch '7.9' into block_alloc



2012-07-16 21:09:35 by Per Hedbor <>

[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.


2011-07-10 09:25:54 by Henrik Grubbström (Grubba) <>

Interpreter mega patch: The global Pike_interpreter struct replaced with Pike_interpreter_pointer.


2011-05-15 20:09:04 by Henrik Grubbström (Grubba) <>

Compiler (amd64): Several bugfixes in the code-generator.


2011-05-12 16:49:14 by Henrik Grubbström (Grubba) <>

Compiler (amd64): Use MOV instead of LEA to save a byte.


2011-05-11 16:55:54 by Henrik Grubbström (Grubba) <>

Compiler: Support for machine-code for amd64 (aka x86_64) now seems to work.


2011-05-09 16:30:38 by Henrik Grubbström (Grubba) <>

Compiler: Implemented partial machine-code support for amd64 (aka x86_64).


2006-04-27 09:37:33 by Tor Edvardsson <>

Header file for amd64 code generation.

Rev: src/code/amd64.h:1.1