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

Side by Side Diff: src/builtins.cc

Issue 171104: Remove one of the GCs performed by the --gc-greedy flag. The GC performed by... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 4 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
« no previous file with comments | « src/arm/codegen-arm.cc ('k') | src/ia32/builtins-ia32.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 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 // ... 54 // ...
55 // BUILTIN_ARG(n): Last argument 55 // BUILTIN_ARG(n): Last argument
56 // 56 //
57 // and they evaluate to undefined values if too few arguments were 57 // and they evaluate to undefined values if too few arguments were
58 // passed to the builtin function invocation. 58 // passed to the builtin function invocation.
59 // 59 //
60 // __argc__ is the number of arguments including the receiver. 60 // __argc__ is the number of arguments including the receiver.
61 // ---------------------------------------------------------------------------- 61 // ----------------------------------------------------------------------------
62 62
63 63
64 // TODO(1238487): We should consider passing whether or not the 64 // TODO(428): We should consider passing whether or not the
65 // builtin was invoked as a constructor as part of the 65 // builtin was invoked as a constructor as part of the
66 // arguments. Maybe we also want to pass the called function? 66 // arguments. Maybe we also want to pass the called function?
67 #define BUILTIN(name) \ 67 #define BUILTIN(name) \
68 static Object* Builtin_##name(int __argc__, Object** __argv__) { \ 68 static Object* Builtin_##name(int __argc__, Object** __argv__) { \
69 Handle<Object> receiver(&__argv__[0]); 69 Handle<Object> receiver(&__argv__[0]);
70 70
71 71
72 // Use an inline function to avoid evaluating the index (n) more than 72 // Use an inline function to avoid evaluating the index (n) more than
73 // once in the BUILTIN_ARG macro. 73 // once in the BUILTIN_ARG macro.
74 static inline Object* __builtin_arg__(int n, int argc, Object** argv) { 74 static inline Object* __builtin_arg__(int n, int argc, Object** argv) {
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 if (current == Heap::null_value()) *arg = Heap::undefined_value(); 329 if (current == Heap::null_value()) *arg = Heap::undefined_value();
330 } 330 }
331 return holder; 331 return holder;
332 } 332 }
333 333
334 334
335 BUILTIN(HandleApiCall) { 335 BUILTIN(HandleApiCall) {
336 HandleScope scope; 336 HandleScope scope;
337 bool is_construct = CalledAsConstructor(); 337 bool is_construct = CalledAsConstructor();
338 338
339 // TODO(1238487): This is not nice. We need to get rid of this 339 // TODO(428): Remove use of static variable, handle API callbacks directly.
340 // kludgy behavior and start handling API calls in a more direct
341 // way - maybe compile specialized stubs lazily?.
342 Handle<JSFunction> function = 340 Handle<JSFunction> function =
343 Handle<JSFunction>(JSFunction::cast(Builtins::builtin_passed_function)); 341 Handle<JSFunction>(JSFunction::cast(Builtins::builtin_passed_function));
344 342
345 if (is_construct) { 343 if (is_construct) {
346 Handle<FunctionTemplateInfo> desc = 344 Handle<FunctionTemplateInfo> desc =
347 Handle<FunctionTemplateInfo>( 345 Handle<FunctionTemplateInfo>(
348 FunctionTemplateInfo::cast(function->shared()->function_data())); 346 FunctionTemplateInfo::cast(function->shared()->function_data()));
349 bool pending_exception = false; 347 bool pending_exception = false;
350 Factory::ConfigureInstance(desc, Handle<JSObject>::cast(receiver), 348 Factory::ConfigureInstance(desc, Handle<JSObject>::cast(receiver),
351 &pending_exception); 349 &pending_exception);
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 if (entry->contains(pc)) { 773 if (entry->contains(pc)) {
776 return names_[i]; 774 return names_[i];
777 } 775 }
778 } 776 }
779 } 777 }
780 return NULL; 778 return NULL;
781 } 779 }
782 780
783 781
784 } } // namespace v8::internal 782 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/codegen-arm.cc ('k') | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698