| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 | 30 |
| 31 namespace v8 { namespace internal { | 31 namespace v8 { namespace internal { |
| 32 | 32 |
| 33 // The interface to C++ runtime functions. | 33 // The interface to C++ runtime functions. |
| 34 | 34 |
| 35 // ---------------------------------------------------------------------------- | 35 // ---------------------------------------------------------------------------- |
| 36 // RUNTIME_FUNCTION_LIST_ALWAYS defines runtime calls available in both | 36 // RUNTIME_FUNCTION_LIST_ALWAYS defines runtime calls available in both |
| 37 // release and debug mode. | 37 // release and debug mode. |
| 38 // This macro should only be used by the macro RUNTIME_FUNCTION_LIST. | 38 // This macro should only be used by the macro RUNTIME_FUNCTION_LIST. |
| 39 | 39 |
| 40 #define RUNTIME_FUNCTION_LIST_ALWAYS(F) \ | 40 // WARNING: RUNTIME_FUNCTION_LIST_ALWAYS_* is a very large macro that caused |
| 41 // MSVC Intellisense to crash. It was broken into two macros to work around |
| 42 // this problem. Please avoid large recursive macros whenever possible. |
| 43 #define RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \ |
| 41 /* Property access */ \ | 44 /* Property access */ \ |
| 42 F(GetProperty, 2) \ | 45 F(GetProperty, 2) \ |
| 43 F(KeyedGetProperty, 2) \ | 46 F(KeyedGetProperty, 2) \ |
| 44 F(DeleteProperty, 2) \ | 47 F(DeleteProperty, 2) \ |
| 45 F(HasLocalProperty, 2) \ | 48 F(HasLocalProperty, 2) \ |
| 46 F(HasProperty, 2) \ | 49 F(HasProperty, 2) \ |
| 47 F(HasElement, 2) \ | 50 F(HasElement, 2) \ |
| 48 F(IsPropertyEnumerable, 2) \ | 51 F(IsPropertyEnumerable, 2) \ |
| 49 F(GetPropertyNames, 1) \ | 52 F(GetPropertyNames, 1) \ |
| 50 F(GetPropertyNamesFast, 1) \ | 53 F(GetPropertyNamesFast, 1) \ |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 F(StringLastIndexOf, 3) \ | 149 F(StringLastIndexOf, 3) \ |
| 147 F(StringLocaleCompare, 2) \ | 150 F(StringLocaleCompare, 2) \ |
| 148 F(StringSlice, 3) \ | 151 F(StringSlice, 3) \ |
| 149 F(StringReplaceRegExpWithString, 4) \ | 152 F(StringReplaceRegExpWithString, 4) \ |
| 150 F(StringMatch, 3) \ | 153 F(StringMatch, 3) \ |
| 151 \ | 154 \ |
| 152 /* Numbers */ \ | 155 /* Numbers */ \ |
| 153 F(NumberToRadixString, 2) \ | 156 F(NumberToRadixString, 2) \ |
| 154 F(NumberToFixed, 2) \ | 157 F(NumberToFixed, 2) \ |
| 155 F(NumberToExponential, 2) \ | 158 F(NumberToExponential, 2) \ |
| 156 F(NumberToPrecision, 2) \ | 159 F(NumberToPrecision, 2) |
| 157 \ | 160 |
| 161 #define RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \ |
| 158 /* Reflection */ \ | 162 /* Reflection */ \ |
| 159 F(FunctionSetInstanceClassName, 2) \ | 163 F(FunctionSetInstanceClassName, 2) \ |
| 160 F(FunctionSetLength, 2) \ | 164 F(FunctionSetLength, 2) \ |
| 161 F(FunctionSetPrototype, 2) \ | 165 F(FunctionSetPrototype, 2) \ |
| 162 F(FunctionGetName, 1) \ | 166 F(FunctionGetName, 1) \ |
| 163 F(FunctionSetName, 2) \ | 167 F(FunctionSetName, 2) \ |
| 164 F(FunctionGetSourceCode, 1) \ | 168 F(FunctionGetSourceCode, 1) \ |
| 165 F(FunctionGetScript, 1) \ | 169 F(FunctionGetScript, 1) \ |
| 166 F(FunctionGetScriptSourcePosition, 1) \ | 170 F(FunctionGetScriptSourcePosition, 1) \ |
| 167 F(FunctionIsAPIFunction, 1) \ | 171 F(FunctionIsAPIFunction, 1) \ |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 #define RUNTIME_FUNCTION_LIST_DEBUG(F) | 317 #define RUNTIME_FUNCTION_LIST_DEBUG(F) |
| 314 #endif | 318 #endif |
| 315 | 319 |
| 316 | 320 |
| 317 // ---------------------------------------------------------------------------- | 321 // ---------------------------------------------------------------------------- |
| 318 // RUNTIME_FUNCTION_LIST defines all runtime functions accessed | 322 // RUNTIME_FUNCTION_LIST defines all runtime functions accessed |
| 319 // either directly by id (via the code generator), or indirectly | 323 // either directly by id (via the code generator), or indirectly |
| 320 // via a native call by name (from within JS code). | 324 // via a native call by name (from within JS code). |
| 321 | 325 |
| 322 #define RUNTIME_FUNCTION_LIST(F) \ | 326 #define RUNTIME_FUNCTION_LIST(F) \ |
| 323 RUNTIME_FUNCTION_LIST_ALWAYS(F) \ | 327 RUNTIME_FUNCTION_LIST_ALWAYS_1(F) \ |
| 328 RUNTIME_FUNCTION_LIST_ALWAYS_2(F) \ |
| 324 RUNTIME_FUNCTION_LIST_DEBUG(F) \ | 329 RUNTIME_FUNCTION_LIST_DEBUG(F) \ |
| 325 RUNTIME_FUNCTION_LIST_DEBUGGER_SUPPORT(F) | 330 RUNTIME_FUNCTION_LIST_DEBUGGER_SUPPORT(F) |
| 326 | 331 |
| 327 // ---------------------------------------------------------------------------- | 332 // ---------------------------------------------------------------------------- |
| 328 // Runtime provides access to all C++ runtime functions. | 333 // Runtime provides access to all C++ runtime functions. |
| 329 | 334 |
| 330 class Runtime : public AllStatic { | 335 class Runtime : public AllStatic { |
| 331 public: | 336 public: |
| 332 enum FunctionId { | 337 enum FunctionId { |
| 333 #define F(name, nargs) k##name, | 338 #define F(name, nargs) k##name, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 int position); | 392 int position); |
| 388 | 393 |
| 389 // Helper functions used stubs. | 394 // Helper functions used stubs. |
| 390 static void PerformGC(Object* result); | 395 static void PerformGC(Object* result); |
| 391 }; | 396 }; |
| 392 | 397 |
| 393 | 398 |
| 394 } } // namespace v8::internal | 399 } } // namespace v8::internal |
| 395 | 400 |
| 396 #endif // V8_RUNTIME_H_ | 401 #endif // V8_RUNTIME_H_ |
| OLD | NEW |