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

Side by Side Diff: src/objects-inl.h

Issue 23691002: Add OptimizedCodeEntry as a new heap object type. An optimized code entry represents an association… (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 template <> inline bool Is<JSFunction>(Object* obj) { 668 template <> inline bool Is<JSFunction>(Object* obj) {
669 return obj->IsJSFunction(); 669 return obj->IsJSFunction();
670 } 670 }
671 671
672 672
673 TYPE_CHECKER(Code, CODE_TYPE) 673 TYPE_CHECKER(Code, CODE_TYPE)
674 TYPE_CHECKER(Oddball, ODDBALL_TYPE) 674 TYPE_CHECKER(Oddball, ODDBALL_TYPE)
675 TYPE_CHECKER(Cell, CELL_TYPE) 675 TYPE_CHECKER(Cell, CELL_TYPE)
676 TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE) 676 TYPE_CHECKER(PropertyCell, PROPERTY_CELL_TYPE)
677 TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE) 677 TYPE_CHECKER(SharedFunctionInfo, SHARED_FUNCTION_INFO_TYPE)
678 TYPE_CHECKER(OptimizedCodeEntry, OPTIMIZED_CODE_ENTRY_TYPE)
678 TYPE_CHECKER(JSGeneratorObject, JS_GENERATOR_OBJECT_TYPE) 679 TYPE_CHECKER(JSGeneratorObject, JS_GENERATOR_OBJECT_TYPE)
679 TYPE_CHECKER(JSModule, JS_MODULE_TYPE) 680 TYPE_CHECKER(JSModule, JS_MODULE_TYPE)
680 TYPE_CHECKER(JSValue, JS_VALUE_TYPE) 681 TYPE_CHECKER(JSValue, JS_VALUE_TYPE)
681 TYPE_CHECKER(JSDate, JS_DATE_TYPE) 682 TYPE_CHECKER(JSDate, JS_DATE_TYPE)
682 TYPE_CHECKER(JSMessageObject, JS_MESSAGE_OBJECT_TYPE) 683 TYPE_CHECKER(JSMessageObject, JS_MESSAGE_OBJECT_TYPE)
683 684
684 685
685 bool Object::IsStringWrapper() { 686 bool Object::IsStringWrapper() {
686 return IsJSValue() && JSValue::cast(this)->value()->IsString(); 687 return IsJSValue() && JSValue::cast(this)->value()->IsString();
687 } 688 }
(...skipping 1879 matching lines...) Expand 10 before | Expand all | Expand 10 after
2567 CAST_ACCESSOR(Name) 2568 CAST_ACCESSOR(Name)
2568 CAST_ACCESSOR(JSReceiver) 2569 CAST_ACCESSOR(JSReceiver)
2569 CAST_ACCESSOR(JSObject) 2570 CAST_ACCESSOR(JSObject)
2570 CAST_ACCESSOR(Smi) 2571 CAST_ACCESSOR(Smi)
2571 CAST_ACCESSOR(HeapObject) 2572 CAST_ACCESSOR(HeapObject)
2572 CAST_ACCESSOR(HeapNumber) 2573 CAST_ACCESSOR(HeapNumber)
2573 CAST_ACCESSOR(Oddball) 2574 CAST_ACCESSOR(Oddball)
2574 CAST_ACCESSOR(Cell) 2575 CAST_ACCESSOR(Cell)
2575 CAST_ACCESSOR(PropertyCell) 2576 CAST_ACCESSOR(PropertyCell)
2576 CAST_ACCESSOR(SharedFunctionInfo) 2577 CAST_ACCESSOR(SharedFunctionInfo)
2578 CAST_ACCESSOR(OptimizedCodeEntry)
2577 CAST_ACCESSOR(Map) 2579 CAST_ACCESSOR(Map)
2578 CAST_ACCESSOR(JSFunction) 2580 CAST_ACCESSOR(JSFunction)
2579 CAST_ACCESSOR(GlobalObject) 2581 CAST_ACCESSOR(GlobalObject)
2580 CAST_ACCESSOR(JSGlobalProxy) 2582 CAST_ACCESSOR(JSGlobalProxy)
2581 CAST_ACCESSOR(JSGlobalObject) 2583 CAST_ACCESSOR(JSGlobalObject)
2582 CAST_ACCESSOR(JSBuiltinsObject) 2584 CAST_ACCESSOR(JSBuiltinsObject)
2583 CAST_ACCESSOR(Code) 2585 CAST_ACCESSOR(Code)
2584 CAST_ACCESSOR(JSArray) 2586 CAST_ACCESSOR(JSArray)
2585 CAST_ACCESSOR(JSArrayBuffer) 2587 CAST_ACCESSOR(JSArrayBuffer)
2586 CAST_ACCESSOR(JSArrayBufferView) 2588 CAST_ACCESSOR(JSArrayBufferView)
(...skipping 2337 matching lines...) Expand 10 before | Expand all | Expand 10 after
4924 // enough power of 2. 4926 // enough power of 2.
4925 if (tries >= 16 && (((tries - 1) & tries) == 0)) { 4927 if (tries >= 16 && (((tries - 1) & tries) == 0)) {
4926 set_optimization_disabled(false); 4928 set_optimization_disabled(false);
4927 set_opt_count(0); 4929 set_opt_count(0);
4928 set_deopt_count(0); 4930 set_deopt_count(0);
4929 code()->set_optimizable(true); 4931 code()->set_optimizable(true);
4930 } 4932 }
4931 } 4933 }
4932 4934
4933 4935
4936 ACCESSORS(OptimizedCodeEntry, native_context, Context, kNativeContextOffset)
4937 ACCESSORS(OptimizedCodeEntry, function, JSFunction, kFunctionOffset)
4938 ACCESSORS(OptimizedCodeEntry, code, Code, kCodeOffset)
4939 ACCESSORS(OptimizedCodeEntry, literals, FixedArray, kLiteralsOffset)
4940
4941
4942 OptimizedCodeEntry* OptimizedCodeEntry::next_by_shared_info() {
4943 Object* object = READ_FIELD(this, kNextBySharedInfoOffset);
4944 if (object == NULL) return NULL;
4945 return OptimizedCodeEntry::cast(object);
4946 }
4947
4948
4949 OptimizedCodeEntry* OptimizedCodeEntry::next_by_native_context() {
4950 Object* object = READ_FIELD(this, kNextByNativeContextOffset);
4951 if (object == NULL) return NULL;
4952 return OptimizedCodeEntry::cast(object);
4953 }
4954
4955
4956 void OptimizedCodeEntry::set_next_by_shared_info(OptimizedCodeEntry* value,
4957 WriteBarrierMode mode) {
4958 WRITE_FIELD(this, kNextBySharedInfoOffset, value);
4959 CONDITIONAL_WRITE_BARRIER(
4960 GetHeap(), this, kNextBySharedInfoOffset, value, mode);
4961 }
4962
4963
4964 void OptimizedCodeEntry::set_next_by_native_context(OptimizedCodeEntry* value,
4965 WriteBarrierMode mode) {
4966 WRITE_FIELD(this, kNextByNativeContextOffset, value);
4967 CONDITIONAL_WRITE_BARRIER(
4968 GetHeap(), this, kNextByNativeContextOffset, value, mode);
4969 }
4970
4971
4972 bool OptimizedCodeEntry::cacheable() {
4973 return static_cast<bool>(READ_BYTE_FIELD(this, kCacheableOffset));
4974 }
4975
4976
4977 void OptimizedCodeEntry::set_cacheable(bool val) {
4978 WRITE_BYTE_FIELD(this, kCacheableOffset, static_cast<byte>(val));
4979 }
4980
4981
4934 bool JSFunction::IsBuiltin() { 4982 bool JSFunction::IsBuiltin() {
4935 return context()->global_object()->IsJSBuiltinsObject(); 4983 return context()->global_object()->IsJSBuiltinsObject();
4936 } 4984 }
4937 4985
4938 4986
4939 bool JSFunction::NeedsArgumentsAdaption() { 4987 bool JSFunction::NeedsArgumentsAdaption() {
4940 return shared()->formal_parameter_count() != 4988 return shared()->formal_parameter_count() !=
4941 SharedFunctionInfo::kDontAdaptArgumentsSentinel; 4989 SharedFunctionInfo::kDontAdaptArgumentsSentinel;
4942 } 4990 }
4943 4991
(...skipping 1348 matching lines...) Expand 10 before | Expand all | Expand 10 after
6292 #undef WRITE_UINT32_FIELD 6340 #undef WRITE_UINT32_FIELD
6293 #undef READ_SHORT_FIELD 6341 #undef READ_SHORT_FIELD
6294 #undef WRITE_SHORT_FIELD 6342 #undef WRITE_SHORT_FIELD
6295 #undef READ_BYTE_FIELD 6343 #undef READ_BYTE_FIELD
6296 #undef WRITE_BYTE_FIELD 6344 #undef WRITE_BYTE_FIELD
6297 6345
6298 6346
6299 } } // namespace v8::internal 6347 } } // namespace v8::internal
6300 6348
6301 #endif // V8_OBJECTS_INL_H_ 6349 #endif // V8_OBJECTS_INL_H_
OLDNEW
« src/objects.h ('K') | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698