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

Side by Side Diff: src/factory.h

Issue 237093006: Function allocators handlified. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressing review comments Created 6 years, 8 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/bootstrapper.cc ('k') | src/factory.cc » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_FACTORY_H_ 5 #ifndef V8_FACTORY_H_
6 #define V8_FACTORY_H_ 6 #define V8_FACTORY_H_
7 7
8 #include "isolate.h" 8 #include "isolate.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 Handle<JSGeneratorObject> NewJSGeneratorObject(Handle<JSFunction> function); 381 Handle<JSGeneratorObject> NewJSGeneratorObject(Handle<JSFunction> function);
382 382
383 Handle<JSArrayBuffer> NewJSArrayBuffer(); 383 Handle<JSArrayBuffer> NewJSArrayBuffer();
384 384
385 Handle<JSTypedArray> NewJSTypedArray(ExternalArrayType type); 385 Handle<JSTypedArray> NewJSTypedArray(ExternalArrayType type);
386 386
387 Handle<JSDataView> NewJSDataView(); 387 Handle<JSDataView> NewJSDataView();
388 388
389 Handle<JSProxy> NewJSProxy(Handle<Object> handler, Handle<Object> prototype); 389 Handle<JSProxy> NewJSProxy(Handle<Object> handler, Handle<Object> prototype);
390 390
391 // Reinitialize a JSReceiver into an (empty) JS object of respective type and
392 // size, but keeping the original prototype. The receiver must have at least
393 // the size of the new object. The object is reinitialized and behaves as an
394 // object that has been freshly allocated.
395 void ReinitializeJSReceiver(
396 Handle<JSReceiver> object, InstanceType type, int size);
397
398 // Reinitialize an JSGlobalProxy based on a constructor. The object
399 // must have the same size as objects allocated using the
400 // constructor. The object is reinitialized and behaves as an
401 // object that has been freshly allocated using the constructor.
402 void ReinitializeJSGlobalProxy(Handle<JSGlobalProxy> global,
403 Handle<JSFunction> constructor);
404
391 // Change the type of the argument into a JS object/function and reinitialize. 405 // Change the type of the argument into a JS object/function and reinitialize.
392 void BecomeJSObject(Handle<JSReceiver> object); 406 void BecomeJSObject(Handle<JSReceiver> object);
393 void BecomeJSFunction(Handle<JSReceiver> object); 407 void BecomeJSFunction(Handle<JSReceiver> object);
394 408
395 Handle<JSFunction> NewFunction(Handle<String> name, 409 Handle<JSFunction> NewFunction(Handle<String> name,
396 Handle<Object> prototype); 410 Handle<Object> prototype);
397 411
398 Handle<JSFunction> NewFunctionWithoutPrototype(
399 Handle<String> name,
400 StrictMode strict_mode);
401
402 Handle<JSFunction> NewFunction(Handle<Object> super, bool is_global);
403
404 Handle<JSFunction> BaseNewFunctionFromSharedFunctionInfo(
405 Handle<SharedFunctionInfo> function_info,
406 Handle<Map> function_map,
407 PretenureFlag pretenure);
408
409 Handle<JSFunction> NewFunctionFromSharedFunctionInfo( 412 Handle<JSFunction> NewFunctionFromSharedFunctionInfo(
410 Handle<SharedFunctionInfo> function_info, 413 Handle<SharedFunctionInfo> function_info,
411 Handle<Context> context, 414 Handle<Context> context,
412 PretenureFlag pretenure = TENURED); 415 PretenureFlag pretenure = TENURED);
413 416
417 Handle<JSFunction> NewFunction(Handle<String> name,
418 InstanceType type,
419 int instance_size,
420 Handle<Code> code,
421 bool force_initial_map);
422
423 Handle<JSFunction> NewFunctionWithPrototype(Handle<String> name,
424 InstanceType type,
425 int instance_size,
426 Handle<JSObject> prototype,
427 Handle<Code> code,
428 bool force_initial_map);
429
430 Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
431 StrictMode strict_mode);
432
433 Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
434 Handle<Code> code);
435
414 // Create a serialized scope info. 436 // Create a serialized scope info.
415 Handle<ScopeInfo> NewScopeInfo(int length); 437 Handle<ScopeInfo> NewScopeInfo(int length);
416 438
417 // Create an External object for V8's external API. 439 // Create an External object for V8's external API.
418 Handle<JSObject> NewExternal(void* value); 440 Handle<JSObject> NewExternal(void* value);
419 441
420 Handle<Code> NewCode(const CodeDesc& desc, 442 Handle<Code> NewCode(const CodeDesc& desc,
421 Code::Flags flags, 443 Code::Flags flags,
422 Handle<Object> self_reference, 444 Handle<Object> self_reference,
423 bool immovable = false, 445 bool immovable = false,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 481
460 Handle<Object> NewReferenceError(const char* message, 482 Handle<Object> NewReferenceError(const char* message,
461 Vector< Handle<Object> > args); 483 Vector< Handle<Object> > args);
462 Handle<Object> NewReferenceError(const char* message, Handle<JSArray> args); 484 Handle<Object> NewReferenceError(const char* message, Handle<JSArray> args);
463 Handle<Object> NewReferenceError(Handle<String> message); 485 Handle<Object> NewReferenceError(Handle<String> message);
464 486
465 Handle<Object> NewEvalError(const char* message, 487 Handle<Object> NewEvalError(const char* message,
466 Vector< Handle<Object> > args); 488 Vector< Handle<Object> > args);
467 489
468 490
469 Handle<JSFunction> NewFunction(Handle<String> name,
470 InstanceType type,
471 int instance_size,
472 Handle<Code> code,
473 bool force_initial_map);
474
475 Handle<JSFunction> NewFunction(Handle<Map> function_map,
476 Handle<SharedFunctionInfo> shared, Handle<Object> prototype);
477
478
479 Handle<JSFunction> NewFunctionWithPrototype(Handle<String> name,
480 InstanceType type,
481 int instance_size,
482 Handle<JSObject> prototype,
483 Handle<Code> code,
484 bool force_initial_map);
485
486 Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
487 Handle<Code> code);
488
489 Handle<String> NumberToString(Handle<Object> number); 491 Handle<String> NumberToString(Handle<Object> number);
490 Handle<String> Uint32ToString(uint32_t value); 492 Handle<String> Uint32ToString(uint32_t value);
491 493
492 enum ApiInstanceType { 494 enum ApiInstanceType {
493 JavaScriptObject, 495 JavaScriptObject,
494 InnerGlobalObject, 496 InnerGlobalObject,
495 OuterGlobalObject 497 OuterGlobalObject
496 }; 498 };
497 499
498 Handle<JSFunction> CreateApiFunction( 500 Handle<JSFunction> CreateApiFunction(
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 // object which is neither configurable nor writable) like 'undefined'. 592 // object which is neither configurable nor writable) like 'undefined'.
591 // Returns a null handle when the given name is unknown. 593 // Returns a null handle when the given name is unknown.
592 Handle<Object> GlobalConstantFor(Handle<String> name); 594 Handle<Object> GlobalConstantFor(Handle<String> name);
593 595
594 // Converts the given boolean condition to JavaScript boolean value. 596 // Converts the given boolean condition to JavaScript boolean value.
595 Handle<Object> ToBoolean(bool value); 597 Handle<Object> ToBoolean(bool value);
596 598
597 private: 599 private:
598 Isolate* isolate() { return reinterpret_cast<Isolate*>(this); } 600 Isolate* isolate() { return reinterpret_cast<Isolate*>(this); }
599 601
600 Handle<JSFunction> NewFunctionHelper(Handle<String> name, 602 // Creates a heap object based on the map. The fields of the heap object are
601 Handle<Object> prototype); 603 // not initialized by New<>() functions. It's the responsibility of the caller
604 // to do that.
605 template<typename T>
606 Handle<T> New(Handle<Map> map, AllocationSpace space);
602 607
603 Handle<JSFunction> NewFunctionWithoutPrototypeHelper( 608 template<typename T>
604 Handle<String> name, 609 Handle<T> New(Handle<Map> map,
605 StrictMode strict_mode); 610 AllocationSpace space,
611 Handle<AllocationSite> allocation_site);
612
613 // Initializes a function with a shared part and prototype.
614 // Note: this code was factored out of NewFunctionHelper such that
615 // other parts of the VM could use it. Specifically, a function that creates
616 // instances of type JS_FUNCTION_TYPE benefit from the use of this function.
617 inline void InitializeFunction(Handle<JSFunction> function,
618 Handle<SharedFunctionInfo> shared,
619 Handle<Object> prototype);
620
621 // Creates a function initialized with a shared part.
622 inline Handle<JSFunction> NewFunctionHelper(
623 Handle<Map> function_map,
624 Handle<SharedFunctionInfo> shared,
625 Handle<Object> prototype,
626 PretenureFlag pretenure = TENURED);
606 627
607 // Create a new map cache. 628 // Create a new map cache.
608 Handle<MapCache> NewMapCache(int at_least_space_for); 629 Handle<MapCache> NewMapCache(int at_least_space_for);
609 630
610 // Update the map cache in the native context with (keys, map) 631 // Update the map cache in the native context with (keys, map)
611 Handle<MapCache> AddToMapCache(Handle<Context> context, 632 Handle<MapCache> AddToMapCache(Handle<Context> context,
612 Handle<FixedArray> keys, 633 Handle<FixedArray> keys,
613 Handle<Map> map); 634 Handle<Map> map);
614 }; 635 };
615 636
616 } } // namespace v8::internal 637 } } // namespace v8::internal
617 638
618 #endif // V8_FACTORY_H_ 639 #endif // V8_FACTORY_H_
OLDNEW
« no previous file with comments | « src/bootstrapper.cc ('k') | src/factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698