Adding support for adding LLInt opcode extensions. This will be needed

by the LLInt C loop interpreter later.
https://bugs.webkit.org/show_bug.cgi?id=95277.

Patch by Mark Lam <mark.lam@apple.com> on 2012-08-28
Reviewed by Geoffrey Garen.

* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/Opcode.h:
* llint/LLIntOpcode.h: Added.
* llint/LowLevelInterpreter.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@126955 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent d2a7da71
2012-08-28 Mark Lam <mark.lam@apple.com>
Adding support for adding LLInt opcode extensions. This will be needed
by the LLInt C loop interpreter later.
https://bugs.webkit.org/show_bug.cgi?id=95277.
Reviewed by Geoffrey Garen.
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/Opcode.h:
* llint/LLIntOpcode.h: Added.
* llint/LowLevelInterpreter.h:
2012-08-28 Gavin Barraclough <barraclough@apple.com>
Rolled out r126928, this broke stuff :'-(
......
......@@ -720,6 +720,7 @@
E49DC16D12EF295300184A1F /* SourceProviderCacheItem.h in Headers */ = {isa = PBXBuildFile; fileRef = E49DC14912EF261A00184A1F /* SourceProviderCacheItem.h */; settings = {ATTRIBUTES = (Private, ); }; };
FE4A331F15BD2E07006F54F3 /* VMInspector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */; };
FE4A332015BD2E07006F54F3 /* VMInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = FE4A331E15BD2E07006F54F3 /* VMInspector.h */; };
FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */ = {isa = PBXBuildFile; fileRef = FED287B115EC9A5700DA8161 /* LLIntOpcode.h */; settings = {ATTRIBUTES = (Private, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
......@@ -1519,6 +1520,7 @@
FE4A331D15BD2E07006F54F3 /* VMInspector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VMInspector.cpp; sourceTree = "<group>"; };
FE4A331E15BD2E07006F54F3 /* VMInspector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMInspector.h; sourceTree = "<group>"; };
FEB63AA2159B9DA3008932A6 /* Comment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Comment.h; sourceTree = "<group>"; };
FED287B115EC9A5700DA8161 /* LLIntOpcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntOpcode.h; path = llint/LLIntOpcode.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -1651,6 +1653,7 @@
0F46809C14BA7F4D00BFE272 /* llint */ = {
isa = PBXGroup;
children = (
FED287B115EC9A5700DA8161 /* LLIntOpcode.h */,
5DDDF44614FEE72200B4FB4D /* LLIntDesiredOffsets.h */,
0F0B839514BCF45A00885B4F /* LLIntEntrypoints.cpp */,
0F0B839614BCF45A00885B4F /* LLIntEntrypoints.h */,
......@@ -2905,6 +2908,7 @@
0F63947815DCE34B006A597C /* DFGStructureAbstractValue.h in Headers */,
14874AE415EBDE4A002E3587 /* JSNameScope.h in Headers */,
14874AE615EBDE4A002E3587 /* JSScope.h in Headers */,
FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......
......@@ -30,6 +30,8 @@
#ifndef Opcode_h
#define Opcode_h
#include "LLIntOpcode.h"
#include <algorithm>
#include <string.h>
......@@ -198,6 +200,8 @@ namespace JSC {
macro(op_profile_will_call, 2) \
macro(op_profile_did_call, 2) \
\
FOR_EACH_LLINT_OPCODE_EXTENSION(macro) \
\
macro(op_end, 2) // end must be the last opcode in the list
#define OPCODE_ID_ENUM(opcode, length) opcode,
......
/*
* Copyright (C) 2012 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef LLIntOpcode_h
#define LLIntOpcode_h
#include <wtf/Platform.h>
#if ENABLE(LLINT)
#define FOR_EACH_LLINT_NOJIT_NATIVE_HELPER(macro) \
// Nothing to do here. Use the JIT impl instead.
#define FOR_EACH_LLINT_NATIVE_HELPER(macro) \
FOR_EACH_LLINT_NOJIT_NATIVE_HELPER(macro) \
\
macro(llint_begin, 1) \
\
macro(llint_program_prologue, 1) \
macro(llint_eval_prologue, 1) \
macro(llint_function_for_call_prologue, 1) \
macro(llint_function_for_construct_prologue, 1) \
macro(llint_function_for_call_arity_check, 1) \
macro(llint_function_for_construct_arity_check, 1) \
macro(llint_generic_return_point, 1) \
macro(llint_throw_from_slow_path_trampoline, 1) \
macro(llint_throw_during_call_trampoline, 1) \
\
/* Native call trampolines */ \
macro(llint_native_call_trampoline, 1) \
macro(llint_native_construct_trampoline, 1) \
\
macro(llint_end, 1)
#define FOR_EACH_LLINT_OPCODE_EXTENSION(macro) // Nothing to add.
#else // !ENABLE(LLINT)
#define FOR_EACH_LLINT_OPCODE_EXTENSION(macro) // Nothing to add.
#endif // !ENABLE(LLINT)
#endif // LLIntOpcode_h
......@@ -36,21 +36,10 @@
FOR_EACH_OPCODE_ID(LLINT_INSTRUCTION_DECL);
#undef LLINT_INSTRUCTION_DECL
extern "C" void llint_begin();
extern "C" void llint_end();
extern "C" void llint_program_prologue();
extern "C" void llint_eval_prologue();
extern "C" void llint_function_for_call_prologue();
extern "C" void llint_function_for_construct_prologue();
extern "C" void llint_function_for_call_arity_check();
extern "C" void llint_function_for_construct_arity_check();
extern "C" void llint_generic_return_point();
extern "C" void llint_throw_from_slow_path_trampoline();
extern "C" void llint_throw_during_call_trampoline();
// Native call trampolines
extern "C" void llint_native_call_trampoline();
extern "C" void llint_native_construct_trampoline();
#define DECLARE_LLINT_NATIVE_HELPER(name, length) extern "C" void name();
FOR_EACH_LLINT_NATIVE_HELPER(DECLARE_LLINT_NATIVE_HELPER)
#undef DECLARE_LLINT_NATIVE_HELPER
#endif // ENABLE(LLINT)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment