* treat variable in catch() as let
* add lexical environment record data into global environment for saving global permanently
* re-implement variable access bytecode generation
* re-implement class initialize operation
* re-implement global variable access bytecode for support lexcial variables in global
* fix bugs related with per-iteration lexical environment in for-statement
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
- Store lexcial block informantion in InterpretedCodeBlock.
- If lexcial block has no lexcial variables, we should collapse the block.
- If there is no heap-allocated variables in lexcial environment, we can skip allocation of the environment.
- Implement Indexed storage for lexcial environment.
- Allocate lexcial variables in function stack storage if possible.
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
* in most cases, parsing and bytecode generation process runs sequentially
* parsing error throws SyntaxError exception inside sandbox and this exception will be catched by the sandbox
* clear up some complicated code
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
State without Context is rare, and the merged structure consumes less amount of memory.
Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
2. divide CodeBlock into CodeBlock and InterpretedCodeBlock for saving memory
3. expand SCANNER_RESULT_POOL_INITIAL_SIZE to 128
4. connect String -> AtomicString with remaining space of String::m_tag
5. optimize Function.bind
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. alloc esprima::Error as Non-GC type.
- it can be thrown. but, bdwgc can not see try-catch variable area.
3. Use own context when eval, function are invoked.
4. implement fake-Realm class for v8 vender test
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
- add m_isExplicitlyDeclaredOrParameterName into name info in ASTScopeContext
- add m_isMutable into IdentifierRecord struct
- add ThrowStaticExcpetion opcode in indexed-mode
- add throw exception code in storeByName operation
2. when evaluate delete operation on member variable, must evaluate toString operation once for name even if exception throws
3. in strict mode, Decimals with leading zero literals are not allowed
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. merge DeclareFunctionDeclaration, DeclareFunctionDeclarationsInGlobal into DeclareFunctionDeclarations
3. implement EnvironmentRecord::initializeBinding for initialize function decl.
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
there is right version of hasBinding for createMutableBinding in createMutableBinding already
2. builtin Function ctor should process "} {" input correctly
3. exclude more spider-monkey vendor test
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. optimize function calling performance
- change local variable binding order (this, function name first)
- revise opcode table init method
3. remove OpcodeTable::m_reverseTable
4. use shared thrower JSGetterSetter instance for arguments, function object
5. revise Function.prototype.toString for to print function's source
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. implement DeclareFunctionDeclarationsInGlobal, ReturnFunctionSlowCase
3. remove m_canUseDisalignedRegister in ByteCodeGenerator
4. remove ExectuionResult in ExecutionState
5. do multiple array initialization in ArrayDefineOwnPropertyOperation
6. revise FunctionObject::call, UpdateExpressions
7. fix wrong global codeBlock decision in GlobalObject::eval
8. arguments binding can be added in non-indexed mode
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. expand register limit to uint16_t
3. introduce skip copying from stack allocated local variable to interpreter register file
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. implement selective clearing Stack
- only blockes have object, array, new expression are cleared by ClearStack function now
3. improve get object inline cache
4. remove CodeBlock::hasNonConfiguableNameOnGlobal
5. add thisValue in ExecutionState
6. optimize Value::abstractEqualsToSlowCase
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. store ByteCodeLOC in ByteCodeBlock & lazy store loc
3. optimize builtin Array.prototype.splice
4. optimize Value::toNumberSlowCase
5. optimize arguments object
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
2. remove ast implicitly when use less avoiding memory leak
3. change ByteCodeBlockData gc type into atomic
4. add literal info into ByteCodeBlock
5. force enable eager sweep
6. divide GC_mark_and_push_custom into GC_mark_and_push_custom_iterable and GC_mark_and_push_custom
Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>