Index: src/runtime/runtime-test.cc |
diff --git a/src/runtime/runtime-test.cc b/src/runtime/runtime-test.cc |
index eac3c613af910ca7fa4e61909324d21d06612031..9e4e4346039f9f5289e95a52814721ada9641ba7 100644 |
--- a/src/runtime/runtime-test.cc |
+++ b/src/runtime/runtime-test.cc |
@@ -292,6 +292,61 @@ RUNTIME_FUNCTION(Runtime_AbortJS) { |
} |
+// Returns V8 version as a string. |
+RUNTIME_FUNCTION(Runtime_GetV8Version) { |
+ HandleScope scope(isolate); |
+ DCHECK(args.length() == 0); |
+ |
+ const char* version_string = v8::V8::GetVersion(); |
+ |
+ return *isolate->factory()->NewStringFromAsciiChecked(version_string); |
+} |
+ |
+ |
+#ifdef DEBUG |
+// ListNatives is ONLY used by the fuzz-natives.js in debug mode |
+// Exclude the code in release mode. |
+RUNTIME_FUNCTION(Runtime_ListNatives) { |
+ HandleScope scope(isolate); |
+ DCHECK(args.length() == 0); |
+#define COUNT_ENTRY(Name, argc, ressize) +1 |
+ int entry_count = |
+ 0 RUNTIME_FUNCTION_LIST(COUNT_ENTRY) INLINE_FUNCTION_LIST(COUNT_ENTRY) |
+ INLINE_OPTIMIZED_FUNCTION_LIST(COUNT_ENTRY); |
+#undef COUNT_ENTRY |
+ Factory* factory = isolate->factory(); |
+ Handle<FixedArray> elements = factory->NewFixedArray(entry_count); |
+ int index = 0; |
+ bool inline_runtime_functions = false; |
+#define ADD_ENTRY(Name, argc, ressize) \ |
+ { \ |
+ HandleScope inner(isolate); \ |
+ Handle<String> name; \ |
+ /* Inline runtime functions have an underscore in front of the name. */ \ |
+ if (inline_runtime_functions) { \ |
+ name = factory->NewStringFromStaticChars("_" #Name); \ |
+ } else { \ |
+ name = factory->NewStringFromStaticChars(#Name); \ |
+ } \ |
+ Handle<FixedArray> pair_elements = factory->NewFixedArray(2); \ |
+ pair_elements->set(0, *name); \ |
+ pair_elements->set(1, Smi::FromInt(argc)); \ |
+ Handle<JSArray> pair = factory->NewJSArrayWithElements(pair_elements); \ |
+ elements->set(index++, *pair); \ |
+ } |
+ inline_runtime_functions = false; |
+ RUNTIME_FUNCTION_LIST(ADD_ENTRY) |
+ INLINE_OPTIMIZED_FUNCTION_LIST(ADD_ENTRY) |
+ inline_runtime_functions = true; |
+ INLINE_FUNCTION_LIST(ADD_ENTRY) |
+#undef ADD_ENTRY |
+ DCHECK_EQ(index, entry_count); |
+ Handle<JSArray> result = factory->NewJSArrayWithElements(elements); |
+ return *result; |
+} |
+#endif |
+ |
+ |
RUNTIME_FUNCTION(Runtime_HaveSameMap) { |
SealHandleScope shs(isolate); |
DCHECK(args.length() == 2); |
@@ -319,5 +374,27 @@ ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION(ExternalArrayElements) |
ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION(FastProperties) |
#undef ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION |
+ |
+ |
+#define TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION(Type, type, TYPE, ctype, size) \ |
+ RUNTIME_FUNCTION(Runtime_HasExternal##Type##Elements) { \ |
+ CONVERT_ARG_CHECKED(JSObject, obj, 0); \ |
+ return isolate->heap()->ToBoolean(obj->HasExternal##Type##Elements()); \ |
+ } |
+ |
+TYPED_ARRAYS(TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION) |
+ |
+#undef TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION |
+ |
+ |
+#define FIXED_TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION(Type, type, TYPE, ctype, s) \ |
+ RUNTIME_FUNCTION(Runtime_HasFixed##Type##Elements) { \ |
+ CONVERT_ARG_CHECKED(JSObject, obj, 0); \ |
+ return isolate->heap()->ToBoolean(obj->HasFixed##Type##Elements()); \ |
+ } |
+ |
+TYPED_ARRAYS(FIXED_TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION) |
+ |
+#undef FIXED_TYPED_ARRAYS_CHECK_RUNTIME_FUNCTION |
} |
} // namespace v8::internal |