mirror of
https://github.com/openharmony/ark_js_runtime.git
synced 2026-08-27 20:40:01 -04:00
fd1719432b
1.JSFunction call native code when method is native jump to compiled code for aot JSFunction call asm interpreter entry for BC method 2. JSBoundFunction Bind Arguments for Bound target function, then recursive call this trampoline function. 3. JSProxy Call proxy's target jsfunction. 4. NonCallable Throw typerror exception. issue https://gitee.com/openharmony/ark_js_runtime/issues/I51OWV?from=project-issue Signed-off-by: getingke <getingke@huawei.com> Change-Id: I85917e3cf1ffec0cc1e39de5fc20bd606947c968
54 lines
2.3 KiB
C++
54 lines
2.3 KiB
C++
/*
|
|
* Copyright (c) 2021 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_MESSAGE_STRING_H
|
|
#define ECMASCRIPT_MESSAGE_STRING_H
|
|
|
|
#include <string>
|
|
#include "ecmascript/compiler/common_stubs.h"
|
|
#include "ecmascript/compiler/interpreter_stub.h"
|
|
|
|
namespace panda::ecmascript {
|
|
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
|
|
#define COMMON_MESSAGE_STRING_LIST(V) \
|
|
V(SetReadOnlyProperty, "Cannot set readonly property") \
|
|
V(FunctionCallNotConstructor, "class constructor cannot call") \
|
|
V(SetPropertyWhenNotExtensible, "Cannot add property in prevent extensions ") \
|
|
V(GetPropertyOutOfBounds, "Get Property index out-of-bounds") \
|
|
V(CanNotSetPropertyOnContainer, "Cannot set property on Container") \
|
|
V(NonCallable, "CallObj is NonCallable") \
|
|
V(ASM_INTERPRETER_STUB_NAME, "ASM_INTERPRETER stub name: ") \
|
|
V(OPCODE_OVERFLOW, "opcode overflow!") \
|
|
V(INT32_VALUE, "value: %ld")
|
|
|
|
class MessageString {
|
|
public:
|
|
enum MessageId {
|
|
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
|
|
#define DEF_MESSAGE_ID(name, string) Message_##name,
|
|
COMMON_MESSAGE_STRING_LIST(DEF_MESSAGE_ID)
|
|
INTERPRETER_STUB_HELPER_LIST(DEF_MESSAGE_ID)
|
|
ASM_INTERPRETER_BC_STUB_LIST(DEF_MESSAGE_ID, DEF_MESSAGE_ID, DEF_MESSAGE_ID)
|
|
#undef DEF_MESSAGE_ID
|
|
MAX_MESSAGE_COUNT
|
|
};
|
|
static const std::string& GetMessageString(int id);
|
|
};
|
|
|
|
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
|
|
#define GET_MESSAGE_STRING_ID(name) static_cast<int>((MessageString::MessageId::Message_##name))
|
|
} // namespace panda::ecmascript
|
|
#endif // ECMASCRIPT_MESSAGE_STRING_H
|