Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Side by Side Diff: src/runtime/runtime.h

Issue 1306993003: Call JS functions via native context instead of js builtins object. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/runtime.js ('k') | src/runtime/runtime.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_RUNTIME_RUNTIME_H_ 5 #ifndef V8_RUNTIME_RUNTIME_H_
6 #define V8_RUNTIME_RUNTIME_H_ 6 #define V8_RUNTIME_RUNTIME_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/objects.h" 9 #include "src/objects.h"
10 #include "src/unicode.h" 10 #include "src/unicode.h"
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 F(BreakIteratorCurrent, 1, 1) \ 296 F(BreakIteratorCurrent, 1, 1) \
297 F(BreakIteratorBreakType, 1, 1) 297 F(BreakIteratorBreakType, 1, 1)
298 #else 298 #else
299 #define FOR_EACH_INTRINSIC_I18N(F) 299 #define FOR_EACH_INTRINSIC_I18N(F)
300 #endif 300 #endif
301 301
302 302
303 #define FOR_EACH_INTRINSIC_INTERNAL(F) \ 303 #define FOR_EACH_INTRINSIC_INTERNAL(F) \
304 F(CheckIsBootstrapping, 0, 1) \ 304 F(CheckIsBootstrapping, 0, 1) \
305 F(ExportPrivateSymbols, 1, 1) \ 305 F(ExportPrivateSymbols, 1, 1) \
306 F(ImportToRuntime, 1, 1) \ 306 F(InstallToContext, 1, 1) \
307 F(ImportExperimentalToRuntime, 1, 1) \
308 F(InstallJSBuiltins, 1, 1) \ 307 F(InstallJSBuiltins, 1, 1) \
309 F(Throw, 1, 1) \ 308 F(Throw, 1, 1) \
310 F(ReThrow, 1, 1) \ 309 F(ReThrow, 1, 1) \
311 F(UnwindAndFindExceptionHandler, 0, 1) \ 310 F(UnwindAndFindExceptionHandler, 0, 1) \
312 F(PromoteScheduledException, 0, 1) \ 311 F(PromoteScheduledException, 0, 1) \
313 F(ThrowReferenceError, 1, 1) \ 312 F(ThrowReferenceError, 1, 1) \
314 F(NewTypeError, 2, 1) \ 313 F(NewTypeError, 2, 1) \
315 F(NewSyntaxError, 2, 1) \ 314 F(NewSyntaxError, 2, 1) \
316 F(NewReferenceError, 2, 1) \ 315 F(NewReferenceError, 2, 1) \
317 F(ThrowIteratorResultNotAnObject, 1, 1) \ 316 F(ThrowIteratorResultNotAnObject, 1, 1) \
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
1086 1085
1087 1086
1088 class JavaScriptFrameIterator; // Forward declaration. 1087 class JavaScriptFrameIterator; // Forward declaration.
1089 1088
1090 1089
1091 class Runtime : public AllStatic { 1090 class Runtime : public AllStatic {
1092 public: 1091 public:
1093 enum FunctionId { 1092 enum FunctionId {
1094 #define F(name, nargs, ressize) k##name, 1093 #define F(name, nargs, ressize) k##name,
1095 #define I(name, nargs, ressize) kInline##name, 1094 #define I(name, nargs, ressize) kInline##name,
1096 FOR_EACH_INTRINSIC(F) FOR_EACH_INTRINSIC(I) 1095 FOR_EACH_INTRINSIC(F)
1096 FOR_EACH_INTRINSIC(I)
1097 #undef I 1097 #undef I
1098 #undef F 1098 #undef F
1099 kNumFunctions, 1099 kNumFunctions,
1100 }; 1100 };
1101 1101
1102 enum IntrinsicType { RUNTIME, INLINE }; 1102 enum IntrinsicType { RUNTIME, INLINE };
1103 1103
1104 // Intrinsic function descriptor. 1104 // Intrinsic function descriptor.
1105 struct Function { 1105 struct Function {
1106 FunctionId function_id; 1106 FunctionId function_id;
1107 IntrinsicType intrinsic_type; 1107 IntrinsicType intrinsic_type;
1108 // The JS name of the function. 1108 // The JS name of the function.
1109 const char* name; 1109 const char* name;
1110 1110
1111 // The C++ (native) entry point. NULL if the function is inlined. 1111 // For RUNTIME functions, this is the C++ entry point.
1112 byte* entry; 1112 // For INLINE functions this is the C++ entry point of the fall back.
1113 Address entry;
1113 1114
1114 // The number of arguments expected. nargs is -1 if the function takes 1115 // The number of arguments expected. nargs is -1 if the function takes
1115 // a variable number of arguments. 1116 // a variable number of arguments.
1116 int nargs; 1117 int8_t nargs;
1117 // Size of result. Most functions return a single pointer, size 1. 1118 // Size of result. Most functions return a single pointer, size 1.
1118 int result_size; 1119 int8_t result_size;
1119 }; 1120 };
1120 1121
1121 static const int kNotFound = -1; 1122 static const int kNotFound = -1;
1122 1123
1123 // Add internalized strings for all the intrinsic function names to a 1124 // Add internalized strings for all the intrinsic function names to a
1124 // StringDictionary. 1125 // StringDictionary.
1125 static void InitializeIntrinsicFunctionNames(Isolate* isolate, 1126 static void InitializeIntrinsicFunctionNames(Isolate* isolate,
1126 Handle<NameDictionary> dict); 1127 Handle<NameDictionary> dict);
1127 1128
1128 // Get the intrinsic function with the given name, which must be internalized. 1129 // Get the intrinsic function with the given name, which must be internalized.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1249 inline bool Runtime::AtomicIsLockFree(uint32_t size) { 1250 inline bool Runtime::AtomicIsLockFree(uint32_t size) {
1250 return size == 1 || size == 2 || size == 4; 1251 return size == 1 || size == 2 || size == 4;
1251 } 1252 }
1252 1253
1253 #endif 1254 #endif
1254 1255
1255 } // namespace internal 1256 } // namespace internal
1256 } // namespace v8 1257 } // namespace v8
1257 1258
1258 #endif // V8_RUNTIME_RUNTIME_H_ 1259 #endif // V8_RUNTIME_RUNTIME_H_
OLDNEW
« no previous file with comments | « src/runtime.js ('k') | src/runtime/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698