mirror of
https://gitee.com/openharmony/arkcompiler_ets_runtime
synced 2024-10-07 08:03:29 +00:00
f86405e0ca
Issue: https://gitee.com/openharmony/arkcompiler_runtime_core/issues/IA8WK8 1. adapt interpreter for the new isa callruntime.SuperCallForwardAllArgs 2. adapt asm-interpreter for callruntime.SuperCallForwardAllArgs 3. adapt jit/aot for callruntime.SuperCallForwardAllArgs 4. adapt baseline jit for callruntime.SuperCallForwardAllArgs 5. remove the constraint for functions with zero icSlotSize so that the default ctor for derivative class can be compiled into native code. Signed-off-by: qiuyu <qiuyu22@huawei.com> Change-Id: I346da77403de0d14f53532bc51c40a3ca27fc689
281 lines
20 KiB
C++
281 lines
20 KiB
C++
/*
|
|
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
#ifndef ECMASCRIPT_COMPILER_BASELINE_BASELINE_COMPILER_BUILTINS_H
|
|
#define ECMASCRIPT_COMPILER_BASELINE_BASELINE_COMPILER_BUILTINS_H
|
|
namespace panda::ecmascript::kungfu {
|
|
|
|
#define BASELINE_COMPILER_BUILTIN_LIST(V) \
|
|
V(BaselineTryLdGLobalByNameImm8ID16) \
|
|
V(BaselineStToGlobalRecordImm16ID16) \
|
|
V(BaselineLdaStrID16) \
|
|
V(BaselineCallArg1Imm8V8) \
|
|
V(BaselineLdsymbol) \
|
|
V(BaselineLdglobal) \
|
|
V(BaselinePoplexenv) \
|
|
V(BaselineGetunmappedargs) \
|
|
V(BaselineAsyncfunctionenter) \
|
|
V(BaselineCreateasyncgeneratorobjV8) \
|
|
V(BaselineDebugger) \
|
|
V(BaselineGetpropiterator) \
|
|
V(BaselineGetiteratorImm8) \
|
|
V(BaselineGetiteratorImm16) \
|
|
V(BaselineCloseiteratorImm8V8) \
|
|
V(BaselineCloseiteratorImm16V8) \
|
|
V(BaselineAsyncgeneratorresolveV8V8V8) \
|
|
V(BaselineCreateemptyobject) \
|
|
V(BaselineCreateemptyarrayImm8) \
|
|
V(BaselineCreateemptyarrayImm16) \
|
|
V(BaselineCreategeneratorobjV8) \
|
|
V(BaselineCreateiterresultobjV8V8) \
|
|
V(BaselineCreateobjectwithexcludedkeysImm8V8V8) \
|
|
V(BaselineCallthis0Imm8V8) \
|
|
V(BaselineCreatearraywithbufferImm8Id16) \
|
|
V(BaselineCreatearraywithbufferImm16Id16) \
|
|
V(BaselineCallthis1Imm8V8V8) \
|
|
V(BaselineCallthis2Imm8V8V8V8) \
|
|
V(BaselineCreateobjectwithbufferImm8Id16) \
|
|
V(BaselineCreateobjectwithbufferImm16Id16) \
|
|
V(BaselineCreateregexpwithliteralImm8Id16Imm8) \
|
|
V(BaselineCreateregexpwithliteralImm16Id16Imm8) \
|
|
V(BaselineNewobjapplyImm8V8) \
|
|
V(BaselineNewobjapplyImm16V8) \
|
|
V(BaselineNewlexenvImm8) \
|
|
V(BaselineNewlexenvwithnameImm8Id16) \
|
|
V(BaselineAdd2Imm8V8) \
|
|
V(BaselineSub2Imm8V8) \
|
|
V(BaselineMul2Imm8V8) \
|
|
V(BaselineDiv2Imm8V8) \
|
|
V(BaselineMod2Imm8V8) \
|
|
V(BaselineEqImm8V8) \
|
|
V(BaselineNoteqImm8V8) \
|
|
V(BaselineLessImm8V8) \
|
|
V(BaselineLesseqImm8V8) \
|
|
V(BaselineGreaterImm8V8) \
|
|
V(BaselineGreatereqImm8V8) \
|
|
V(BaselineShl2Imm8V8) \
|
|
V(BaselineShr2Imm8V8) \
|
|
V(BaselineAshr2Imm8V8) \
|
|
V(BaselineAnd2Imm8V8) \
|
|
V(BaselineOr2Imm8V8) \
|
|
V(BaselineXor2Imm8V8) \
|
|
V(BaselineExpImm8V8) \
|
|
V(BaselineTypeofImm8) \
|
|
V(BaselineTypeofImm16) \
|
|
V(BaselineTonumberImm8) \
|
|
V(BaselineTonumericImm8) \
|
|
V(BaselineNegImm8) \
|
|
V(BaselineNotImm8) \
|
|
V(BaselineIncImm8) \
|
|
V(BaselineDecImm8) \
|
|
V(BaselineIsinImm8V8) \
|
|
V(BaselineInstanceofImm8V8) \
|
|
V(BaselineStrictnoteqImm8V8) \
|
|
V(BaselineStricteqImm8V8) \
|
|
V(BaselineIstrue) \
|
|
V(BaselineIsfalse) \
|
|
V(BaselineCallthis3Imm8V8V8V8V8) \
|
|
V(BaselineCallthisrangeImm8Imm8V8) \
|
|
V(BaselineSupercallthisrangeImm8Imm8V8) \
|
|
V(BaselineSupercallarrowrangeImm8Imm8V8) \
|
|
V(BaselineDefinefuncImm8Id16Imm8) \
|
|
V(BaselineDefinefuncImm16Id16Imm8) \
|
|
V(BaselineDefinemethodImm8Id16Imm8) \
|
|
V(BaselineDefinemethodImm16Id16Imm8) \
|
|
V(BaselineCallarg0Imm8) \
|
|
V(BaselineSupercallspreadImm8V8) \
|
|
V(BaselineCallRuntimeSupercallforwardallargsPrefV8) \
|
|
V(BaselineApplyImm8V8V8) \
|
|
V(BaselineCallargs2Imm8V8V8) \
|
|
V(BaselineCallargs3Imm8V8V8V8) \
|
|
V(BaselineCallrangeImm8Imm8V8) \
|
|
V(BaselineLdexternalmodulevarImm8) \
|
|
V(BaselineLdthisbynameImm8Id16) \
|
|
V(BaselineDefinegettersetterbyvalueV8V8V8V8) \
|
|
V(BaselineLdthisbynameImm16Id16) \
|
|
V(BaselineStthisbynameImm8Id16) \
|
|
V(BaselineStthisbynameImm16Id16) \
|
|
V(BaselineLdthisbyvalueImm8) \
|
|
V(BaselineLdthisbyvalueImm16) \
|
|
V(BaselineStthisbyvalueImm8V8) \
|
|
V(BaselineStthisbyvalueImm16V8) \
|
|
V(BaselineDynamicimport) \
|
|
V(BaselineDefineclasswithbufferImm8Id16Id16Imm16V8) \
|
|
V(BaselineDefineclasswithbufferImm16Id16Id16Imm16V8) \
|
|
V(BaselineResumegenerator) \
|
|
V(BaselineGetresumemod) \
|
|
V(BaselineGettemplateobjectImm8) \
|
|
V(BaselineGettemplateobjectImm16) \
|
|
V(BaselineGetnextpropnameV8) \
|
|
V(BaselineSetobjectwithprotoImm8V8) \
|
|
V(BaselineDelobjpropV8) \
|
|
V(BaselineSuspendgeneratorV8) \
|
|
V(BaselineAsyncfunctionawaituncaughtV8) \
|
|
V(BaselineCopydatapropertiesV8) \
|
|
V(BaselineStarrayspreadV8V8) \
|
|
V(BaselineSetobjectwithprotoImm16V8) \
|
|
V(BaselineLdobjbyvalueImm8V8) \
|
|
V(BaselineLdobjbyvalueImm16V8) \
|
|
V(BaselineStobjbyvalueImm8V8V8) \
|
|
V(BaselineStobjbyvalueImm16V8V8) \
|
|
V(BaselineStownbyvalueImm8V8V8) \
|
|
V(BaselineStownbyvalueImm16V8V8) \
|
|
V(BaselineLdsuperbyvalueImm8V8) \
|
|
V(BaselineLdsuperbyvalueImm16V8) \
|
|
V(BaselineStsuperbyvalueImm8V8V8) \
|
|
V(BaselineStsuperbyvalueImm16V8V8) \
|
|
V(BaselineLdobjbyindexImm8Imm16) \
|
|
V(BaselineLdobjbyindexImm16Imm16) \
|
|
V(BaselineStobjbyindexImm8V8Imm16) \
|
|
V(BaselineStobjbyindexImm16V8Imm16) \
|
|
V(BaselineStownbyindexImm8V8Imm16) \
|
|
V(BaselineStownbyindexImm16V8Imm16) \
|
|
V(BaselineAsyncfunctionresolveV8) \
|
|
V(BaselineAsyncfunctionrejectV8) \
|
|
V(BaselineCopyrestargsImm8) \
|
|
V(BaselineLdlexvarImm4Imm4) \
|
|
V(BaselineStlexvarImm4Imm4) \
|
|
V(BaselineGetmodulenamespaceImm8) \
|
|
V(BaselineStmodulevarImm8) \
|
|
V(BaselineTryldglobalbynameImm16Id16) \
|
|
V(BaselineTrystglobalbynameImm8Id16) \
|
|
V(BaselineTrystglobalbynameImm16Id16) \
|
|
V(BaselineLdglobalvarImm16Id16) \
|
|
V(BaselineStglobalvarImm16Id16) \
|
|
V(BaselineLdobjbynameImm8Id16) \
|
|
V(BaselineLdobjbynameImm16Id16) \
|
|
V(BaselineStobjbynameImm8Id16V8) \
|
|
V(BaselineStobjbynameImm16Id16V8) \
|
|
V(BaselineStownbynameImm8Id16V8) \
|
|
V(BaselineStownbynameImm16Id16V8) \
|
|
V(BaselineLdsuperbynameImm8Id16) \
|
|
V(BaselineLdsuperbynameImm16Id16) \
|
|
V(BaselineStsuperbynameImm8Id16V8) \
|
|
V(BaselineStsuperbynameImm16Id16V8) \
|
|
V(BaselineLdlocalmodulevarImm8) \
|
|
V(BaselineStconsttoglobalrecordImm16Id16) \
|
|
V(BaselineStownbyvaluewithnamesetImm8V8V8) \
|
|
V(BaselineStownbyvaluewithnamesetImm16V8V8) \
|
|
V(BaselineStownbynamewithnamesetImm8Id16V8) \
|
|
V(BaselineStownbynamewithnamesetImm16Id16V8) \
|
|
V(BaselineLdbigintId16) \
|
|
V(BaselineFldaiImm64) \
|
|
V(BaselineReturn) \
|
|
V(BaselineLdlexvarImm8Imm8) \
|
|
V(BaselineStlexvarImm8Imm8) \
|
|
V(BaselineJnstricteqV8Imm16) \
|
|
V(BaselineAsyncgeneratorrejectV8) \
|
|
V(BaselineSetgeneratorstateImm8) \
|
|
V(BaselineGetasynciteratorImm8) \
|
|
V(BaselineLdPrivatePropertyImm8Imm16Imm16) \
|
|
V(BaselineStPrivatePropertyImm8Imm16Imm16V8) \
|
|
V(BaselineTestInImm8Imm16Imm16) \
|
|
V(BaselineDeprecatedLdlexenvPrefNone) \
|
|
V(BaselineWideCreateobjectwithexcludedkeysPrefImm16V8V8) \
|
|
V(BaselineThrowPrefNone) \
|
|
V(BaselineDeprecatedPoplexenvPrefNone) \
|
|
V(BaselineWideNewobjrangePrefImm16V8) \
|
|
V(BaselineThrowNotexistsPrefNone) \
|
|
V(BaselineDeprecatedGetiteratornextPrefV8V8) \
|
|
V(BaselineWideNewlexenvPrefImm16) \
|
|
V(BaselineThrowPatternnoncoerciblePrefNone) \
|
|
V(BaselineDeprecatedCreatearraywithbufferPrefImm16) \
|
|
V(BaselineWideNewlexenvwithnamePrefImm16Id16) \
|
|
V(BaselineThrowDeletesuperpropertyPrefNone) \
|
|
V(BaselineDeprecatedCreateobjectwithbufferPrefImm16) \
|
|
V(BaselineNewobjrangeImm8Imm8V8) \
|
|
V(BaselineNewobjrangeImm16Imm8V8) \
|
|
V(BaselineWideCallrangePrefImm16V8) \
|
|
V(BaselineThrowConstassignmentPrefV8) \
|
|
V(BaselineDeprecatedTonumberPrefV8) \
|
|
V(BaselineWideCallthisrangePrefImm16V8) \
|
|
V(BaselineThrowIfnotobjectPrefV8) \
|
|
V(BaselineDeprecatedTonumericPrefV8) \
|
|
V(BaselineWideSupercallthisrangePrefImm16V8) \
|
|
V(BaselineThrowUndefinedifholePrefV8V8) \
|
|
V(BaselineThrowUndefinedifholewithnamePrefId16) \
|
|
V(BaselineDeprecatedNegPrefV8) \
|
|
V(BaselineWideSupercallarrowrangePrefImm16V8) \
|
|
V(BaselineThrowIfsupernotcorrectcallPrefImm8) \
|
|
V(BaselineDeprecatedNotPrefV8) \
|
|
V(BaselineWideLdobjbyindexPrefImm32) \
|
|
V(BaselineThrowIfsupernotcorrectcallPrefImm16) \
|
|
V(BaselineDeprecatedIncPrefV8) \
|
|
V(BaselineWideStobjbyindexPrefV8Imm32) \
|
|
V(BaselineDeprecatedDecPrefV8) \
|
|
V(BaselineWideStownbyindexPrefV8Imm32) \
|
|
V(BaselineDeprecatedCallarg0PrefV8) \
|
|
V(BaselineWideCopyrestargsPrefImm16) \
|
|
V(BaselineDeprecatedCallarg1PrefV8V8) \
|
|
V(BaselineWideLdlexvarPrefImm16Imm16) \
|
|
V(BaselineDeprecatedCallargs2PrefV8V8V8) \
|
|
V(BaselineWideStlexvarPrefImm16Imm16) \
|
|
V(BaselineDeprecatedCallargs3PrefV8V8V8V8) \
|
|
V(BaselineWideGetmodulenamespacePrefImm16) \
|
|
V(BaselineDeprecatedCallrangePrefImm16V8) \
|
|
V(BaselineWideStmodulevarPrefImm16) \
|
|
V(BaselineDeprecatedCallspreadPrefV8V8V8) \
|
|
V(BaselineWideLdlocalmodulevarPrefImm16) \
|
|
V(BaselineDeprecatedCallthisrangePrefImm16V8) \
|
|
V(BaselineWideLdexternalmodulevarPrefImm16) \
|
|
V(BaselineDeprecatedDefineclasswithbufferPrefId16Imm16Imm16V8V8) \
|
|
V(BaselineWideLdpatchvarPrefImm16) \
|
|
V(BaselineDeprecatedResumegeneratorPrefV8) \
|
|
V(BaselineWideStpatchvarPrefImm16) \
|
|
V(BaselineDeprecatedGetresumemodePrefV8) \
|
|
V(BaselineDeprecatedGettemplateobjectPrefV8) \
|
|
V(BaselineDeprecatedDelobjpropPrefV8V8) \
|
|
V(BaselineDeprecatedSuspendgeneratorPrefV8V8) \
|
|
V(BaselineDeprecatedAsyncfunctionawaituncaughtPrefV8V8) \
|
|
V(BaselineDeprecatedCopydatapropertiesPrefV8V8) \
|
|
V(BaselineDeprecatedSetobjectwithprotoPrefV8V8) \
|
|
V(BaselineDeprecatedLdobjbyvaluePrefV8V8) \
|
|
V(BaselineDeprecatedLdsuperbyvaluePrefV8V8) \
|
|
V(BaselineDeprecatedLdobjbyindexPrefV8Imm32) \
|
|
V(BaselineDeprecatedAsyncfunctionresolvePrefV8V8V8) \
|
|
V(BaselineDeprecatedAsyncfunctionrejectPrefV8V8V8) \
|
|
V(BaselineDeprecatedStlexvarPrefImm4Imm4V8) \
|
|
V(BaselineDeprecatedStlexvarPrefImm8Imm8V8) \
|
|
V(BaselineDeprecatedStlexvarPrefImm16Imm16V8) \
|
|
V(BaselineDeprecatedGetmodulenamespacePrefId32) \
|
|
V(BaselineDeprecatedStmodulevarPrefId32) \
|
|
V(BaselineDeprecatedLdobjbynamePrefId32V8) \
|
|
V(BaselineDeprecatedLdsuperbynamePrefId32V8) \
|
|
V(BaselineDeprecatedLdmodulevarPrefId32Imm8) \
|
|
V(BaselineDeprecatedStconsttoglobalrecordPrefId32) \
|
|
V(BaselineDeprecatedStlettoglobalrecordPrefId32) \
|
|
V(BaselineDeprecatedStclasstoglobalrecordPrefId32) \
|
|
V(BaselineDeprecatedLdhomeobjectPrefNone) \
|
|
V(BaselineDeprecatedCreateobjecthavingmethodPrefImm16) \
|
|
V(BaselineDeprecatedDynamicimportPrefV8) \
|
|
V(BaselineCallRuntimeNotifyConcurrentResultPrefNone) \
|
|
V(BaselineDefineFieldByNameImm8Id16V8) \
|
|
V(BaselineDefinePropertyByNameImm8Id16V8) \
|
|
V(BaselineCallRuntimeDefineFieldByValuePrefImm8V8V8) \
|
|
V(BaselineCallRuntimeDefineFieldByIndexPrefImm8Imm32V8) \
|
|
V(BaselineCallRuntimeToPropertyKeyPrefNone) \
|
|
V(BaselineCallRuntimeCreatePrivatePropertyPrefImm16Id16) \
|
|
V(BaselineCallRuntimeDefinePrivatePropertyPrefImm8Imm16Imm16V8) \
|
|
V(BaselineCallRuntimeCallInitPrefImm8V8) \
|
|
V(BaselineCallRuntimeDefineSendableClassPrefImm16Id16Id16Imm16V8) \
|
|
V(BaselineCallRuntimeLdSendableClassPrefImm16) \
|
|
V(BaselineCallRuntimeIstruePrefImm8) \
|
|
V(BaselineCallRuntimeIsfalsePrefImm8) \
|
|
V(BaselineReturnundefined) \
|
|
V(BaselineExceptionHandler) \
|
|
V(BaselineUpdateHotness) \
|
|
|
|
} // namespace panda::ecmascript::kungfu
|
|
#endif // ECMASCRIPT_COMPILER_BASELINE_BASELINE_COMPILER_BUILTINS_H
|