| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 1948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1959 NoHandleAllocation ha; | 1959 NoHandleAllocation ha; |
| 1960 ASSERT(args.length() == 2); | 1960 ASSERT(args.length() == 2); |
| 1961 | 1961 |
| 1962 CONVERT_CHECKED(JSFunction, fun, args[0]); | 1962 CONVERT_CHECKED(JSFunction, fun, args[0]); |
| 1963 CONVERT_CHECKED(Smi, length, args[1]); | 1963 CONVERT_CHECKED(Smi, length, args[1]); |
| 1964 fun->shared()->set_length(length->value()); | 1964 fun->shared()->set_length(length->value()); |
| 1965 return length; | 1965 return length; |
| 1966 } | 1966 } |
| 1967 | 1967 |
| 1968 | 1968 |
| 1969 // Creates a local, readonly, property called length with the correct |
| 1970 // length (when read by the user). This effectively overwrites the |
| 1971 // interceptor used to normally provide the length. |
| 1972 RUNTIME_FUNCTION(MaybeObject*, Runtime_BoundFunctionSetLength) { |
| 1973 NoHandleAllocation ha; |
| 1974 ASSERT(args.length() == 2); |
| 1975 CONVERT_CHECKED(JSFunction, fun, args[0]); |
| 1976 CONVERT_CHECKED(Smi, length, args[1]); |
| 1977 MaybeObject* maybe_name = |
| 1978 isolate->heap()->AllocateStringFromAscii(CStrVector("length")); |
| 1979 String* name; |
| 1980 if (!maybe_name->To(&name)) return maybe_name; |
| 1981 PropertyAttributes attr = |
| 1982 static_cast<PropertyAttributes>(DONT_DELETE | DONT_ENUM | READ_ONLY); |
| 1983 return fun->AddProperty(name, length, attr, kNonStrictMode); |
| 1984 } |
| 1985 |
| 1986 |
| 1969 RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetPrototype) { | 1987 RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetPrototype) { |
| 1970 NoHandleAllocation ha; | 1988 NoHandleAllocation ha; |
| 1971 ASSERT(args.length() == 2); | 1989 ASSERT(args.length() == 2); |
| 1972 | 1990 |
| 1973 CONVERT_CHECKED(JSFunction, fun, args[0]); | 1991 CONVERT_CHECKED(JSFunction, fun, args[0]); |
| 1974 ASSERT(fun->should_have_prototype()); | 1992 ASSERT(fun->should_have_prototype()); |
| 1975 Object* obj; | 1993 Object* obj; |
| 1976 { MaybeObject* maybe_obj = | 1994 { MaybeObject* maybe_obj = |
| 1977 Accessors::FunctionSetPrototype(fun, args[1], NULL); | 1995 Accessors::FunctionSetPrototype(fun, args[1], NULL); |
| 1978 if (!maybe_obj->ToObject(&obj)) return maybe_obj; | 1996 if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
| (...skipping 10787 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12766 } else { | 12784 } else { |
| 12767 // Handle last resort GC and make sure to allow future allocations | 12785 // Handle last resort GC and make sure to allow future allocations |
| 12768 // to grow the heap without causing GCs (if possible). | 12786 // to grow the heap without causing GCs (if possible). |
| 12769 isolate->counters()->gc_last_resort_from_js()->Increment(); | 12787 isolate->counters()->gc_last_resort_from_js()->Increment(); |
| 12770 isolate->heap()->CollectAllGarbage(false); | 12788 isolate->heap()->CollectAllGarbage(false); |
| 12771 } | 12789 } |
| 12772 } | 12790 } |
| 12773 | 12791 |
| 12774 | 12792 |
| 12775 } } // namespace v8::internal | 12793 } } // namespace v8::internal |
| OLD | NEW |