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

Side by Side Diff: src/assembler.h

Issue 2840018: [Isolates] Moved more compilation-related globals (builtins, runtime, &c.)... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/isolates/
Patch Set: rebase Created 10 years, 5 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
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 // External function 382 // External function
383 383
384 //---------------------------------------------------------------------------- 384 //----------------------------------------------------------------------------
385 class IC_Utility; 385 class IC_Utility;
386 class SCTableReference; 386 class SCTableReference;
387 #ifdef ENABLE_DEBUGGER_SUPPORT 387 #ifdef ENABLE_DEBUGGER_SUPPORT
388 class Debug_Address; 388 class Debug_Address;
389 #endif 389 #endif
390 390
391 391
392 typedef void* ExternalReferenceRedirector(void* original, bool fp_return);
393
394
395 // An ExternalReference represents a C++ address used in the generated 392 // An ExternalReference represents a C++ address used in the generated
396 // code. All references to C++ functions and variables must be encapsulated in 393 // code. All references to C++ functions and variables must be encapsulated in
397 // an ExternalReference instance. This is done in order to track the origin of 394 // an ExternalReference instance. This is done in order to track the origin of
398 // all external references in the code so that they can be bound to the correct 395 // all external references in the code so that they can be bound to the correct
399 // addresses when deserializing a heap. 396 // addresses when deserializing a heap.
400 class ExternalReference BASE_EMBEDDED { 397 class ExternalReference BASE_EMBEDDED {
401 public: 398 public:
402 explicit ExternalReference(Builtins::CFunctionId id); 399 explicit ExternalReference(Builtins::CFunctionId id);
403 400
404 explicit ExternalReference(ApiFunction* ptr); 401 explicit ExternalReference(ApiFunction* ptr);
405 402
406 explicit ExternalReference(Builtins::Name name); 403 explicit ExternalReference(Builtins::Name name);
407 404
408 explicit ExternalReference(Runtime::FunctionId id); 405 explicit ExternalReference(Runtime::FunctionId id);
409 406
410 explicit ExternalReference(Runtime::Function* f); 407 explicit ExternalReference(const Runtime::Function* f);
411 408
412 explicit ExternalReference(const IC_Utility& ic_utility); 409 explicit ExternalReference(const IC_Utility& ic_utility);
413 410
414 #ifdef ENABLE_DEBUGGER_SUPPORT 411 #ifdef ENABLE_DEBUGGER_SUPPORT
415 explicit ExternalReference(const Debug_Address& debug_address); 412 explicit ExternalReference(const Debug_Address& debug_address);
416 #endif 413 #endif
417 414
418 explicit ExternalReference(StatsCounter* counter); 415 explicit ExternalReference(StatsCounter* counter);
419 416
420 explicit ExternalReference(Isolate::AddressId id); 417 explicit ExternalReference(Isolate::AddressId id);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 static ExternalReference re_grow_stack(); 492 static ExternalReference re_grow_stack();
496 493
497 // byte NativeRegExpMacroAssembler::word_character_bitmap 494 // byte NativeRegExpMacroAssembler::word_character_bitmap
498 static ExternalReference re_word_character_map(); 495 static ExternalReference re_word_character_map();
499 496
500 #endif 497 #endif
501 498
502 // This lets you register a function that rewrites all external references. 499 // This lets you register a function that rewrites all external references.
503 // Used by the ARM simulator to catch calls to external references. 500 // Used by the ARM simulator to catch calls to external references.
504 static void set_redirector(ExternalReferenceRedirector* redirector) { 501 static void set_redirector(ExternalReferenceRedirector* redirector) {
505 ASSERT(redirector_ == NULL); // We can't stack them. 502 // We can't stack them.
506 redirector_ = redirector; 503 ASSERT(Isolate::Current()->external_reference_redirector() == NULL);
504 Isolate::Current()->set_external_reference_redirector(redirector);
507 } 505 }
508 506
509 private: 507 private:
510 explicit ExternalReference(void* address) 508 explicit ExternalReference(void* address)
511 : address_(address) {} 509 : address_(address) {}
512 510
513 static ExternalReferenceRedirector* redirector_;
514
515 static void* Redirect(void* address, bool fp_return = false) { 511 static void* Redirect(void* address, bool fp_return = false) {
516 if (redirector_ == NULL) return address; 512 ExternalReferenceRedirector* redirector =
517 void* answer = (*redirector_)(address, fp_return); 513 Isolate::Current()->external_reference_redirector();
514 if (redirector == NULL) return address;
515 void* answer = (*redirector)(address, fp_return);
518 return answer; 516 return answer;
519 } 517 }
520 518
521 static void* Redirect(Address address_arg, bool fp_return = false) { 519 static void* Redirect(Address address_arg, bool fp_return = false) {
520 ExternalReferenceRedirector* redirector =
521 Isolate::Current()->external_reference_redirector();
522 void* address = reinterpret_cast<void*>(address_arg); 522 void* address = reinterpret_cast<void*>(address_arg);
523 void* answer = (redirector_ == NULL) ? 523 void* answer = (redirector == NULL) ?
524 address : 524 address :
525 (*redirector_)(address, fp_return); 525 (*redirector)(address, fp_return);
526 return answer; 526 return answer;
527 } 527 }
528 528
529 void* address_; 529 void* address_;
530 }; 530 };
531 531
532 532
533 // ----------------------------------------------------------------------------- 533 // -----------------------------------------------------------------------------
534 // Utility functions 534 // Utility functions
535 535
(...skipping 27 matching lines...) Expand all
563 unsigned int num_bits_set; 563 unsigned int num_bits_set;
564 for (num_bits_set = 0; x; x >>= 1) { 564 for (num_bits_set = 0; x; x >>= 1) {
565 num_bits_set += x & 1; 565 num_bits_set += x & 1;
566 } 566 }
567 return num_bits_set; 567 return num_bits_set;
568 } 568 }
569 569
570 } } // namespace v8::internal 570 } } // namespace v8::internal
571 571
572 #endif // V8_ASSEMBLER_H_ 572 #endif // V8_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/arm/virtual-frame-arm.cc ('k') | src/assembler.cc » ('j') | src/runtime.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698