diff --git a/feed.xml b/feed.xml
index bd2fc1848..e04cc2e54 100644
--- a/feed.xml
+++ b/feed.xml
@@ -6,8 +6,8 @@
http://samsung.github.io/jerryscript/
Every instruction of bytecode consists of opcode and up to three operands. Operand (idx) can be either a “register” or a stringByte-code
literal, specifying identifier to evaluate (i.e. var //Storage idx). General structure of instruction is shown on the picture.
-

Special kinds of instructions are described below.
Arithmetic instruction can have the following structure:
-

where dst/left/right/value identify an operand.
Control instructions utilize two bytes to encode jump location. Destination offset is contained inside offset_high and offset_low fields.


Condition jump checks cond value field, which identifies an operand, and performs a jump if the operand has true value.
var //Storage idx)
Assignment instructions perform assignment of immediate value (contained inside instruction) to the operand, which is marked as idx on the picture.


Type of the immediate value is encoded in the type field of instruction. The following values are supported:
- “simple value” (see ECMA types encoding)
@@ -260,7 +260,7 @@ literal, specifying identifier to evaluate (i.e. var //Storage idx)
Exit instruction serves to stop the execution and exit with a specified status.
-

Exit instruction is employed in following cases:
- at script end (exit with “succesful” stats);
@@ -270,35 +270,35 @@ literal, specifying identifier to evaluate (i.e. var //Storage idx)
Native call instruction is used to call intrinsics. Arguments are not encoded directly inside this instruction, instead they follow it as special “meta” instructions (see the according section). Id of desired intrinsic is encoded in the intrinsic id field.


Function/constructor call are utilized to perform calls to functions and constructors. Destination operand is encoded in dst field. Operand name_idx specifies the name of the function to call. Arguments are encoded the same way as in native call instruction.


Function declarations are represented by special kind of instructions. Function name and number of arguments are located in name_idx and arg_list fields respectively.


Very similar to function declaration. But additionally contains destination (dst) field and name operand is optional, because anonymous functions are possible.


Return instructions perfrom unconditional return from function/eval code. Return value can be specified (idx field).




Meta instructions are usually utilized as continuations of other instructions. Depending on type field, meta instruction can have the following meaning:
var //Storage idx)
JavaScript delete operator is modeled with delete instruction in the bytecode. There are two types of delete instruction, applied either to element of lexical environment or to object’s property.
-

This binding instruction writes value of “this” to the dst operand.


Typeof instruction executes JavaScript operator with the same name. Result is written to the dst operand.


To specify bounds of “with” block, a pair of instructions is used. “With” instruction specifies its start. Followed by a number of arbitrary instructions, the block ends with end_with meta instruction.


Try block consists of try instruction, followed by a number of arbitrary instructions, meta instruction catch or finally or both of them, separating catch and finally blocks respectively and meta instruction end_try_catch_finally, which finishes the whole construction.


Obect declaration instruction represents object literal in JavaScript specification. It consists of op_obj_decl instruction, followed by a list of prop_data, prop_getter and prop_setter meta instructions. A series of instructions which evaluate property values can precede meta instructions. Number of meta instructions, e.g. number of properties, is specified in the prop_num field.


The strategy descibed in previous section is also used for encoding of arguments in function/constructor calls and elements in array declarations.
See the according pictures.


Virtual machine executes bytecode by interpreting instructions one by one. Bytecode is a continuous array of instructions, divided into blocks of fixed size. Main loop of interpreter calls opfunc_* for every instruction. This function returns completion value and position of the next instruction.


Instruction can have up to three operands which are represented by idx values. Meaning of idx value depends on opcode and can be the following:


The immediate value is placed in higher bits. “Simple value” is an enumeration, which consists of the following elements:
- undefined
@@ -426,7 +426,7 @@ position, ‘this’ binding, lexical environment.
Compressed pointers were introduced to save heap space. They are possible because heap size is currently limited by 256 KB, which requires 18 bits to cover it. ECMA values in heap are aligned by 8 bytes and this allows to save three more bits, so that compressed pointer consumes 15 bits only.
-

ECMA data elements are allocated in pools (pools are allocated on heap)
Chunk size of the pool is 8 bytes (reduces fragmentation).
Remaining fields of these structures are different and are shown on the picture.
-

The remaining parts are differnt:
-
LCache is a cache for property variable search requests.
-

Entry of LCache has the following layout:
- object pointer
@@ -556,7 +556,7 @@ or
Many algorithms/routines described in ECMA return a value of “completion” type, that is triplet of the following form:
-

Jerry introduces two additional completion types:
- exit - produced by exitval opcode, indicates request to finish execution