Seonghyun Kim
aa727d22a1
Use PointerFree allocatior for FunctionContextVarMap
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2026-05-14 13:33:33 +09:00
Hyukwoo Park
989e6922b6
Remove duplicated parameter-check methods
...
Signed-off-by: Hyukwoo Park <hyukwoo.park@jbnu.ac.kr>
2026-03-13 13:27:59 +09:00
kwonjeomsim
f41ec3426b
Change bottom-up to top-down check
2026-03-09 08:19:04 +09:00
kwonjeomsim
1b36b95006
Change location of optimization logic
2026-03-09 08:19:04 +09:00
kwonjeomsim
4d4cded5be
Change AtomicStringMap allocation and deal with parameters over 16
2026-03-09 08:19:04 +09:00
kwonjeomsim
5c16ae5d84
Change m_parameterUsed to bit operation and Add hashset
2026-03-09 08:19:04 +09:00
kwonjeomsim
12a37ed4d1
Change unused parameter check point
2026-03-09 08:19:04 +09:00
kwonjeomsim
fb8b241655
Add InterpretedCodeBlock::ParameterUsed info to codecache
2026-03-09 08:19:04 +09:00
kwonjeomsim
339a5d1838
Add parsing process that remove unused function parameter bytecodes
2026-03-09 08:19:04 +09:00
Seonghyun Kim
954b5bc77f
Implement basic of using variable
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2025-08-21 17:22:15 +09:00
Seonghyun Kim
9ae947d83b
Expand object property storage when create object with construct operation
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2025-06-11 14:03:47 +09:00
HyukWoo Park
5fcdf4e101
Fix generation of arguments object used in nested arrow functions and eval codes
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2024-09-05 10:38:47 +09:00
HyukWoo Park
023b7ea014
Implement general tail call optimization
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2024-02-20 17:16:10 +09:00
Seonghyun Kim
2b6e3fcc7d
Update object creation code from script
...
* Use ObjectCreatePrepare code everytime
* Implement simple inline-cache object structure in ObjectCreatePrepare
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2024-02-01 10:49:00 +09:00
Seonghyun Kim
5170135d7b
Implement generic BlockInfo vector for CodeBlock for reducing memory usage
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2024-01-02 15:09:40 +09:00
Seonghyun Kim
1b9be45708
Add Generic-BlockInfo for reducing memory usage of BlockInfo
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2023-12-28 09:31:13 +09:00
Seonghyun Kim
2c070415ba
Revise load/store CodeCache for function
...
* Store CodeCache for function in same file with Script where it is located
* Implement load function ByteCode when loading Script
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2023-11-29 13:13:46 +09:00
HyukWoo Park
5bc5fc7876
Add fine-tuned TCO condition check in parsing phase
...
* check argument count and name of callee
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2023-11-23 08:26:09 +09:00
Seonghyun Kim
67216fcac9
Replace gc-allocated std::{unordered_map,unordered_set} with robin-{map,set}
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2023-07-07 09:20:04 +09:00
HyukWoo Park
283873a291
Implement basic tail call optimization for normal function
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2023-05-03 11:18:25 +09:00
HyukWoo Park
2b31effd4f
Remove cycle dependency in CodeBlock
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2023-04-03 11:22:51 +09:00
HyukWoo Park
9f93022d78
Unlink circular dependency between runtime and parser source codes
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2023-03-28 16:17:00 +09:00
Zoltan Herczeg
1a5414a0ba
Support class static initializers
...
Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
2022-08-22 15:21:50 +09:00
HyukWoo Park
a25c6fa5e8
Add a specific API to create a Script by wrapping the source code with an anonymous function
...
* `initializeFunctionScript` API is added
* unlike dynamically created function, `initializeFunctionScript` supports debugger
* origin line offset is added for correct source code calculation in debugger
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2022-04-14 10:57:47 +09:00
Seonghyun Kim
ebf4756480
Binding function object in interpreter and compute required stack size early
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2022-03-28 14:39:52 +09:00
HyukWoo Park
1b38eeca32
Update Debugger to selectively generate debugging byte codes
...
* we can choose JS source code for debugging target
* selectively generating debugging byte code (breakpoint)
* add debugger init option (--skip=) to exclude certain source code from debugging
* rename debugger functions
* explicitly present the python version for debugger tool
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2022-03-25 17:41:23 +09:00
HyukWoo Park
bd35e41168
Add setName API of FunctionObject
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2022-01-13 13:24:09 +09:00
HyukWoo Park
e2758f5a2c
Add createFunction API with source name parameter
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2022-01-03 11:28:48 +09:00
HyukWoo Park
8c51b7c9a6
Fix bugs in debugger
...
* fix debugger to add breakpoint at the first line
* fix debugger not to insert any breakpoint when compiling dynamic code
* add some assertion code to detect undesirable cases
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2021-12-03 11:57:22 +09:00
Seonghyun Kim
8986e222f4
Fix compile error on gcc version 5
...
gcc version 5 cannot decide how many bits are require for enum well
if there is enum has type. it generates warning but we don't need to set type into enum for gcc 5
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2021-10-29 12:38:57 +09:00
SeongHyun Kim
c1a5a53bb7
Mark enum as unsigned
...
we need to mark enum as unsigned.
because processing enum in msvc is little different
ex) enum Type { A, B }
struct Foo { Type type: 1; }
Foo f; f.type = 1;
if (f.type == Type::B) { puts("failed in msvc."); }
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2021-10-28 12:21:12 +09:00
HyukWoo Park
aef7ba0c98
Update GC event callback registration
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2021-10-07 08:39:04 +09:00
Zoltan Herczeg
ff4d4d593d
Add debugger test cases for class fields
...
Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
2021-08-24 15:26:23 +09:00
Seonghyun Kim
050812963e
Implement one of nesting class private rule
...
- We need to check object value is homeobject if there is same private name on parent class
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2021-07-01 16:36:39 +09:00
Seonghyun Kim
b791bd9850
Disallow using arguments variable in class field when using eval function
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2021-02-02 10:21:45 +09:00
Seonghyun Kim
dac08ab369
Implement runtime things of class field
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2021-01-21 18:22:20 +09:00
Seonghyun Kim
f0c64aa74a
Implement super keyword in class static field init
...
* Implement Open, Close env Bytecode for this
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2021-01-13 17:06:44 +09:00
HyukWoo Park
29c70f7532
Update clang-format version to 6.0
...
* coding convention fixed following the new clang-format
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-12-18 11:13:15 +09:00
HyukWoo Park
c73a012d77
Fix uninitialized member variables found by cppcheck
...
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-10-12 14:12:27 +09:00
Seonghyun Kim
4e9349b999
Implement ReloadableString
...
* turn off ALWAYS_INLINE in small config
* turn off hidden class transition table in small config
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2020-08-13 14:07:37 +09:00
HyukWoo Park
f56a557ff5
Reduce memory allocation during bytecode generation
...
* ByteCodeBlock does not hold location data info anymore
* location data of each bytecode is manually allocated only for stack-tracing or debugger mode
* duplicated String allocation for source code is removed
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-08-06 16:23:06 +09:00
HyukWoo Park
436fac4423
Implement CodeCache for CodeBlock tree
...
* update read/write modules for CodeCache
* store and load CodeBlock tree
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-07-30 10:44:40 +09:00
HyukWoo Park
773007bec6
Each InterpretedCodeBlock has its children in a vector
...
* reduce the whole size of InterpretedCodeBlock instances
* iterate fastly on children
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-07-23 15:19:05 +09:00
HyukWoo Park
586082c1d7
Fix NativeCodeBlock to directly store the native function point
...
* remove CallNativeFunctionData
* FunctionTemplate and native APIs allocate ExtendedNativeFunctionObject in itself
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-07-16 12:51:00 +09:00
HyukWoo Park
747803bf81
Add InterpretedCodeBlockWithRareData
...
* extract infrequently used m_rareData member from InterpretedCodeBlock
* InterpretedCodeBlockWithRareData handles InterpretedCodeBlockRareData inside itself
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-07-08 16:56:44 +09:00
HyukWoo Park
2fe9333814
Divide CodeBlock into NativeCodeBlock and InterpretedCodeBlock
...
* NativeCodeBlock is newly added for NativeFunctionObject
* all interpreter-related info is moved into InterpretedCodeBlock
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-07-08 16:56:44 +09:00
HyukWoo Park
cd09ccbb07
Rename ASTContext structure
...
* rename to ASTScopeContext and ASTBlockContext
* remove redundant ASTScopeContext parameter
Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
2020-07-06 10:07:56 +09:00
Seonghyun Kim
4f3774be0c
Implement tagged-template cache on CodeBlock according to GetTemplateObject(templateLiteral) on spec
...
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2020-05-27 17:09:09 +09:00
Seonghyun Kim
fe0c65118c
* When evaluate super.foo = 1 we should throw TypeError.
...
when PutValue is failed + isStrict('use strict` or class method).
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2020-05-27 17:09:09 +09:00
Seonghyun Kim
323c2dca20
Each function parameter should have own declarative environment.
...
but I don't want to add extra bytecodes for this.
and It is only needed when there is direct eval operation.
so I wrap each parameter block with small arrow function.
Signed-off-by: Seonghyun Kim <sh8281.kim@samsung.com>
2020-05-18 15:18:10 +09:00