mirror of
https://gitee.com/openharmony/arkcompiler_ets_runtime
synced 2024-10-07 16:13:49 +00:00
implments call this
Signed-off-by: sunzhe23 <sunzhe23@huawei.com>
This commit is contained in:
parent
45a0088a30
commit
9c21a1055e
@ -19,9 +19,9 @@
|
||||
|
||||
namespace panda::ecmascript::aarch64 {
|
||||
Register ExtendedAssembler::ghcJSCallDispacherArgs_[JS_CALL_DISPATCHER_ARGS_COUNT] =
|
||||
{ X19, FP, X20, X21, X22, X23, X24, X25 };
|
||||
{ X19, FP, X20, X21, X22, X23, X24, X25, X26 };
|
||||
Register ExtendedAssembler::cppJSCallDispacherArgs_[JS_CALL_DISPATCHER_ARGS_COUNT] =
|
||||
{ X0, FP, X1, X2, X3, X4, X5, INVALID_REG };
|
||||
{ X0, FP, X1, X2, X3, X4, X5, INVALID_REG, INVALID_REG };
|
||||
|
||||
void ExtendedAssembler::CalleeSave()
|
||||
{
|
||||
|
@ -19,9 +19,9 @@
|
||||
|
||||
namespace panda::ecmascript::x64 {
|
||||
Register ExtendedAssembler::ghcJSCallDispacherArgs_[JS_CALL_DISPATCHER_ARGS_COUNT] =
|
||||
{ r13, rbp, r12, rbx, r14, rsi, rdi, r8 };
|
||||
{ r13, rbp, r12, rbx, r14, rsi, rdi, r8, r9 };
|
||||
Register ExtendedAssembler::cppJSCallDispacherArgs_[JS_CALL_DISPATCHER_ARGS_COUNT] =
|
||||
{ rdi, rbp, rsi, rdx, rcx, r8, r9, rInvalid };
|
||||
{ rdi, rbp, rsi, rdx, rcx, r8, r9, rInvalid, rInvalid };
|
||||
|
||||
void ExtendedAssembler::PushAlignBytes()
|
||||
{
|
||||
|
@ -485,6 +485,7 @@ enum class CallDispatchInputs : size_t {
|
||||
ARG0,
|
||||
ARG1,
|
||||
ARG2,
|
||||
ARG3,
|
||||
NUM_OF_INPUTS,
|
||||
|
||||
ARGC = ARG0,
|
||||
|
@ -1394,7 +1394,7 @@ BytecodeInfo BytecodeCircuitBuilder::GetBytecodeInfo(const uint8_t *pc)
|
||||
case EcmaBytecode::TONUMERIC_IMM8: {
|
||||
break;
|
||||
}
|
||||
case EcmaBytecode::DYNAMICIMPORT_V8: {
|
||||
case EcmaBytecode::DYNAMICIMPORT: {
|
||||
uint16_t v0 = READ_INST_8_0();
|
||||
info.inputs.emplace_back(VirtualRegister(v0));
|
||||
break;
|
||||
|
@ -766,14 +766,14 @@ DEF_CALL_SIGNATURE(PushCallArgsAndDispatchNative)
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_SIGNATURE(PushCallArgsAndDispatchNative)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallArgs0AndDispatch)
|
||||
DEF_CALL_SIGNATURE(PushCallArg0AndDispatch)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArgs0AndDispatch)
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArg0AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallArgs1AndDispatch)
|
||||
DEF_CALL_SIGNATURE(PushCallArg1AndDispatch)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArgs1AndDispatch)
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArg1AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallArgs2AndDispatch)
|
||||
@ -786,6 +786,26 @@ DEF_CALL_SIGNATURE(PushCallArgs3AndDispatch)
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallArgs3AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallThisArg0AndDispatch)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArg0AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallThisArg1AndDispatch)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArg1AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallThisArgs2AndDispatch)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArgs2AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallThisArgs3AndDispatch)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_SIGNATURE(PushCallThisArgs3AndDispatch)
|
||||
}
|
||||
|
||||
DEF_CALL_SIGNATURE(PushCallRangeAndDispatchNative)
|
||||
{
|
||||
PUSH_CALL_ARGS_AND_DISPATCH_NATIVE_RANGE_SIGNATURE(PushCallRangeAndDispatchNative)
|
||||
|
@ -324,14 +324,18 @@ private:
|
||||
V(GeneratorReEnterAsmInterp) \
|
||||
V(CallRuntimeWithArgv) \
|
||||
V(OptimizedCallOptimized) \
|
||||
V(PushCallArgs0AndDispatch) \
|
||||
V(PushCallArg0AndDispatch) \
|
||||
V(PushCallArgsAndDispatchNative) \
|
||||
V(PushCallArgs1AndDispatch) \
|
||||
V(PushCallArg1AndDispatch) \
|
||||
V(PushCallArgs2AndDispatch) \
|
||||
V(PushCallArgs3AndDispatch) \
|
||||
V(PushCallRangeAndDispatch) \
|
||||
V(PushCallRangeAndDispatchNative) \
|
||||
V(PushCallThisRangeAndDispatch) \
|
||||
V(PushCallRangeAndDispatch) \
|
||||
V(PushCallRangeAndDispatchNative) \
|
||||
V(PushCallThisRangeAndDispatch) \
|
||||
V(PushCallThisArg0AndDispatch) \
|
||||
V(PushCallThisArg1AndDispatch) \
|
||||
V(PushCallThisArgs2AndDispatch) \
|
||||
V(PushCallThisArgs3AndDispatch) \
|
||||
V(PushCallNewAndDispatchNative) \
|
||||
V(PushCallNewAndDispatch) \
|
||||
V(CallGetter) \
|
||||
|
@ -3046,14 +3046,14 @@ DECLARE_ASM_HANDLER(HandleStobjbynameImm8Id16V8)
|
||||
Bind(&tryFastPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
result = SetPropertyByName(glue, receiver, propKey, acc, false);
|
||||
Branch(TaggedIsHole(*result), &slowPath, &checkException);
|
||||
}
|
||||
Bind(&slowPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef ret = CallRuntime(glue, RTSTUB_ID(StoreICByName),
|
||||
{ profileTypeInfo, receiver, propKey, acc, IntToTaggedTypeNGC(slotId) });
|
||||
result = ChangeTaggedPointerToInt64(ret);
|
||||
@ -3083,14 +3083,14 @@ DECLARE_ASM_HANDLER(HandleStobjbynameImm16Id16V8)
|
||||
Bind(&tryFastPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
result = SetPropertyByName(glue, receiver, propKey, acc, false);
|
||||
Branch(TaggedIsHole(*result), &slowPath, &checkException);
|
||||
}
|
||||
Bind(&slowPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef ret = CallRuntime(glue, RTSTUB_ID(StoreICByName),
|
||||
{ profileTypeInfo, receiver, propKey, acc, IntToTaggedTypeNGC(slotId) });
|
||||
result = ChangeTaggedPointerToInt64(ret);
|
||||
@ -3098,7 +3098,7 @@ DECLARE_ASM_HANDLER(HandleStobjbynameImm16Id16V8)
|
||||
}
|
||||
Bind(&checkException);
|
||||
{
|
||||
CHECK_EXCEPTION(*result, INT_PTR(STOBJBYNAME_IMM8_ID16_V8));
|
||||
CHECK_EXCEPTION(*result, INT_PTR(STOBJBYNAME_IMM16_ID16_V8));
|
||||
}
|
||||
}
|
||||
|
||||
@ -3192,7 +3192,7 @@ DECLARE_ASM_HANDLER(HandleStownbynameImm8Id16V8)
|
||||
{
|
||||
auto env = GetEnvironment();
|
||||
GateRef stringId = ReadInst16_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef receiver = GetVregValue(sp, ZExtInt8ToPtr(ReadInst8_3(pc)));
|
||||
DEFVARIABLE(result, VariableType::INT64(), Hole(VariableType::INT64()));
|
||||
Label checkResult(env);
|
||||
@ -3230,7 +3230,7 @@ DECLARE_ASM_HANDLER(HandleStownbynameImm16Id16V8)
|
||||
{
|
||||
auto env = GetEnvironment();
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef receiver = GetVregValue(sp, ZExtInt8ToPtr(ReadInst8_4(pc)));
|
||||
DEFVARIABLE(result, VariableType::INT64(), Hole(VariableType::INT64()));
|
||||
Label checkResult(env);
|
||||
@ -3269,7 +3269,7 @@ DECLARE_ASM_HANDLER(HandleStownbynamewithnamesetImm8Id16V8)
|
||||
auto env = GetEnvironment();
|
||||
GateRef stringId = ReadInst16_1(pc);
|
||||
GateRef receiver = GetVregValue(sp, ZExtInt8ToPtr(ReadInst8_3(pc)));
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
Label isJSObject(env);
|
||||
Label notJSObject(env);
|
||||
Label notClassConstructor(env);
|
||||
@ -3311,7 +3311,7 @@ DECLARE_ASM_HANDLER(HandleStownbynamewithnamesetImm16Id16V8)
|
||||
auto env = GetEnvironment();
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef receiver = GetVregValue(sp, ZExtInt8ToPtr(ReadInst8_4(pc)));
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
Label isJSObject(env);
|
||||
Label notJSObject(env);
|
||||
Label notClassConstructor(env);
|
||||
@ -3389,7 +3389,7 @@ DECLARE_ASM_HANDLER(HandleLdaStrId16)
|
||||
DEFVARIABLE(varAcc, VariableType::JS_ANY(), acc);
|
||||
|
||||
GateRef stringId = ReadInst16_0(pc);
|
||||
varAcc = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
varAcc = GetStringFromConstPool(constpool, stringId);
|
||||
DISPATCH_WITH_ACC(LDA_STR_ID16);
|
||||
}
|
||||
|
||||
@ -4458,7 +4458,7 @@ DECLARE_ASM_HANDLER(HandleDynamicimportV8)
|
||||
GateRef v0 = ReadInst8_1(pc);
|
||||
GateRef specifier = GetVregValue(sp, ZExtInt8ToPtr(v0));
|
||||
GateRef res = CallRuntime(glue, RTSTUB_ID(DynamicImport), { specifier });
|
||||
CHECK_EXCEPTION_WITH_ACC(res, INT_PTR(DYNAMICIMPORT_V8));
|
||||
CHECK_EXCEPTION_WITH_ACC(res, INT_PTR(DYNAMICIMPORT));
|
||||
}
|
||||
|
||||
DECLARE_ASM_HANDLER(HandleCreateasyncgeneratorobjV8)
|
||||
@ -4829,7 +4829,7 @@ DECLARE_ASM_HANDLER(HandleStconsttoglobalrecordImm16Id16)
|
||||
DEFVARIABLE(varAcc, VariableType::JS_ANY(), acc);
|
||||
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef result = CallRuntime(glue, RTSTUB_ID(StGlobalRecord),
|
||||
{ propKey, *varAcc, TaggedTrue() });
|
||||
CHECK_EXCEPTION_VARACC(result, INT_PTR(STCONSTTOGLOBALRECORD_IMM16_ID16));
|
||||
@ -4839,8 +4839,8 @@ DECLARE_ASM_HANDLER(HandleSttoglobalrecordImm16Id16)
|
||||
{
|
||||
DEFVARIABLE(varAcc, VariableType::JS_ANY(), acc);
|
||||
|
||||
GateRef stringId = ReadInst32_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef result = CallRuntime(glue, RTSTUB_ID(StGlobalRecord),
|
||||
{ propKey, *varAcc, TaggedFalse() });
|
||||
CHECK_EXCEPTION_VARACC(result, INT_PTR(STTOGLOBALRECORD_IMM16_ID16));
|
||||
@ -4851,7 +4851,7 @@ DECLARE_ASM_HANDLER(HandleDeprecatedStconsttoglobalrecordPrefId32)
|
||||
DEFVARIABLE(varAcc, VariableType::JS_ANY(), acc);
|
||||
|
||||
GateRef stringId = ReadInst32_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef result = CallRuntime(glue, RTSTUB_ID(StGlobalRecord),
|
||||
{ propKey, *varAcc, TaggedTrue() });
|
||||
CHECK_EXCEPTION_VARACC(result, INT_PTR(DEPRECATED_STCONSTTOGLOBALRECORD_PREF_ID32));
|
||||
@ -4862,7 +4862,7 @@ DECLARE_ASM_HANDLER(HandleDeprecatedStlettoglobalrecordPrefId32)
|
||||
DEFVARIABLE(varAcc, VariableType::JS_ANY(), acc);
|
||||
|
||||
GateRef stringId = ReadInst32_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef result = CallRuntime(glue, RTSTUB_ID(StGlobalRecord),
|
||||
{ propKey, *varAcc, TaggedFalse() });
|
||||
CHECK_EXCEPTION_VARACC(result, INT_PTR(DEPRECATED_STLETTOGLOBALRECORD_PREF_ID32));
|
||||
@ -4873,7 +4873,7 @@ DECLARE_ASM_HANDLER(HandleDeprecatedStclasstoglobalrecordPrefId32)
|
||||
DEFVARIABLE(varAcc, VariableType::JS_ANY(), acc);
|
||||
|
||||
GateRef stringId = ReadInst32_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
GateRef result = CallRuntime(glue, RTSTUB_ID(StGlobalRecord),
|
||||
{ propKey, *varAcc, TaggedFalse() });
|
||||
CHECK_EXCEPTION_VARACC(result, INT_PTR(DEPRECATED_STCLASSTOGLOBALRECORD_PREF_ID32));
|
||||
@ -5158,14 +5158,14 @@ DECLARE_ASM_HANDLER(HandleLdobjbynameImm8Id16)
|
||||
{
|
||||
|
||||
GateRef stringId = ReadInst16_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
result = GetPropertyByName(glue, receiver, propKey);
|
||||
Branch(TaggedIsHole(*result), &slowPath, &checkException);
|
||||
}
|
||||
Bind(&slowPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
result = CallRuntime(glue, RTSTUB_ID(LoadICByName),
|
||||
{ profileTypeInfo, receiver, propKey, IntToTaggedTypeNGC(slotId) });
|
||||
Jump(&checkException);
|
||||
@ -5195,14 +5195,14 @@ DECLARE_ASM_HANDLER(HandleLdobjbynameImm16Id16)
|
||||
Bind(&tryFastPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
result = GetPropertyByName(glue, receiver, propKey);
|
||||
Branch(TaggedIsHole(*result), &slowPath, &checkException);
|
||||
}
|
||||
Bind(&slowPath);
|
||||
{
|
||||
GateRef stringId = ReadInst16_2(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
result = CallRuntime(glue, RTSTUB_ID(LoadICByName),
|
||||
{ profileTypeInfo, receiver, propKey, IntToTaggedTypeNGC(slotId) });
|
||||
Jump(&checkException);
|
||||
@ -5225,7 +5225,7 @@ DECLARE_ASM_HANDLER(HandleDeprecatedLdobjbynamePrefId32V8)
|
||||
|
||||
GateRef receiver = GetVregValue(sp, ZExtInt8ToPtr(ReadInst8_5(pc)));
|
||||
GateRef stringId = ReadInst32_1(pc);
|
||||
GateRef propKey = GetValueFromTaggedArray(VariableType::JS_ANY(), constpool, stringId);
|
||||
GateRef propKey = GetStringFromConstPool(constpool, stringId);
|
||||
Branch(TaggedIsHeapObject(receiver), &fastPath, &slowPath);
|
||||
Bind(&fastPath);
|
||||
{
|
||||
@ -5353,7 +5353,7 @@ DECLARE_ASM_HANDLER(HandleDeprecatedCallargs3PrefV8V8V8V8)
|
||||
|
||||
DECLARE_ASM_HANDLER(HandleCallrangeImm8Imm8V8)
|
||||
{
|
||||
GateRef actualNumArgs = ZExtInt8ToInt32(ReadInst8_1(pc));
|
||||
GateRef actualNumArgs = Int32Add(ZExtInt8ToInt32(ReadInst8_1(pc)), Int32(1));
|
||||
GateRef func = acc;
|
||||
GateRef argv = PtrAdd(sp, ZExtInt8ToPtr(ReadInst8_2(pc)));
|
||||
GateRef jumpSize = IntPtr(BytecodeInstruction::Size(BytecodeInstruction::Format::IMM8_IMM8_V8));
|
||||
@ -5365,7 +5365,7 @@ DECLARE_ASM_HANDLER(HandleCallrangeImm8Imm8V8)
|
||||
|
||||
DECLARE_ASM_HANDLER(HandleWideCallrangePrefImm16V8)
|
||||
{
|
||||
GateRef actualNumArgs = ZExtInt16ToInt32(ReadInst16_1(pc));
|
||||
GateRef actualNumArgs = Int32Add(ZExtInt16ToInt32(ReadInst16_1(pc)), Int32(1));
|
||||
GateRef func = acc;
|
||||
GateRef argv = PtrAdd(sp, ZExtInt8ToPtr(ReadInst8_2(pc)));
|
||||
GateRef jumpSize = IntPtr(BytecodeInstruction::Size(BytecodeInstruction::Format::PREF_IMM16_V8));
|
||||
|
@ -497,7 +497,7 @@ void SlowPathLowering::Lower(GateRef gate)
|
||||
case EcmaBytecode::TONUMERIC:
|
||||
LowerToNumeric(gate, glue);
|
||||
break;
|
||||
// case DYNAMICIMPORT_V8:
|
||||
// case DYNAMICIMPORT:
|
||||
// LowerDynamicImport(gate, glue, jsFunc);
|
||||
// break;
|
||||
case EcmaBytecode::LDMODULEVAR:
|
||||
|
@ -3971,20 +3971,32 @@ GateRef StubBuilder::JSCallDispatch(GateRef glue, GateRef func, GateRef actualNu
|
||||
}
|
||||
switch (mode) {
|
||||
case JSCallMode::CALL_THIS_ARG0:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallThisArg0AndDispatch),
|
||||
{ glue, sp, func, method, callField, data[0] });
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_ARG0:
|
||||
case JSCallMode::DEPRECATED_CALL_ARG0:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallArgs0AndDispatch),
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallArg0AndDispatch),
|
||||
{ glue, sp, func, method, callField });
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_THIS_ARG1:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallThisArg1AndDispatch),
|
||||
{ glue, sp, func, method, callField, data[0], data[1] });
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_ARG1:
|
||||
case JSCallMode::DEPRECATED_CALL_ARG1:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallArgs1AndDispatch),
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallArg1AndDispatch),
|
||||
{ glue, sp, func, method, callField, data[0] });
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_THIS_ARG2:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallThisArgs2AndDispatch),
|
||||
{ glue, sp, func, method, callField, data[0], data[1], data[2] });
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_ARG2:
|
||||
case JSCallMode::DEPRECATED_CALL_ARG2:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallArgs2AndDispatch),
|
||||
@ -3992,6 +4004,10 @@ GateRef StubBuilder::JSCallDispatch(GateRef glue, GateRef func, GateRef actualNu
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_THIS_ARG3:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallThisArgs3AndDispatch),
|
||||
{ glue, sp, func, method, callField, data[0], data[1], data[2], data[3] });
|
||||
Return();
|
||||
break;
|
||||
case JSCallMode::CALL_ARG3:
|
||||
case JSCallMode::DEPRECATED_CALL_ARG3:
|
||||
result = CallNGCRuntime(glue, RTSTUB_ID(PushCallArgs3AndDispatch),
|
||||
|
@ -400,18 +400,42 @@ void AsmInterpreterCall::PushCallArgs2AndDispatch(ExtendedAssembler *assembler)
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_ARG2);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallArgs1AndDispatch(ExtendedAssembler *assembler)
|
||||
void AsmInterpreterCall::PushCallArg1AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArgs1AndDispatch));
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArg1AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_ARG1);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallArgs0AndDispatch(ExtendedAssembler *assembler)
|
||||
void AsmInterpreterCall::PushCallArg0AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArgs0AndDispatch));
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArg0AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_ARG0);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArg0AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArg0AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG0);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArg1AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArg1AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG1);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArgs2AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArgs2AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG2);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArgs3AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArgs3AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG3);
|
||||
}
|
||||
|
||||
// uint64_t PushCallRangeAndDispatchNative(uintptr_t glue, uint32_t argc, JSTaggedType calltarget, uintptr_t argv[])
|
||||
// c++ calling convention call js function
|
||||
// Input: X0 - glue
|
||||
@ -1096,7 +1120,6 @@ void AsmInterpreterCall::PushGeneratorFrameState(ExtendedAssembler *assembler, R
|
||||
// 32: get high 32bit
|
||||
__ Lsr(operatorRegister, operatorRegister, 32);
|
||||
__ Add(pcRegister, operatorRegister, pcRegister);
|
||||
__ Add(pcRegister, pcRegister, Immediate(BytecodeInstruction::Size(BytecodeInstruction::Format::PREF_V8_V8)));
|
||||
// 2 : pc and fp
|
||||
__ Stp(fpRegister, pcRegister, MemoryOperand(currentSlotRegister, -2 * FRAME_SLOT_SIZE, AddrMode::PREINDEX));
|
||||
// jumpSizeAfterCall
|
||||
|
@ -77,9 +77,9 @@ public:
|
||||
static void ConstructorJSCall(ExtendedAssembler *assembler);
|
||||
|
||||
static void CallRuntimeWithArgv(ExtendedAssembler *assembler);
|
||||
|
||||
|
||||
static void JSCallWithArgV(ExtendedAssembler *assembler);
|
||||
|
||||
|
||||
static void ConstructorJSCallWithArgV(ExtendedAssembler *assembler);
|
||||
|
||||
private:
|
||||
@ -124,9 +124,17 @@ public:
|
||||
|
||||
static void PushCallArgs2AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallArgs1AndDispatch(ExtendedAssembler *assembler);
|
||||
static void PushCallArg1AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallArgs0AndDispatch(ExtendedAssembler *assembler);
|
||||
static void PushCallArg0AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArg0AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArg1AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArgs2AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArgs3AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisRangeAndDispatchNative(ExtendedAssembler *assembler);
|
||||
|
||||
@ -170,7 +178,7 @@ private:
|
||||
|
||||
static void PushFrameState(ExtendedAssembler *assembler, Register prevSp, Register fp, Register currentSlot,
|
||||
Register callTarget, Register method, Register pc, Register op);
|
||||
|
||||
|
||||
static void JSCallCommonEntry(ExtendedAssembler *assembler, JSCallMode mode);
|
||||
static void JSCallCommonFastPath(ExtendedAssembler *assembler, JSCallMode mode, Label *pushCallThis,
|
||||
Label *stackOverflow);
|
||||
|
@ -196,7 +196,6 @@ void AsmInterpreterCall::PushGeneratorFrameState(ExtendedAssembler *assembler, R
|
||||
__ Movq(Operand(methodRegister, Method::NATIVE_POINTER_OR_BYTECODE_ARRAY_OFFSET), pcRegister);
|
||||
__ Movl(Operand(contextRegister, GeneratorContext::GENERATOR_BC_OFFSET_OFFSET), operatorRegister);
|
||||
__ Addq(operatorRegister, pcRegister);
|
||||
__ Addq(BytecodeInstruction::Size(BytecodeInstruction::Format::PREF_V8_V8), pcRegister);
|
||||
__ Pushq(pcRegister); // pc
|
||||
__ Pushq(fpRegister); // fp
|
||||
__ Pushq(0); // jumpSizeAfterCall
|
||||
@ -392,17 +391,40 @@ void AsmInterpreterCall::PushCallArgs2AndDispatch(ExtendedAssembler *assembler)
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_ARG2);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallArgs1AndDispatch(ExtendedAssembler *assembler)
|
||||
void AsmInterpreterCall::PushCallArg1AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArgs1AndDispatch));
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArg1AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_ARG1);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallArgs0AndDispatch(ExtendedAssembler *assembler)
|
||||
void AsmInterpreterCall::PushCallArg0AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArgs0AndDispatch));
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallArg0AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_ARG0);
|
||||
}
|
||||
void AsmInterpreterCall::PushCallThisArg0AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArg0AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG0);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArg1AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArg1AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG1);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArgs2AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArgs2AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG2);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::PushCallThisArgs3AndDispatch(ExtendedAssembler *assembler)
|
||||
{
|
||||
__ BindAssemblerStub(RTSTUB_ID(PushCallThisArgs3AndDispatch));
|
||||
JSCallCommonEntry(assembler, JSCallMode::CALL_THIS_ARG3);
|
||||
}
|
||||
|
||||
void AsmInterpreterCall::JSCallCommonFastPath(ExtendedAssembler *assembler, JSCallMode mode, Label *stackOverflow)
|
||||
{
|
||||
@ -527,12 +549,17 @@ Register AsmInterpreterCall::GetThisRegsiter(ExtendedAssembler *assembler, JSCal
|
||||
{
|
||||
switch (mode) {
|
||||
case JSCallMode::CALL_GETTER:
|
||||
case JSCallMode::CALL_THIS_ARG0:
|
||||
return __ CallDispatcherArgument(kungfu::CallDispatchInputs::ARG0);
|
||||
case JSCallMode::CALL_SETTER:
|
||||
case JSCallMode::CALL_THIS_ARG1:
|
||||
return __ CallDispatcherArgument(kungfu::CallDispatchInputs::ARG1);
|
||||
case JSCallMode::CALL_THIS_ARG2:
|
||||
case JSCallMode::CALL_CONSTRUCTOR_WITH_ARGV:
|
||||
case JSCallMode::CALL_THIS_WITH_ARGV:
|
||||
return __ CallDispatcherArgument(kungfu::CallDispatchInputs::ARG2);
|
||||
case JSCallMode::CALL_THIS_ARG3:
|
||||
return __ CallDispatcherArgument(kungfu::CallDispatchInputs::ARG3);
|
||||
case JSCallMode::CALL_ENTRY:
|
||||
case JSCallMode::CALL_FROM_AOT: {
|
||||
Register argvRegister = __ CallDispatcherArgument(kungfu::CallDispatchInputs::ARG1);
|
||||
|
@ -95,9 +95,17 @@ public:
|
||||
|
||||
static void PushCallArgs2AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallArgs1AndDispatch(ExtendedAssembler *assembler);
|
||||
static void PushCallArg1AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallArgs0AndDispatch(ExtendedAssembler *assembler);
|
||||
static void PushCallArg0AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArg0AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArg1AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArgs2AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallThisArgs3AndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
static void PushCallNewAndDispatch(ExtendedAssembler *assembler);
|
||||
|
||||
|
@ -793,13 +793,7 @@ JSTaggedValue EcmaInterpreter::GeneratorReEnterInterpreter(JSThread *thread, JSH
|
||||
}
|
||||
uint32_t pcOffset = context->GetBCOffset();
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-pointer-arithmetic)
|
||||
// TODO: Refactor ??
|
||||
EcmaOpcode suspendGeneratorOpcode = EcmaOpcode::SUSPENDGENERATOR_V8;
|
||||
if (UNLIKELY(!method->GetJSPandaFile()->IsNewVersion())) {
|
||||
suspendGeneratorOpcode = EcmaOpcode::DEPRECATED_SUSPENDGENERATOR_PREF_V8_V8;
|
||||
}
|
||||
const uint8_t *resumePc = method->GetBytecodeArray() + pcOffset +
|
||||
BytecodeInstruction::Size(suspendGeneratorOpcode);
|
||||
const uint8_t *resumePc = method->GetBytecodeArray() + pcOffset;
|
||||
|
||||
InterpretedFrame *state = GET_FRAME(newSp);
|
||||
state->pc = resumePc;
|
||||
@ -1535,7 +1529,7 @@ NO_UB_SANITIZE void EcmaInterpreter::RunInternal(JSThread *thread, const uint8_t
|
||||
SET_ACC(res);
|
||||
DISPATCH(GETPROPITERATOR);
|
||||
}
|
||||
// TODO
|
||||
// TODO
|
||||
// HANDLE_OPCODE(ITERNEXT_IMM8_V8) {
|
||||
// uint16_t v0 = READ_INST_8_1();
|
||||
// LOG_INST() << "intrinsics::iternext"
|
||||
@ -6518,7 +6512,7 @@ NO_UB_SANITIZE void EcmaInterpreter::RunInternal(JSThread *thread, const uint8_t
|
||||
LOG_FULL(FATAL) << "not implement";
|
||||
DISPATCH(STPATCHVAR_IMM8_V8);
|
||||
}
|
||||
HANDLE_OPCODE(DYNAMICIMPORT_V8) {
|
||||
HANDLE_OPCODE(DYNAMICIMPORT) {
|
||||
uint16_t v0 = READ_INST_8_0();
|
||||
|
||||
LOG_INST() << "intrinsics::dynamicimport"
|
||||
@ -6528,7 +6522,7 @@ NO_UB_SANITIZE void EcmaInterpreter::RunInternal(JSThread *thread, const uint8_t
|
||||
JSTaggedValue res = SlowRuntimeStub::DynamicImport(thread, specifier);
|
||||
INTERPRETER_RETURN_IF_ABRUPT(res);
|
||||
SET_ACC(res);
|
||||
DISPATCH(DYNAMICIMPORT_V8);
|
||||
DISPATCH(DYNAMICIMPORT);
|
||||
}
|
||||
#include "templates/debugger_instruction_handler.inl"
|
||||
}
|
||||
@ -6822,7 +6816,7 @@ std::string GetEcmaOpcodeStr(EcmaOpcode opcode)
|
||||
{EcmaOpcode::STTHISBYVALUE_IMM16_V8, "STTHISBYVALUE_IMM16_V8"},
|
||||
{EcmaOpcode::LDPATCHVAR_IMM8, "LDPATCHVAR_IMM8"},
|
||||
{EcmaOpcode::STPATCHVAR_IMM8_V8, "STPATCHVAR_IMM8_V8"},
|
||||
{EcmaOpcode::DYNAMICIMPORT_V8, "DYNAMICIMPORT_V8"},
|
||||
{EcmaOpcode::DYNAMICIMPORT, "DYNAMICIMPORT"},
|
||||
{EcmaOpcode::DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8, "DEFINECLASSWITHBUFFER_IMM8_ID16_ID16_IMM16_V8"},
|
||||
{EcmaOpcode::DEFINECLASSWITHBUFFER_IMM16_ID16_ID16_IMM16_V8, "DEFINECLASSWITHBUFFER_IMM16_ID16_ID16_IMM16_V8"},
|
||||
{EcmaOpcode::RESUMEGENERATOR, "RESUMEGENERATOR"},
|
||||
|
@ -4329,7 +4329,7 @@ void InterpreterAssembly::HandleDynamicimportV8(
|
||||
JSTaggedValue res = SlowRuntimeStub::DynamicImport(thread, specifier);
|
||||
INTERPRETER_RETURN_IF_ABRUPT(res);
|
||||
SET_ACC(res);
|
||||
DISPATCH(DYNAMICIMPORT_V8);
|
||||
DISPATCH(DYNAMICIMPORT);
|
||||
}
|
||||
void InterpreterAssembly::HandleCallargs3Imm8V8V8V8(
|
||||
JSThread *thread, const uint8_t *pc, JSTaggedType *sp, JSTaggedValue constpool, JSTaggedValue profileTypeInfo,
|
||||
|
@ -23,6 +23,13 @@
|
||||
#include "ecmascript/mem/c_containers.h"
|
||||
#include "ecmascript/tagged_array-inl.h"
|
||||
|
||||
// TODO
|
||||
#ifdef NEW_INSTRUCTION_DEFINE
|
||||
#include "libpandafile/bytecode_instruction-inl.h"
|
||||
#else
|
||||
#include "ecmascript/jspandafile/bytecode_inst/new_instruction.h"
|
||||
#endif
|
||||
|
||||
namespace panda::ecmascript {
|
||||
JSTaggedValue SlowRuntimeHelper::CallBoundFunction(EcmaRuntimeCallInfo *info)
|
||||
{
|
||||
@ -93,9 +100,11 @@ void SlowRuntimeHelper::SaveFrameToContext(JSThread *thread, JSHandle<GeneratorC
|
||||
context->SetRegsArray(thread, regsArray.GetTaggedValue());
|
||||
context->SetMethod(thread, frameHandler.GetFunction());
|
||||
|
||||
BytecodeInstruction ins(frameHandler.GetPc());
|
||||
auto offset = ins.GetSize();
|
||||
context->SetAcc(thread, frameHandler.GetAcc());
|
||||
context->SetLexicalEnv(thread, thread->GetCurrentLexenv());
|
||||
context->SetNRegs(nregs);
|
||||
context->SetBCOffset(frameHandler.GetBytecodeOffset());
|
||||
context->SetBCOffset(frameHandler.GetBytecodeOffset() + offset);
|
||||
}
|
||||
} // namespace panda::ecmascript
|
||||
|
@ -104,7 +104,7 @@
|
||||
&&DEBUG_HANDLE_CALLARGS3_IMM8_V8_V8_V8,
|
||||
&&DEBUG_HANDLE_CALLRANGE_IMM8_IMM8_V8,
|
||||
&&DEBUG_HANDLE_LDEXTERNALMODULEVAR_IMM8,
|
||||
&&DEBUG_HANDLE_DYNAMICIMPORT_V8,
|
||||
&&DEBUG_HANDLE_DYNAMICIMPORT,
|
||||
&&DEBUG_HANDLE_DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8,
|
||||
&&DEBUG_HANDLE_LDTHISBYNAME_IMM8_ID16,
|
||||
&&DEBUG_HANDLE_LDTHISBYNAME_IMM16_ID16,
|
||||
|
@ -713,10 +713,10 @@
|
||||
NOTIFY_DEBUGGER_EVENT();
|
||||
REAL_GOTO_DISPATCH_OPCODE(EcmaOpcode::STLEXVAR_IMM4_IMM4);
|
||||
}
|
||||
DEBUG_HANDLE_OPCODE(DYNAMICIMPORT_V8)
|
||||
DEBUG_HANDLE_OPCODE(DYNAMICIMPORT)
|
||||
{
|
||||
NOTIFY_DEBUGGER_EVENT();
|
||||
REAL_GOTO_DISPATCH_OPCODE(EcmaOpcode::DYNAMICIMPORT_V8);
|
||||
REAL_GOTO_DISPATCH_OPCODE(EcmaOpcode::DYNAMICIMPORT);
|
||||
}
|
||||
DEBUG_HANDLE_OPCODE(GETMODULENAMESPACE_IMM8)
|
||||
{
|
||||
|
@ -104,7 +104,7 @@
|
||||
&&HANDLE_CALLARGS3_IMM8_V8_V8_V8,
|
||||
&&HANDLE_CALLRANGE_IMM8_IMM8_V8,
|
||||
&&HANDLE_LDEXTERNALMODULEVAR_IMM8,
|
||||
&&HANDLE_DYNAMICIMPORT_V8,
|
||||
&&HANDLE_DYNAMICIMPORT,
|
||||
&&HANDLE_DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8,
|
||||
&&HANDLE_LDTHISBYNAME_IMM8_ID16,
|
||||
&&HANDLE_LDTHISBYNAME_IMM16_ID16,
|
||||
|
@ -392,7 +392,7 @@ enum class Opcode {
|
||||
CALLARGS3_IMM8_V8_V8_V8 = 88,
|
||||
CALLRANGE_IMM8_IMM8_V8 = 89,
|
||||
LDEXTERNALMODULEVAR_IMM8 = 90,
|
||||
DYNAMICIMPORT_V8 = 91,
|
||||
DYNAMICIMPORT = 91,
|
||||
DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8 = 92,
|
||||
LDTHISBYNAME_IMM8_ID16 = 93,
|
||||
LDTHISBYNAME_IMM16_ID16 = 94,
|
||||
@ -3079,7 +3079,7 @@ constexpr typename BytecodeInst<Mode>::Format BytecodeInst<Mode>::GetFormat(Opco
|
||||
return BytecodeInst<Mode>::Format::IMM8_IMM8_V8;
|
||||
case BytecodeInst<Mode>::Opcode::LDEXTERNALMODULEVAR_IMM8:
|
||||
return BytecodeInst<Mode>::Format::IMM8;
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT_V8:
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT:
|
||||
return BytecodeInst<Mode>::Format::V8;
|
||||
case BytecodeInst<Mode>::Opcode::DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8:
|
||||
return BytecodeInst<Mode>::Format::V8_V8_V8_V8;
|
||||
@ -3675,7 +3675,7 @@ template<const BytecodeInstMode Mode> inline bool BytecodeInst<Mode>::HasFlag(Fl
|
||||
return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::JIT_IC_SLOT | Flags::TWO_SLOT | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag; // NOLINT(hicpp-signed-bitwise)
|
||||
case BytecodeInst<Mode>::Opcode::LDEXTERNALMODULEVAR_IMM8:
|
||||
return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag; // NOLINT(hicpp-signed-bitwise)
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT_V8:
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT:
|
||||
return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE) & flag) == flag; // NOLINT(hicpp-signed-bitwise)
|
||||
case BytecodeInst<Mode>::Opcode::DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8:
|
||||
return ((Flags::ACC_READ | Flags::ACC_WRITE | Flags::ACC_WRITE | Flags::ACC_READ) & flag) == flag; // NOLINT(hicpp-signed-bitwise)
|
||||
@ -4271,7 +4271,7 @@ template<const BytecodeInstMode Mode> inline bool BytecodeInst<Mode>::IsThrow(Ex
|
||||
return ((Exceptions::X_NONE) & exception) == exception; // NOLINT(hicpp-signed-bitwise)
|
||||
case BytecodeInst<Mode>::Opcode::LDEXTERNALMODULEVAR_IMM8:
|
||||
return ((Exceptions::X_NONE) & exception) == exception; // NOLINT(hicpp-signed-bitwise)
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT_V8:
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT:
|
||||
return ((Exceptions::X_NONE) & exception) == exception; // NOLINT(hicpp-signed-bitwise)
|
||||
case BytecodeInst<Mode>::Opcode::DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8:
|
||||
return ((Exceptions::X_NONE) & exception) == exception; // NOLINT(hicpp-signed-bitwise)
|
||||
@ -4867,7 +4867,7 @@ template<const BytecodeInstMode Mode> inline bool BytecodeInst<Mode>::CanThrow()
|
||||
return false;
|
||||
case BytecodeInst<Mode>::Opcode::LDEXTERNALMODULEVAR_IMM8:
|
||||
return false;
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT_V8:
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT:
|
||||
return false;
|
||||
case BytecodeInst<Mode>::Opcode::DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8:
|
||||
return false;
|
||||
@ -5703,7 +5703,7 @@ template<const BytecodeInstMode Mode> std::ostream& operator<<(std::ostream& os,
|
||||
os << "ldexternalmodulevar";
|
||||
os << " " << inst.template GetImm<BytecodeInst<Mode>::Format::IMM8, 0>();
|
||||
break;
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT_V8:
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT:
|
||||
os << "dynamicimport";
|
||||
os << " v" << inst.template GetVReg<BytecodeInst<Mode>::Format::V8, 0>();
|
||||
break;
|
||||
@ -6936,8 +6936,8 @@ std::ostream& operator<<(std::ostream& os, const typename BytecodeInst<Mode>::Op
|
||||
case BytecodeInst<Mode>::Opcode::LDEXTERNALMODULEVAR_IMM8:
|
||||
os << "LDEXTERNALMODULEVAR_IMM8";
|
||||
break;
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT_V8:
|
||||
os << "DYNAMICIMPORT_V8";
|
||||
case BytecodeInst<Mode>::Opcode::DYNAMICIMPORT:
|
||||
os << "DYNAMICIMPORT";
|
||||
break;
|
||||
case BytecodeInst<Mode>::Opcode::DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8:
|
||||
os << "DEFINEGETTERSETTERBYVALUE_V8_V8_V8_V8";
|
||||
|
@ -1208,7 +1208,7 @@ void PandaFileTranslator::FixOpcode(MethodLiteral *method, const OldBytecodeInst
|
||||
break;
|
||||
}
|
||||
case OldBytecodeInst::Opcode::ECMA_DYNAMICIMPORT_PREF_V8: {
|
||||
newOpcode = EcmaOpcode::DYNAMICIMPORT_V8;
|
||||
newOpcode = EcmaOpcode::DYNAMICIMPORT;
|
||||
*pc = static_cast<uint8_t>(newOpcode);
|
||||
*(pc + 1) = *(pc + 2);
|
||||
break;
|
||||
|
@ -45,10 +45,14 @@ using JSFunctionEntryType = JSTaggedValue (*)(uintptr_t glue, uintptr_t prevFp,
|
||||
V(AsmInterpreterEntry) \
|
||||
V(GeneratorReEnterAsmInterp) \
|
||||
V(PushCallArgsAndDispatchNative) \
|
||||
V(PushCallArgs0AndDispatch) \
|
||||
V(PushCallArgs1AndDispatch) \
|
||||
V(PushCallArg0AndDispatch) \
|
||||
V(PushCallArg1AndDispatch) \
|
||||
V(PushCallArgs2AndDispatch) \
|
||||
V(PushCallArgs3AndDispatch) \
|
||||
V(PushCallThisArg0AndDispatch) \
|
||||
V(PushCallThisArg1AndDispatch) \
|
||||
V(PushCallThisArgs2AndDispatch) \
|
||||
V(PushCallThisArgs3AndDispatch) \
|
||||
V(PushCallRangeAndDispatch) \
|
||||
V(PushCallNewAndDispatch) \
|
||||
V(PushCallNewAndDispatchNative) \
|
||||
|
Loading…
Reference in New Issue
Block a user