| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 7854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7865 Handle<JSFunction> compiled = Factory::NewFunctionFromSharedFunctionInfo( | 7865 Handle<JSFunction> compiled = Factory::NewFunctionFromSharedFunctionInfo( |
| 7866 shared, | 7866 shared, |
| 7867 Handle<Context>(Top::context()), | 7867 Handle<Context>(Top::context()), |
| 7868 NOT_TENURED); | 7868 NOT_TENURED); |
| 7869 return MakePair(*compiled, *receiver); | 7869 return MakePair(*compiled, *receiver); |
| 7870 } | 7870 } |
| 7871 | 7871 |
| 7872 | 7872 |
| 7873 static ObjectPair Runtime_ResolvePossiblyDirectEval(Arguments args) { | 7873 static ObjectPair Runtime_ResolvePossiblyDirectEval(Arguments args) { |
| 7874 ASSERT(args.length() == 4); | 7874 ASSERT(args.length() == 4); |
| 7875 if (!args[0]->IsJSFunction()) { | |
| 7876 return MakePair(Top::ThrowIllegalOperation(), NULL); | |
| 7877 } | |
| 7878 | 7875 |
| 7879 HandleScope scope; | 7876 HandleScope scope; |
| 7880 Handle<JSFunction> callee = args.at<JSFunction>(0); | 7877 Handle<Object> callee = args.at<Object>(0); |
| 7881 Handle<Object> receiver; // Will be overwritten. | 7878 Handle<Object> receiver; // Will be overwritten. |
| 7882 | 7879 |
| 7883 // Compute the calling context. | 7880 // Compute the calling context. |
| 7884 Handle<Context> context = Handle<Context>(Top::context()); | 7881 Handle<Context> context = Handle<Context>(Top::context()); |
| 7885 #ifdef DEBUG | 7882 #ifdef DEBUG |
| 7886 // Make sure Top::context() agrees with the old code that traversed | 7883 // Make sure Top::context() agrees with the old code that traversed |
| 7887 // the stack frames to compute the context. | 7884 // the stack frames to compute the context. |
| 7888 StackFrameLocator locator; | 7885 StackFrameLocator locator; |
| 7889 JavaScriptFrame* frame = locator.FindJavaScriptFrame(0); | 7886 JavaScriptFrame* frame = locator.FindJavaScriptFrame(0); |
| 7890 ASSERT(Context::cast(frame->context()) == *context); | 7887 ASSERT(Context::cast(frame->context()) == *context); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7938 ASSERT(args[3]->IsSmi()); | 7935 ASSERT(args[3]->IsSmi()); |
| 7939 return CompileGlobalEval(args.at<String>(1), | 7936 return CompileGlobalEval(args.at<String>(1), |
| 7940 args.at<Object>(2), | 7937 args.at<Object>(2), |
| 7941 static_cast<StrictModeFlag>( | 7938 static_cast<StrictModeFlag>( |
| 7942 Smi::cast(args[3])->value())); | 7939 Smi::cast(args[3])->value())); |
| 7943 } | 7940 } |
| 7944 | 7941 |
| 7945 | 7942 |
| 7946 static ObjectPair Runtime_ResolvePossiblyDirectEvalNoLookup(Arguments args) { | 7943 static ObjectPair Runtime_ResolvePossiblyDirectEvalNoLookup(Arguments args) { |
| 7947 ASSERT(args.length() == 4); | 7944 ASSERT(args.length() == 4); |
| 7948 if (!args[0]->IsJSFunction()) { | |
| 7949 return MakePair(Top::ThrowIllegalOperation(), NULL); | |
| 7950 } | |
| 7951 | 7945 |
| 7952 HandleScope scope; | 7946 HandleScope scope; |
| 7953 Handle<JSFunction> callee = args.at<JSFunction>(0); | 7947 Handle<Object> callee = args.at<Object>(0); |
| 7954 | 7948 |
| 7955 // 'eval' is bound in the global context, but it may have been overwritten. | 7949 // 'eval' is bound in the global context, but it may have been overwritten. |
| 7956 // Compare it to the builtin 'GlobalEval' function to make sure. | 7950 // Compare it to the builtin 'GlobalEval' function to make sure. |
| 7957 if (*callee != Top::global_context()->global_eval_fun() || | 7951 if (*callee != Top::global_context()->global_eval_fun() || |
| 7958 !args[1]->IsString()) { | 7952 !args[1]->IsString()) { |
| 7959 return MakePair(*callee, Top::context()->global()->global_receiver()); | 7953 return MakePair(*callee, Top::context()->global()->global_receiver()); |
| 7960 } | 7954 } |
| 7961 | 7955 |
| 7962 ASSERT(args[3]->IsSmi()); | 7956 ASSERT(args[3]->IsSmi()); |
| 7963 return CompileGlobalEval(args.at<String>(1), | 7957 return CompileGlobalEval(args.at<String>(1), |
| (...skipping 3359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11323 } else { | 11317 } else { |
| 11324 // Handle last resort GC and make sure to allow future allocations | 11318 // Handle last resort GC and make sure to allow future allocations |
| 11325 // to grow the heap without causing GCs (if possible). | 11319 // to grow the heap without causing GCs (if possible). |
| 11326 Counters::gc_last_resort_from_js.Increment(); | 11320 Counters::gc_last_resort_from_js.Increment(); |
| 11327 Heap::CollectAllGarbage(false); | 11321 Heap::CollectAllGarbage(false); |
| 11328 } | 11322 } |
| 11329 } | 11323 } |
| 11330 | 11324 |
| 11331 | 11325 |
| 11332 } } // namespace v8::internal | 11326 } } // namespace v8::internal |
| OLD | NEW |