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

Side by Side Diff: src/factory.cc

Issue 501323002: Replace our homegrown ARRAY_SIZE() with Chrome's arraysize(). (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
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 #include "src/factory.h" 5 #include "src/factory.h"
6 6
7 #include "src/allocation-site-scopes.h" 7 #include "src/allocation-site-scopes.h"
8 #include "src/conversions.h" 8 #include "src/conversions.h"
9 #include "src/isolate-inl.h" 9 #include "src/isolate-inl.h"
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 const int kBufferSize = 1000; 1132 const int kBufferSize = 1000;
1133 char buffer[kBufferSize]; 1133 char buffer[kBufferSize];
1134 size_t space = kBufferSize; 1134 size_t space = kBufferSize;
1135 char* p = &buffer[0]; 1135 char* p = &buffer[0];
1136 1136
1137 Vector<char> v(buffer, kBufferSize); 1137 Vector<char> v(buffer, kBufferSize);
1138 StrNCpy(v, message, space); 1138 StrNCpy(v, message, space);
1139 space -= Min(space, strlen(message)); 1139 space -= Min(space, strlen(message));
1140 p = &buffer[kBufferSize] - space; 1140 p = &buffer[kBufferSize] - space;
1141 1141
1142 for (unsigned i = 0; i < ARRAY_SIZE(args); i++) { 1142 for (int i = 0; i < Smi::cast(args->length())->value(); i++) {
1143 if (space > 0) { 1143 if (space > 0) {
1144 *p++ = ' '; 1144 *p++ = ' ';
1145 space--; 1145 space--;
1146 if (space > 0) { 1146 if (space > 0) {
1147 Handle<String> arg_str = Handle<String>::cast( 1147 Handle<String> arg_str = Handle<String>::cast(
1148 Object::GetElement(isolate(), args, i).ToHandleChecked()); 1148 Object::GetElement(isolate(), args, i).ToHandleChecked());
1149 SmartArrayPointer<char> arg = arg_str->ToCString(); 1149 SmartArrayPointer<char> arg = arg_str->ToCString();
1150 Vector<char> v2(p, static_cast<int>(space)); 1150 Vector<char> v2(p, static_cast<int>(space));
1151 StrNCpy(v2, arg.get(), space); 1151 StrNCpy(v2, arg.get(), space);
1152 space -= Min(space, strlen(arg.get())); 1152 space -= Min(space, strlen(arg.get()));
(...skipping 24 matching lines...) Expand all
1177 Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj); 1177 Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj);
1178 Handle<Object> message_obj = InternalizeUtf8String(message); 1178 Handle<Object> message_obj = InternalizeUtf8String(message);
1179 Handle<Object> argv[] = { message_obj, args }; 1179 Handle<Object> argv[] = { message_obj, args };
1180 1180
1181 // Invoke the JavaScript factory method. If an exception is thrown while 1181 // Invoke the JavaScript factory method. If an exception is thrown while
1182 // running the factory method, use the exception as the result. 1182 // running the factory method, use the exception as the result.
1183 Handle<Object> result; 1183 Handle<Object> result;
1184 Handle<Object> exception; 1184 Handle<Object> exception;
1185 if (!Execution::TryCall(fun, 1185 if (!Execution::TryCall(fun,
1186 isolate()->js_builtins_object(), 1186 isolate()->js_builtins_object(),
1187 ARRAY_SIZE(argv), 1187 arraysize(argv),
1188 argv, 1188 argv,
1189 &exception).ToHandle(&result)) { 1189 &exception).ToHandle(&result)) {
1190 return exception; 1190 return exception;
1191 } 1191 }
1192 return result; 1192 return result;
1193 } 1193 }
1194 1194
1195 1195
1196 Handle<Object> Factory::NewError(Handle<String> message) { 1196 Handle<Object> Factory::NewError(Handle<String> message) {
1197 return NewError("$Error", message); 1197 return NewError("$Error", message);
1198 } 1198 }
1199 1199
1200 1200
1201 Handle<Object> Factory::NewError(const char* constructor, 1201 Handle<Object> Factory::NewError(const char* constructor,
1202 Handle<String> message) { 1202 Handle<String> message) {
1203 Handle<String> constr = InternalizeUtf8String(constructor); 1203 Handle<String> constr = InternalizeUtf8String(constructor);
1204 Handle<JSFunction> fun = Handle<JSFunction>::cast(Object::GetProperty( 1204 Handle<JSFunction> fun = Handle<JSFunction>::cast(Object::GetProperty(
1205 isolate()->js_builtins_object(), constr).ToHandleChecked()); 1205 isolate()->js_builtins_object(), constr).ToHandleChecked());
1206 Handle<Object> argv[] = { message }; 1206 Handle<Object> argv[] = { message };
1207 1207
1208 // Invoke the JavaScript factory method. If an exception is thrown while 1208 // Invoke the JavaScript factory method. If an exception is thrown while
1209 // running the factory method, use the exception as the result. 1209 // running the factory method, use the exception as the result.
1210 Handle<Object> result; 1210 Handle<Object> result;
1211 Handle<Object> exception; 1211 Handle<Object> exception;
1212 if (!Execution::TryCall(fun, 1212 if (!Execution::TryCall(fun,
1213 isolate()->js_builtins_object(), 1213 isolate()->js_builtins_object(),
1214 ARRAY_SIZE(argv), 1214 arraysize(argv),
1215 argv, 1215 argv,
1216 &exception).ToHandle(&result)) { 1216 &exception).ToHandle(&result)) {
1217 return exception; 1217 return exception;
1218 } 1218 }
1219 return result; 1219 return result;
1220 } 1220 }
1221 1221
1222 1222
1223 void Factory::InitializeFunction(Handle<JSFunction> function, 1223 void Factory::InitializeFunction(Handle<JSFunction> function,
1224 Handle<SharedFunctionInfo> info, 1224 Handle<SharedFunctionInfo> info,
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after
2032 2032
2033 Handle<String> Factory::NumberToString(Handle<Object> number, 2033 Handle<String> Factory::NumberToString(Handle<Object> number,
2034 bool check_number_string_cache) { 2034 bool check_number_string_cache) {
2035 isolate()->counters()->number_to_string_runtime()->Increment(); 2035 isolate()->counters()->number_to_string_runtime()->Increment();
2036 if (check_number_string_cache) { 2036 if (check_number_string_cache) {
2037 Handle<Object> cached = GetNumberStringCache(number); 2037 Handle<Object> cached = GetNumberStringCache(number);
2038 if (!cached->IsUndefined()) return Handle<String>::cast(cached); 2038 if (!cached->IsUndefined()) return Handle<String>::cast(cached);
2039 } 2039 }
2040 2040
2041 char arr[100]; 2041 char arr[100];
2042 Vector<char> buffer(arr, ARRAY_SIZE(arr)); 2042 Vector<char> buffer(arr, arraysize(arr));
2043 const char* str; 2043 const char* str;
2044 if (number->IsSmi()) { 2044 if (number->IsSmi()) {
2045 int num = Handle<Smi>::cast(number)->value(); 2045 int num = Handle<Smi>::cast(number)->value();
2046 str = IntToCString(num, buffer); 2046 str = IntToCString(num, buffer);
2047 } else { 2047 } else {
2048 double num = Handle<HeapNumber>::cast(number)->value(); 2048 double num = Handle<HeapNumber>::cast(number)->value();
2049 str = DoubleToCString(num, buffer); 2049 str = DoubleToCString(num, buffer);
2050 } 2050 }
2051 2051
2052 // We tenure the allocated string since it is referenced from the 2052 // We tenure the allocated string since it is referenced from the
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
2379 return Handle<Object>::null(); 2379 return Handle<Object>::null();
2380 } 2380 }
2381 2381
2382 2382
2383 Handle<Object> Factory::ToBoolean(bool value) { 2383 Handle<Object> Factory::ToBoolean(bool value) {
2384 return value ? true_value() : false_value(); 2384 return value ? true_value() : false_value();
2385 } 2385 }
2386 2386
2387 2387
2388 } } // namespace v8::internal 2388 } } // namespace v8::internal
OLDNEW
« src/base/macros.h ('K') | « src/execution.cc ('k') | src/full-codegen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698