Index: src/runtime/runtime.h |
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h |
index d65e1e9f24fff4872cc0a1f0ec7dd55947247d80..fc4d96e9370f9fe8a1404b2a924bdec4433036d7 100644 |
--- a/src/runtime/runtime.h |
+++ b/src/runtime/runtime.h |
@@ -15,10 +15,6 @@ namespace internal { |
// The interface to C++ runtime functions. |
// ---------------------------------------------------------------------------- |
-// RUNTIME_FUNCTION_LIST_ALWAYS defines runtime calls available in both |
-// release and debug mode. |
-// This macro should only be used by the macro RUNTIME_FUNCTION_LIST. |
- |
// WARNING: RUNTIME_FUNCTION_LIST_ALWAYS_* is a very large macro that caused |
// MSVC Intellisense to crash. It was broken into two macros to work around |
// this problem. Please avoid large recursive macros whenever possible. |
@@ -630,12 +626,6 @@ namespace internal { |
#endif |
-// ---------------------------------------------------------------------------- |
-// RUNTIME_FUNCTION_LIST defines all runtime functions accessed |
-// either directly by id (via the code generator), or indirectly |
-// via a native call by name (from within JS code). |
-// Entries have the form F(name, number of arguments, number of return values). |
- |
#define RUNTIME_FUNCTION_LIST_RETURN_OBJECT(F) \ |
RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \ |
RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \ |
@@ -644,13 +634,18 @@ namespace internal { |
RUNTIME_FUNCTION_LIST_I18N_SUPPORT(F) |
+// RUNTIME_FUNCTION_LIST_ defines the intrinsics typically implemented only |
+// as runtime functions. These come in 2 flavors, either returning an object or |
+// returning a pair. |
+// Entries have the form F(name, number of arguments, number of return values). |
#define RUNTIME_FUNCTION_LIST(F) \ |
RUNTIME_FUNCTION_LIST_RETURN_OBJECT(F) \ |
RUNTIME_FUNCTION_LIST_RETURN_PAIR(F) |
+ |
// ---------------------------------------------------------------------------- |
-// INLINE_FUNCTION_LIST defines all inlined functions accessed |
-// with a native call of the form %_name from within JS code. |
+// INLINE_FUNCTION_LIST defines the intrinsics typically handled specially by |
+// the various compilers. |
// Entries have the form F(name, number of arguments, number of return values). |
#define INLINE_FUNCTION_LIST(F) \ |
F(IsSmi, 1, 1) \ |
@@ -697,11 +692,8 @@ namespace internal { |
// ---------------------------------------------------------------------------- |
-// INLINE_OPTIMIZED_FUNCTION_LIST defines all inlined functions accessed |
-// with a native call of the form %_name from within JS code that also have |
-// a corresponding runtime function, that is called from non-optimized code. |
-// For the benefit of (fuzz) tests, the runtime version can also be called |
-// directly as %name (i.e. without the leading underscore). |
+// INLINE_OPTIMIZED_FUNCTION_LIST defines the intrinsics typically handled |
+// specially by Crankshaft. |
// Entries have the form F(name, number of arguments, number of return values). |
#define INLINE_OPTIMIZED_FUNCTION_LIST(F) \ |
/* Typed Arrays */ \ |
@@ -740,6 +732,11 @@ namespace internal { |
F(GetPrototype, 1, 1) |
+#define FOR_EACH_INTRINSIC(F) \ |
+ RUNTIME_FUNCTION_LIST(F) \ |
+ INLINE_FUNCTION_LIST(F) \ |
+ INLINE_OPTIMIZED_FUNCTION_LIST(F) |
+ |
//--------------------------------------------------------------------------- |
// Runtime provides access to all C++ runtime functions. |
@@ -772,15 +769,10 @@ class Runtime : public AllStatic { |
enum FunctionId { |
#define F(name, nargs, ressize) k##name, |
#define I(name, nargs, ressize) kInline##name, |
- RUNTIME_FUNCTION_LIST(F) INLINE_FUNCTION_LIST(F) |
- INLINE_OPTIMIZED_FUNCTION_LIST(F) RUNTIME_FUNCTION_LIST(I) |
- INLINE_FUNCTION_LIST(I) INLINE_OPTIMIZED_FUNCTION_LIST(I) |
+ FOR_EACH_INTRINSIC(F) FOR_EACH_INTRINSIC(I) |
#undef I |
#undef F |
- kNumFunctions, |
- // TODO(svenpanne) The values below are cruel hacks, remove them! |
- kFirstInlineFunction = kInlineIsSmi, |
- kLastInlineFunction = kInlineDebugIsActive |
+ kNumFunctions, |
}; |
enum IntrinsicType { RUNTIME, INLINE }; |