| 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 2685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2696 | 2696 |
| 2697 static Object* Runtime_Math_tan(Arguments args) { | 2697 static Object* Runtime_Math_tan(Arguments args) { |
| 2698 NoHandleAllocation ha; | 2698 NoHandleAllocation ha; |
| 2699 ASSERT(args.length() == 1); | 2699 ASSERT(args.length() == 1); |
| 2700 | 2700 |
| 2701 CONVERT_DOUBLE_CHECKED(x, args[0]); | 2701 CONVERT_DOUBLE_CHECKED(x, args[0]); |
| 2702 return Heap::AllocateHeapNumber(tan(x)); | 2702 return Heap::AllocateHeapNumber(tan(x)); |
| 2703 } | 2703 } |
| 2704 | 2704 |
| 2705 | 2705 |
| 2706 // The NewArguments function is only used when constructing the |
| 2707 // arguments array when calling non-functions from JavaScript in |
| 2708 // runtime.js:CALL_NON_FUNCTION. |
| 2706 static Object* Runtime_NewArguments(Arguments args) { | 2709 static Object* Runtime_NewArguments(Arguments args) { |
| 2707 NoHandleAllocation ha; | 2710 NoHandleAllocation ha; |
| 2708 ASSERT(args.length() == 1); | 2711 ASSERT(args.length() == 1); |
| 2709 | 2712 |
| 2710 // ECMA-262, 3rd., 10.1.8, p.39 | 2713 // ECMA-262, 3rd., 10.1.8, p.39 |
| 2711 CONVERT_CHECKED(JSFunction, callee, args[0]); | 2714 CONVERT_CHECKED(JSFunction, callee, args[0]); |
| 2712 | 2715 |
| 2713 // Compute the frame holding the arguments. | 2716 // Compute the frame holding the arguments. |
| 2714 JavaScriptFrameIterator it; | 2717 JavaScriptFrameIterator it; |
| 2715 it.AdvanceToArgumentsFrame(); | 2718 it.AdvanceToArgumentsFrame(); |
| 2716 JavaScriptFrame* frame = it.frame(); | 2719 JavaScriptFrame* frame = it.frame(); |
| 2717 | 2720 |
| 2718 const int length = frame->GetProvidedParametersCount(); | 2721 const int length = frame->GetProvidedParametersCount(); |
| 2719 Object* result = Heap::AllocateArgumentsObject(callee, length); | 2722 Object* result = Heap::AllocateArgumentsObject(callee, length); |
| 2720 if (result->IsFailure()) return result; | 2723 if (result->IsFailure()) return result; |
| 2721 FixedArray* array = FixedArray::cast(JSObject::cast(result)->elements()); | 2724 FixedArray* array = FixedArray::cast(JSObject::cast(result)->elements()); |
| 2722 ASSERT(array->length() == length); | 2725 ASSERT(array->length() == length); |
| 2723 for (int i = 0; i < length; i++) { | 2726 for (int i = 0; i < length; i++) { |
| 2724 array->set(i, frame->GetParameter(i)); | 2727 array->set(i, frame->GetParameter(i)); |
| 2725 } | 2728 } |
| 2726 return result; | 2729 return result; |
| 2727 } | 2730 } |
| 2728 | 2731 |
| 2729 | 2732 |
| 2733 static Object* Runtime_NewArgumentsFast(Arguments args) { |
| 2734 NoHandleAllocation ha; |
| 2735 ASSERT(args.length() == 3); |
| 2736 |
| 2737 JSFunction* callee = JSFunction::cast(args[0]); |
| 2738 Object** parameters = reinterpret_cast<Object**>(args[1]); |
| 2739 const int length = Smi::cast(args[2])->value(); |
| 2740 |
| 2741 Object* result = Heap::AllocateArgumentsObject(callee, length); |
| 2742 if (result->IsFailure()) return result; |
| 2743 FixedArray* array = FixedArray::cast(JSObject::cast(result)->elements()); |
| 2744 ASSERT(array->length() == length); |
| 2745 FixedArray::WriteBarrierMode mode = array->GetWriteBarrierMode(); |
| 2746 for (int i = 0; i < length; i++) { |
| 2747 array->set(i, *--parameters, mode); |
| 2748 } |
| 2749 return result; |
| 2750 } |
| 2751 |
| 2752 |
| 2730 static Object* Runtime_NewClosure(Arguments args) { | 2753 static Object* Runtime_NewClosure(Arguments args) { |
| 2731 HandleScope scope; | 2754 HandleScope scope; |
| 2732 ASSERT(args.length() == 2); | 2755 ASSERT(args.length() == 2); |
| 2733 CONVERT_ARG_CHECKED(JSFunction, boilerplate, 0); | 2756 CONVERT_ARG_CHECKED(JSFunction, boilerplate, 0); |
| 2734 CONVERT_ARG_CHECKED(Context, context, 1); | 2757 CONVERT_ARG_CHECKED(Context, context, 1); |
| 2735 | 2758 |
| 2736 Handle<JSFunction> result = | 2759 Handle<JSFunction> result = |
| 2737 Factory::NewFunctionFromBoilerplate(boilerplate, context); | 2760 Factory::NewFunctionFromBoilerplate(boilerplate, context); |
| 2738 return *result; | 2761 return *result; |
| 2739 } | 2762 } |
| (...skipping 2287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5027 | 5050 |
| 5028 void Runtime::PerformGC(Object* result) { | 5051 void Runtime::PerformGC(Object* result) { |
| 5029 Failure* failure = Failure::cast(result); | 5052 Failure* failure = Failure::cast(result); |
| 5030 // Try to do a garbage collection; ignore it if it fails. The C | 5053 // Try to do a garbage collection; ignore it if it fails. The C |
| 5031 // entry stub will throw an out-of-memory exception in that case. | 5054 // entry stub will throw an out-of-memory exception in that case. |
| 5032 Heap::CollectGarbage(failure->requested(), failure->allocation_space()); | 5055 Heap::CollectGarbage(failure->requested(), failure->allocation_space()); |
| 5033 } | 5056 } |
| 5034 | 5057 |
| 5035 | 5058 |
| 5036 } } // namespace v8::internal | 5059 } } // namespace v8::internal |
| OLD | NEW |