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

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

Issue 2539093002: [runtime] Port simple String.prototype.indexOf cases to TF Builtin (Closed)
Patch Set: merging with master Created 4 years 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/runtime-strings.cc ('k') | test/cctest/cctest.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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_UTILS_H_ 5 #ifndef V8_RUNTIME_RUNTIME_UTILS_H_
6 #define V8_RUNTIME_RUNTIME_UTILS_H_ 6 #define V8_RUNTIME_RUNTIME_UTILS_H_
7 7
8 #include "src/base/logging.h" 8 #include "src/base/logging.h"
9 #include "src/runtime/runtime.h" 9 #include "src/runtime/runtime.h"
10 10
11 namespace v8 { 11 namespace v8 {
12 namespace internal { 12 namespace internal {
13 13
14 // Cast the given object to a value of the specified type and store 14 // Cast the given object to a value of the specified type and store
15 // it in a variable with the given name. If the object is not of the 15 // it in a variable with the given name. If the object is not of the
16 // expected type we crash safely. 16 // expected type we crash safely.
17 #define CONVERT_ARG_CHECKED(Type, name, index) \ 17 #define CONVERT_ARG_CHECKED(Type, name, index) \
18 CHECK(args[index]->Is##Type()); \ 18 CHECK(args[index]->Is##Type()); \
19 Type* name = Type::cast(args[index]); 19 Type* name = Type::cast(args[index]);
20 20
21 #define CONVERT_ARG_HANDLE_CHECKED(Type, name, index) \ 21 #define CONVERT_ARG_HANDLE_CHECKED(Type, name, index) \
22 CHECK(args[index]->Is##Type()); \ 22 CHECK(args[index]->Is##Type()); \
23 Handle<Type> name = args.at<Type>(index); 23 Handle<Type> name = args.at<Type>(index);
24 24
25 #define CONVERT_NUMBER_ARG_HANDLE_CHECKED(name, index) \ 25 #define CONVERT_NUMBER_ARG_HANDLE_CHECKED(name, index) \
26 CHECK(args[index]->IsNumber()); \ 26 CHECK(args[index]->IsNumber()); \
27 Handle<Object> name = args.at<Object>(index); 27 Handle<Object> name = args.at(index);
28 28
29 // Cast the given object to a boolean and store it in a variable with 29 // Cast the given object to a boolean and store it in a variable with
30 // the given name. If the object is not a boolean we crash safely. 30 // the given name. If the object is not a boolean we crash safely.
31 #define CONVERT_BOOLEAN_ARG_CHECKED(name, index) \ 31 #define CONVERT_BOOLEAN_ARG_CHECKED(name, index) \
32 CHECK(args[index]->IsBoolean()); \ 32 CHECK(args[index]->IsBoolean()); \
33 bool name = args[index]->IsTrue(isolate); 33 bool name = args[index]->IsTrue(isolate);
34 34
35 // Cast the given argument to a Smi and store its value in an int variable 35 // Cast the given argument to a Smi and store its value in an int variable
36 // with the given name. If the argument is not a Smi we crash safely. 36 // with the given name. If the argument is not a Smi we crash safely.
37 #define CONVERT_SMI_ARG_CHECKED(name, index) \ 37 #define CONVERT_SMI_ARG_CHECKED(name, index) \
38 CHECK(args[index]->IsSmi()); \ 38 CHECK(args[index]->IsSmi()); \
39 int name = args.smi_at(index); 39 int name = args.smi_at(index);
40 40
41 // Cast the given argument to a double and store it in a variable with 41 // Cast the given argument to a double and store it in a variable with
42 // the given name. If the argument is not a number (as opposed to 42 // the given name. If the argument is not a number (as opposed to
43 // the number not-a-number) we crash safely. 43 // the number not-a-number) we crash safely.
44 #define CONVERT_DOUBLE_ARG_CHECKED(name, index) \ 44 #define CONVERT_DOUBLE_ARG_CHECKED(name, index) \
45 CHECK(args[index]->IsNumber()); \ 45 CHECK(args[index]->IsNumber()); \
46 double name = args.number_at(index); 46 double name = args.number_at(index);
47 47
48 // Cast the given argument to a size_t and store its value in a variable with 48 // Cast the given argument to a size_t and store its value in a variable with
49 // the given name. If the argument is not a size_t we crash safely. 49 // the given name. If the argument is not a size_t we crash safely.
50 #define CONVERT_SIZE_ARG_CHECKED(name, index) \ 50 #define CONVERT_SIZE_ARG_CHECKED(name, index) \
51 CHECK(args[index]->IsNumber()); \ 51 CHECK(args[index]->IsNumber()); \
52 Handle<Object> name##_object = args.at<Object>(index); \ 52 Handle<Object> name##_object = args.at(index); \
53 size_t name = 0; \ 53 size_t name = 0; \
54 CHECK(TryNumberToSize(*name##_object, &name)); 54 CHECK(TryNumberToSize(*name##_object, &name));
55 55
56 // Call the specified converter on the object *comand store the result in 56 // Call the specified converter on the object *comand store the result in
57 // a variable of the specified type with the given name. If the 57 // a variable of the specified type with the given name. If the
58 // object is not a Number we crash safely. 58 // object is not a Number we crash safely.
59 #define CONVERT_NUMBER_CHECKED(type, name, Type, obj) \ 59 #define CONVERT_NUMBER_CHECKED(type, name, Type, obj) \
60 CHECK(obj->IsNumber()); \ 60 CHECK(obj->IsNumber()); \
61 type name = NumberTo##Type(obj); 61 type name = NumberTo##Type(obj);
62 62
63 // Cast the given argument to PropertyDetails and store its value in a 63 // Cast the given argument to PropertyDetails and store its value in a
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 static inline ObjectTriple MakeTriple(Object* x, Object* y, Object* z) { 164 static inline ObjectTriple MakeTriple(Object* x, Object* y, Object* z) {
165 ObjectTriple result = {x, y, z}; 165 ObjectTriple result = {x, y, z};
166 // ObjectTriple is assigned to a hidden first argument. 166 // ObjectTriple is assigned to a hidden first argument.
167 return result; 167 return result;
168 } 168 }
169 169
170 } // namespace internal 170 } // namespace internal
171 } // namespace v8 171 } // namespace v8
172 172
173 #endif // V8_RUNTIME_RUNTIME_UTILS_H_ 173 #endif // V8_RUNTIME_RUNTIME_UTILS_H_
OLDNEW
« no previous file with comments | « src/runtime/runtime-strings.cc ('k') | test/cctest/cctest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698