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

Side by Side Diff: src/stub-cache.h

Issue 437953003: Reuse the nonexistent handler frontend for transition handlers (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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/mips64/stub-cache-mips64.cc ('k') | src/stub-cache.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_STUB_CACHE_H_ 5 #ifndef V8_STUB_CACHE_H_
6 #define V8_STUB_CACHE_H_ 6 #define V8_STUB_CACHE_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 384
385 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, 385 virtual Register FrontendHeader(Register object_reg, Handle<Name> name,
386 Label* miss) { 386 Label* miss) {
387 UNREACHABLE(); 387 UNREACHABLE();
388 return receiver(); 388 return receiver();
389 } 389 }
390 390
391 virtual void FrontendFooter(Handle<Name> name, Label* miss) { UNREACHABLE(); } 391 virtual void FrontendFooter(Handle<Name> name, Label* miss) { UNREACHABLE(); }
392 392
393 Register Frontend(Register object_reg, Handle<Name> name); 393 Register Frontend(Register object_reg, Handle<Name> name);
394 void NonexistentFrontendHeader(Handle<Name> name, Label* miss,
395 Register scratch1, Register scratch2);
394 396
395 // TODO(verwaest): Make non-static. 397 // TODO(verwaest): Make non-static.
396 static void GenerateFastApiCall(MacroAssembler* masm, 398 static void GenerateFastApiCall(MacroAssembler* masm,
397 const CallOptimization& optimization, 399 const CallOptimization& optimization,
398 Handle<Map> receiver_map, Register receiver, 400 Handle<Map> receiver_map, Register receiver,
399 Register scratch, bool is_store, int argc, 401 Register scratch, bool is_store, int argc,
400 Register* values); 402 Register* values);
401 403
402 // Helper function used to check that the dictionary doesn't contain 404 // Helper function used to check that the dictionary doesn't contain
403 // the property. This function may return false negatives, so miss_label 405 // the property. This function may return false negatives, so miss_label
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 protected: 514 protected:
513 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, 515 virtual Register FrontendHeader(Register object_reg, Handle<Name> name,
514 Label* miss); 516 Label* miss);
515 517
516 virtual void FrontendFooter(Handle<Name> name, Label* miss); 518 virtual void FrontendFooter(Handle<Name> name, Label* miss);
517 519
518 private: 520 private:
519 Register CallbackFrontend(Register object_reg, Handle<Name> name, 521 Register CallbackFrontend(Register object_reg, Handle<Name> name,
520 Handle<Object> callback); 522 Handle<Object> callback);
521 Handle<Code> CompileLoadNonexistent(Handle<Name> name); 523 Handle<Code> CompileLoadNonexistent(Handle<Name> name);
522 void NonexistentFrontend(Handle<Name> name);
523
524 void GenerateLoadField(Register reg, 524 void GenerateLoadField(Register reg,
525 FieldIndex field, 525 FieldIndex field,
526 Representation representation); 526 Representation representation);
527 void GenerateLoadConstant(Handle<Object> value); 527 void GenerateLoadConstant(Handle<Object> value);
528 void GenerateLoadCallback(Register reg, 528 void GenerateLoadCallback(Register reg,
529 Handle<ExecutableAccessorInfo> callback); 529 Handle<ExecutableAccessorInfo> callback);
530 void GenerateLoadCallback(const CallOptimization& call_optimization, 530 void GenerateLoadCallback(const CallOptimization& call_optimization,
531 Handle<Map> receiver_map); 531 Handle<Map> receiver_map);
532 void GenerateLoadInterceptor(Register holder_reg, 532 void GenerateLoadInterceptor(Register holder_reg,
533 LookupResult* lookup, 533 LookupResult* lookup,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 } 582 }
583 583
584 protected: 584 protected:
585 virtual Register FrontendHeader(Register object_reg, Handle<Name> name, 585 virtual Register FrontendHeader(Register object_reg, Handle<Name> name,
586 Label* miss); 586 Label* miss);
587 587
588 virtual void FrontendFooter(Handle<Name> name, Label* miss); 588 virtual void FrontendFooter(Handle<Name> name, Label* miss);
589 void GenerateRestoreName(Label* label, Handle<Name> name); 589 void GenerateRestoreName(Label* label, Handle<Name> name);
590 590
591 private: 591 private:
592 void GenerateNegativeHolderLookup(Register holder_reg, Handle<Name> name,
593 Label* miss);
594
595 void GenerateStoreTransition(Handle<Map> transition, Handle<Name> name, 592 void GenerateStoreTransition(Handle<Map> transition, Handle<Name> name,
596 Register receiver_reg, Register name_reg, 593 Register receiver_reg, Register name_reg,
597 Register value_reg, Register scratch1, 594 Register value_reg, Register scratch1,
598 Register scratch2, Register scratch3, 595 Register scratch2, Register scratch3,
599 Label* miss_label, Label* slow); 596 Label* miss_label, Label* slow);
600 597
601 void GenerateStoreField(Handle<JSObject> object, LookupResult* lookup, 598 void GenerateStoreField(Handle<JSObject> object, LookupResult* lookup,
602 Register receiver_reg, Register name_reg, 599 Register receiver_reg, Register name_reg,
603 Register value_reg, Register scratch1, 600 Register value_reg, Register scratch1,
604 Register scratch2, Label* miss_label); 601 Register scratch2, Label* miss_label);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 Handle<JSFunction> constant_function_; 683 Handle<JSFunction> constant_function_;
687 bool is_simple_api_call_; 684 bool is_simple_api_call_;
688 Handle<FunctionTemplateInfo> expected_receiver_type_; 685 Handle<FunctionTemplateInfo> expected_receiver_type_;
689 Handle<CallHandlerInfo> api_call_info_; 686 Handle<CallHandlerInfo> api_call_info_;
690 }; 687 };
691 688
692 689
693 } } // namespace v8::internal 690 } } // namespace v8::internal
694 691
695 #endif // V8_STUB_CACHE_H_ 692 #endif // V8_STUB_CACHE_H_
OLDNEW
« no previous file with comments | « src/mips64/stub-cache-mips64.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698