| 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 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 pretenure), | 294 pretenure), |
| 295 JSFunction); | 295 JSFunction); |
| 296 } | 296 } |
| 297 | 297 |
| 298 | 298 |
| 299 Handle<JSFunction> Factory::NewFunctionFromSharedFunctionInfo( | 299 Handle<JSFunction> Factory::NewFunctionFromSharedFunctionInfo( |
| 300 Handle<SharedFunctionInfo> function_info, | 300 Handle<SharedFunctionInfo> function_info, |
| 301 Handle<Context> context, | 301 Handle<Context> context, |
| 302 PretenureFlag pretenure) { | 302 PretenureFlag pretenure) { |
| 303 Handle<JSFunction> result = BaseNewFunctionFromSharedFunctionInfo( | 303 Handle<JSFunction> result = BaseNewFunctionFromSharedFunctionInfo( |
| 304 function_info, Top::function_map(), pretenure); | 304 function_info, Isolate::Current()->function_map(), pretenure); |
| 305 result->set_context(*context); | 305 result->set_context(*context); |
| 306 int number_of_literals = function_info->num_literals(); | 306 int number_of_literals = function_info->num_literals(); |
| 307 Handle<FixedArray> literals = | 307 Handle<FixedArray> literals = |
| 308 Factory::NewFixedArray(number_of_literals, pretenure); | 308 Factory::NewFixedArray(number_of_literals, pretenure); |
| 309 if (number_of_literals > 0) { | 309 if (number_of_literals > 0) { |
| 310 // Store the object, regexp and array functions in the literals | 310 // Store the object, regexp and array functions in the literals |
| 311 // array prefix. These functions will be used when creating | 311 // array prefix. These functions will be used when creating |
| 312 // object, regexp and array literals in this function. | 312 // object, regexp and array literals in this function. |
| 313 literals->set(JSFunction::kLiteralGlobalContextIndex, | 313 literals->set(JSFunction::kLiteralGlobalContextIndex, |
| 314 context->global_context()); | 314 context->global_context()); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 Handle<Object> Factory::NewError(const char* type, | 405 Handle<Object> Factory::NewError(const char* type, |
| 406 Vector< Handle<Object> > args) { | 406 Vector< Handle<Object> > args) { |
| 407 return NewError("MakeError", type, args); | 407 return NewError("MakeError", type, args); |
| 408 } | 408 } |
| 409 | 409 |
| 410 | 410 |
| 411 Handle<Object> Factory::NewError(const char* maker, | 411 Handle<Object> Factory::NewError(const char* maker, |
| 412 const char* type, | 412 const char* type, |
| 413 Handle<JSArray> args) { | 413 Handle<JSArray> args) { |
| 414 Handle<String> make_str = Factory::LookupAsciiSymbol(maker); | 414 Handle<String> make_str = Factory::LookupAsciiSymbol(maker); |
| 415 Handle<Object> fun_obj(Top::builtins()->GetProperty(*make_str)); | 415 Handle<Object> fun_obj( |
| 416 Isolate::Current()->builtins()->GetProperty(*make_str)); |
| 416 // If the builtins haven't been properly configured yet this error | 417 // If the builtins haven't been properly configured yet this error |
| 417 // constructor may not have been defined. Bail out. | 418 // constructor may not have been defined. Bail out. |
| 418 if (!fun_obj->IsJSFunction()) | 419 if (!fun_obj->IsJSFunction()) |
| 419 return Factory::undefined_value(); | 420 return Factory::undefined_value(); |
| 420 Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj); | 421 Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj); |
| 421 Handle<Object> type_obj = Factory::LookupAsciiSymbol(type); | 422 Handle<Object> type_obj = Factory::LookupAsciiSymbol(type); |
| 422 Object** argv[2] = { type_obj.location(), | 423 Object** argv[2] = { type_obj.location(), |
| 423 Handle<Object>::cast(args).location() }; | 424 Handle<Object>::cast(args).location() }; |
| 424 | 425 |
| 425 // Invoke the JavaScript factory method. If an exception is thrown while | 426 // Invoke the JavaScript factory method. If an exception is thrown while |
| 426 // running the factory method, use the exception as the result. | 427 // running the factory method, use the exception as the result. |
| 427 bool caught_exception; | 428 bool caught_exception; |
| 428 Handle<Object> result = Execution::TryCall(fun, | 429 Handle<Object> result = Execution::TryCall(fun, |
| 429 Top::builtins(), | 430 Isolate::Current()->builtins(), |
| 430 2, | 431 2, |
| 431 argv, | 432 argv, |
| 432 &caught_exception); | 433 &caught_exception); |
| 433 return result; | 434 return result; |
| 434 } | 435 } |
| 435 | 436 |
| 436 | 437 |
| 437 Handle<Object> Factory::NewError(Handle<String> message) { | 438 Handle<Object> Factory::NewError(Handle<String> message) { |
| 438 return NewError("$Error", message); | 439 return NewError("$Error", message); |
| 439 } | 440 } |
| 440 | 441 |
| 441 | 442 |
| 442 Handle<Object> Factory::NewError(const char* constructor, | 443 Handle<Object> Factory::NewError(const char* constructor, |
| 443 Handle<String> message) { | 444 Handle<String> message) { |
| 444 Handle<String> constr = Factory::LookupAsciiSymbol(constructor); | 445 Handle<String> constr = Factory::LookupAsciiSymbol(constructor); |
| 445 Handle<JSFunction> fun = | 446 Handle<JSFunction> fun = |
| 446 Handle<JSFunction>( | 447 Handle<JSFunction>( |
| 447 JSFunction::cast( | 448 JSFunction::cast( |
| 448 Top::builtins()->GetProperty(*constr))); | 449 Isolate::Current()->builtins()->GetProperty(*constr))); |
| 449 Object** argv[1] = { Handle<Object>::cast(message).location() }; | 450 Object** argv[1] = { Handle<Object>::cast(message).location() }; |
| 450 | 451 |
| 451 // Invoke the JavaScript factory method. If an exception is thrown while | 452 // Invoke the JavaScript factory method. If an exception is thrown while |
| 452 // running the factory method, use the exception as the result. | 453 // running the factory method, use the exception as the result. |
| 453 bool caught_exception; | 454 bool caught_exception; |
| 454 Handle<Object> result = Execution::TryCall(fun, | 455 Handle<Object> result = Execution::TryCall(fun, |
| 455 Top::builtins(), | 456 Isolate::Current()->builtins(), |
| 456 1, | 457 1, |
| 457 argv, | 458 argv, |
| 458 &caught_exception); | 459 &caught_exception); |
| 459 return result; | 460 return result; |
| 460 } | 461 } |
| 461 | 462 |
| 462 | 463 |
| 463 Handle<JSFunction> Factory::NewFunction(Handle<String> name, | 464 Handle<JSFunction> Factory::NewFunction(Handle<String> name, |
| 464 InstanceType type, | 465 InstanceType type, |
| 465 int instance_size, | 466 int instance_size, |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 | 642 |
| 642 | 643 |
| 643 Handle<JSObject> Factory::NewJSObjectFromMap(Handle<Map> map) { | 644 Handle<JSObject> Factory::NewJSObjectFromMap(Handle<Map> map) { |
| 644 CALL_HEAP_FUNCTION(HEAP->AllocateJSObjectFromMap(*map, NOT_TENURED), | 645 CALL_HEAP_FUNCTION(HEAP->AllocateJSObjectFromMap(*map, NOT_TENURED), |
| 645 JSObject); | 646 JSObject); |
| 646 } | 647 } |
| 647 | 648 |
| 648 | 649 |
| 649 Handle<JSArray> Factory::NewJSArray(int length, | 650 Handle<JSArray> Factory::NewJSArray(int length, |
| 650 PretenureFlag pretenure) { | 651 PretenureFlag pretenure) { |
| 651 Handle<JSObject> obj = NewJSObject(Top::array_function(), pretenure); | 652 Handle<JSObject> obj = |
| 653 NewJSObject(Isolate::Current()->array_function(), pretenure); |
| 652 CALL_HEAP_FUNCTION(Handle<JSArray>::cast(obj)->Initialize(length), JSArray); | 654 CALL_HEAP_FUNCTION(Handle<JSArray>::cast(obj)->Initialize(length), JSArray); |
| 653 } | 655 } |
| 654 | 656 |
| 655 | 657 |
| 656 Handle<JSArray> Factory::NewJSArrayWithElements(Handle<FixedArray> elements, | 658 Handle<JSArray> Factory::NewJSArrayWithElements(Handle<FixedArray> elements, |
| 657 PretenureFlag pretenure) { | 659 PretenureFlag pretenure) { |
| 658 Handle<JSArray> result = | 660 Handle<JSArray> result = |
| 659 Handle<JSArray>::cast(NewJSObject(Top::array_function(), pretenure)); | 661 Handle<JSArray>::cast(NewJSObject(Isolate::Current()->array_function(), |
| 662 pretenure)); |
| 660 result->SetContent(*elements); | 663 result->SetContent(*elements); |
| 661 return result; | 664 return result; |
| 662 } | 665 } |
| 663 | 666 |
| 664 | 667 |
| 665 Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( | 668 Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( |
| 666 Handle<String> name, int number_of_literals, Handle<Code> code) { | 669 Handle<String> name, int number_of_literals, Handle<Code> code) { |
| 667 Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name); | 670 Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name); |
| 668 shared->set_code(*code); | 671 shared->set_code(*code); |
| 669 int literals_array_size = number_of_literals; | 672 int literals_array_size = number_of_literals; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 693 Handle<NumberDictionary> dictionary, | 696 Handle<NumberDictionary> dictionary, |
| 694 uint32_t key, | 697 uint32_t key, |
| 695 Handle<Object> value) { | 698 Handle<Object> value) { |
| 696 CALL_HEAP_FUNCTION(dictionary->AtNumberPut(key, *value), NumberDictionary); | 699 CALL_HEAP_FUNCTION(dictionary->AtNumberPut(key, *value), NumberDictionary); |
| 697 } | 700 } |
| 698 | 701 |
| 699 | 702 |
| 700 Handle<JSFunction> Factory::NewFunctionHelper(Handle<String> name, | 703 Handle<JSFunction> Factory::NewFunctionHelper(Handle<String> name, |
| 701 Handle<Object> prototype) { | 704 Handle<Object> prototype) { |
| 702 Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); | 705 Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); |
| 703 CALL_HEAP_FUNCTION(HEAP->AllocateFunction(*Top::function_map(), | 706 CALL_HEAP_FUNCTION(HEAP->AllocateFunction(*Isolate::Current()->function_map(), |
| 704 *function_share, | 707 *function_share, |
| 705 *prototype), | 708 *prototype), |
| 706 JSFunction); | 709 JSFunction); |
| 707 } | 710 } |
| 708 | 711 |
| 709 | 712 |
| 710 Handle<JSFunction> Factory::NewFunction(Handle<String> name, | 713 Handle<JSFunction> Factory::NewFunction(Handle<String> name, |
| 711 Handle<Object> prototype) { | 714 Handle<Object> prototype) { |
| 712 Handle<JSFunction> fun = NewFunctionHelper(name, prototype); | 715 Handle<JSFunction> fun = NewFunctionHelper(name, prototype); |
| 713 fun->set_context(Top::context()->global_context()); | 716 fun->set_context(Isolate::Current()->context()->global_context()); |
| 714 return fun; | 717 return fun; |
| 715 } | 718 } |
| 716 | 719 |
| 717 | 720 |
| 718 Handle<JSFunction> Factory::NewFunctionWithoutPrototypeHelper( | 721 Handle<JSFunction> Factory::NewFunctionWithoutPrototypeHelper( |
| 719 Handle<String> name) { | 722 Handle<String> name) { |
| 720 Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); | 723 Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); |
| 721 CALL_HEAP_FUNCTION(HEAP->AllocateFunction( | 724 CALL_HEAP_FUNCTION(HEAP->AllocateFunction( |
| 722 *Top::function_without_prototype_map(), | 725 *Isolate::Current()->function_without_prototype_map(), |
| 723 *function_share, | 726 *function_share, |
| 724 *the_hole_value()), | 727 *the_hole_value()), |
| 725 JSFunction); | 728 JSFunction); |
| 726 } | 729 } |
| 727 | 730 |
| 728 | 731 |
| 729 Handle<JSFunction> Factory::NewFunctionWithoutPrototype(Handle<String> name) { | 732 Handle<JSFunction> Factory::NewFunctionWithoutPrototype(Handle<String> name) { |
| 730 Handle<JSFunction> fun = NewFunctionWithoutPrototypeHelper(name); | 733 Handle<JSFunction> fun = NewFunctionWithoutPrototypeHelper(name); |
| 731 fun->set_context(Top::context()->global_context()); | 734 fun->set_context(Isolate::Current()->context()->global_context()); |
| 732 return fun; | 735 return fun; |
| 733 } | 736 } |
| 734 | 737 |
| 735 | 738 |
| 736 Handle<Object> Factory::ToObject(Handle<Object> object) { | 739 Handle<Object> Factory::ToObject(Handle<Object> object) { |
| 737 CALL_HEAP_FUNCTION(object->ToObject(), Object); | 740 CALL_HEAP_FUNCTION(object->ToObject(), Object); |
| 738 } | 741 } |
| 739 | 742 |
| 740 | 743 |
| 741 Handle<Object> Factory::ToObject(Handle<Object> object, | 744 Handle<Object> Factory::ToObject(Handle<Object> object, |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 972 Execution::ConfigureInstance(instance, | 975 Execution::ConfigureInstance(instance, |
| 973 instance_template, | 976 instance_template, |
| 974 pending_exception); | 977 pending_exception); |
| 975 } else { | 978 } else { |
| 976 *pending_exception = false; | 979 *pending_exception = false; |
| 977 } | 980 } |
| 978 } | 981 } |
| 979 | 982 |
| 980 | 983 |
| 981 } } // namespace v8::internal | 984 } } // namespace v8::internal |
| OLD | NEW |