mirror of
https://github.com/Samsung/escargot.git
synced 2026-06-22 10:01:50 +00:00
Rename tagging operations
* rename tagging operations to clearly recognize typeTag and tag (vtable address) * add global tag values for ScriptSimpleFunctionObject Signed-off-by: HyukWoo Park <hyukwoo.park@samsung.com>
This commit is contained in:
parent
de11a8a032
commit
d231bc0800
15 changed files with 115 additions and 66 deletions
|
|
@ -80,38 +80,34 @@ NEVER_INLINE void ScriptFunctionObject::generateByteCodeBlock(ExecutionState& st
|
|||
currentCodeSizeTotal += interpretedCodeBlock()->byteCodeBlock()->memoryAllocatedSize();
|
||||
|
||||
|
||||
if (hasTag(g_scriptFunctionObjectTag)) {
|
||||
if (hasVTag(g_scriptFunctionObjectTag)) {
|
||||
auto cb = m_codeBlock->asInterpretedCodeBlock();
|
||||
auto byteCb = cb->byteCodeBlock();
|
||||
size_t registerFileSize = byteCb->m_requiredTotalRegisterNumber;
|
||||
bool isStrict = cb->isStrict();
|
||||
bool shouldClearStack = byteCb->m_shouldClearStack;
|
||||
|
||||
#define DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH(opt1, opt2) \
|
||||
if (registerFileSize <= 4) { \
|
||||
writeTag(ScriptSimpleFunctionObject<opt1, opt2, 4>().getTag()); \
|
||||
} else if (registerFileSize <= 8) { \
|
||||
writeTag(ScriptSimpleFunctionObject<opt1, opt2, 8>().getTag()); \
|
||||
} else if (registerFileSize <= 16) { \
|
||||
writeTag(ScriptSimpleFunctionObject<opt1, opt2, 16>().getTag()); \
|
||||
} else { \
|
||||
writeTag(ScriptSimpleFunctionObject<opt1, opt2, 24>().getTag()); \
|
||||
if (cb->canAllocateEnvironmentOnStack() && registerFileSize <= 24) {
|
||||
#define DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH(STRICT, CLEAR, isStrict, isClear, SIZE) \
|
||||
if (registerFileSize <= SIZE) { \
|
||||
writeVTag(g_scriptSimpleFunctionObject##STRICT##CLEAR##SIZE##Tag); \
|
||||
return; \
|
||||
}
|
||||
|
||||
if (cb->canAllocateEnvironmentOnStack() && registerFileSize <= 24) {
|
||||
if (isStrict) {
|
||||
if (shouldClearStack) {
|
||||
DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH(true, true);
|
||||
FOR_EACH_STRICT_CLEAR_SCRIPTSIMPLEFUNCTION(DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH);
|
||||
} else {
|
||||
DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH(true, false);
|
||||
FOR_EACH_STRICT_NONCLEAR_SCRIPTSIMPLEFUNCTION(DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH);
|
||||
}
|
||||
} else {
|
||||
if (shouldClearStack) {
|
||||
DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH(false, true);
|
||||
FOR_EACH_NONSTRICT_CLEAR_SCRIPTSIMPLEFUNCTION(DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH);
|
||||
} else {
|
||||
DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH(false, false);
|
||||
FOR_EACH_NONSTRICT_NONCLEAR_SCRIPTSIMPLEFUNCTION(DEFINE_SCRIPTSIMPLEFUNCTION_BRANCH);
|
||||
}
|
||||
}
|
||||
ASSERT_NOT_REACHED();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue