| OLD | NEW |
| 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 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 if (object->IsHeapObject() && | 181 if (object->IsHeapObject() && |
| 182 HeapObject::cast(*object)->map()->has_instance_call_handler()) { | 182 HeapObject::cast(*object)->map()->has_instance_call_handler()) { |
| 183 return Handle<JSFunction>( | 183 return Handle<JSFunction>( |
| 184 Top::global_context()->call_as_function_delegate()); | 184 Top::global_context()->call_as_function_delegate()); |
| 185 } | 185 } |
| 186 | 186 |
| 187 return Factory::undefined_value(); | 187 return Factory::undefined_value(); |
| 188 } | 188 } |
| 189 | 189 |
| 190 | 190 |
| 191 Handle<Object> Execution::GetConstructorDelegate(Handle<Object> object) { |
| 192 ASSERT(!object->IsJSFunction()); |
| 193 |
| 194 // If you return a function from here, it will be called when an |
| 195 // attempt is made to call the given object as a constructor. |
| 196 |
| 197 // Objects created through the API can have an instance-call handler |
| 198 // that should be used when calling the object as a function. |
| 199 if (object->IsHeapObject() && |
| 200 HeapObject::cast(*object)->map()->has_instance_call_handler()) { |
| 201 return Handle<JSFunction>( |
| 202 Top::global_context()->call_as_constructor_delegate()); |
| 203 } |
| 204 |
| 205 return Factory::undefined_value(); |
| 206 } |
| 207 |
| 208 |
| 191 // Static state for stack guards. | 209 // Static state for stack guards. |
| 192 StackGuard::ThreadLocal StackGuard::thread_local_; | 210 StackGuard::ThreadLocal StackGuard::thread_local_; |
| 193 | 211 |
| 194 | 212 |
| 195 StackGuard::StackGuard() { | 213 StackGuard::StackGuard() { |
| 196 // NOTE: Overall the StackGuard code assumes that the stack grows towards | 214 // NOTE: Overall the StackGuard code assumes that the stack grows towards |
| 197 // lower addresses. | 215 // lower addresses. |
| 198 ExecutionAccess access; | 216 ExecutionAccess access; |
| 199 if (thread_local_.nesting_++ == 0) { | 217 if (thread_local_.nesting_++ == 0) { |
| 200 // Initial StackGuard is being set. We will set the stack limits based on | 218 // Initial StackGuard is being set. We will set the stack limits based on |
| (...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 // All allocation spaces other than NEW_SPACE have the same effect. | 658 // All allocation spaces other than NEW_SPACE have the same effect. |
| 641 Heap::CollectAllGarbage(); | 659 Heap::CollectAllGarbage(); |
| 642 return v8::Undefined(); | 660 return v8::Undefined(); |
| 643 } | 661 } |
| 644 | 662 |
| 645 | 663 |
| 646 static GCExtension kGCExtension; | 664 static GCExtension kGCExtension; |
| 647 v8::DeclareExtension kGCExtensionDeclaration(&kGCExtension); | 665 v8::DeclareExtension kGCExtensionDeclaration(&kGCExtension); |
| 648 | 666 |
| 649 } } // namespace v8::internal | 667 } } // namespace v8::internal |
| OLD | NEW |