Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(864)

Side by Side Diff: src/factory.cc

Issue 7623011: Implement function proxies (except for their use as constructors). (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed second round of comments. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/factory.h ('k') | src/heap.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 882 matching lines...) Expand 10 before | Expand all | Expand 10 after
893 893
894 Handle<JSProxy> Factory::NewJSProxy(Handle<Object> handler, 894 Handle<JSProxy> Factory::NewJSProxy(Handle<Object> handler,
895 Handle<Object> prototype) { 895 Handle<Object> prototype) {
896 CALL_HEAP_FUNCTION( 896 CALL_HEAP_FUNCTION(
897 isolate(), 897 isolate(),
898 isolate()->heap()->AllocateJSProxy(*handler, *prototype), 898 isolate()->heap()->AllocateJSProxy(*handler, *prototype),
899 JSProxy); 899 JSProxy);
900 } 900 }
901 901
902 902
903 void Factory::BecomeJSObject(Handle<JSProxy> object) { 903 void Factory::BecomeJSObject(Handle<JSReceiver> object) {
904 CALL_HEAP_FUNCTION_VOID( 904 CALL_HEAP_FUNCTION_VOID(
905 isolate(), 905 isolate(),
906 isolate()->heap()->ReinitializeJSProxyAsJSObject(*object)); 906 isolate()->heap()->ReinitializeJSReceiver(
907 *object, JS_OBJECT_TYPE, JSObject::kHeaderSize));
907 } 908 }
908 909
909 910
911 void Factory::BecomeJSFunction(Handle<JSReceiver> object) {
912 CALL_HEAP_FUNCTION_VOID(
913 isolate(),
914 isolate()->heap()->ReinitializeJSReceiver(
915 *object, JS_FUNCTION_TYPE, JSFunction::kSize));
916 }
917
918
910 Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( 919 Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
911 Handle<String> name, 920 Handle<String> name,
912 int number_of_literals, 921 int number_of_literals,
913 Handle<Code> code, 922 Handle<Code> code,
914 Handle<SerializedScopeInfo> scope_info) { 923 Handle<SerializedScopeInfo> scope_info) {
915 Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name); 924 Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name);
916 shared->set_code(*code); 925 shared->set_code(*code);
917 shared->set_scope_info(*scope_info); 926 shared->set_scope_info(*scope_info);
918 int literals_array_size = number_of_literals; 927 int literals_array_size = number_of_literals;
919 // If the function contains object, regexp or array literals, 928 // If the function contains object, regexp or array literals,
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 Execution::ConfigureInstance(instance, 1271 Execution::ConfigureInstance(instance,
1263 instance_template, 1272 instance_template,
1264 pending_exception); 1273 pending_exception);
1265 } else { 1274 } else {
1266 *pending_exception = false; 1275 *pending_exception = false;
1267 } 1276 }
1268 } 1277 }
1269 1278
1270 1279
1271 } } // namespace v8::internal 1280 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/factory.h ('k') | src/heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698