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

Side by Side Diff: src/messages.js

Issue 756423006: Optimize GetPrototype (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add test and add back Push/Pop Created 6 years 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
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/runtime/runtime.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 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 // ------------------------------------------------------------------- 5 // -------------------------------------------------------------------
6 6
7 var kMessages = { 7 var kMessages = {
8 // Error 8 // Error
9 cyclic_proto: ["Cyclic __proto__ value"], 9 cyclic_proto: ["Cyclic __proto__ value"],
10 code_gen_from_strings: ["%0"], 10 code_gen_from_strings: ["%0"],
(...skipping 1133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 var holder = this; 1144 var holder = this;
1145 while (holder) { 1145 while (holder) {
1146 var formatted_stack_trace = 1146 var formatted_stack_trace =
1147 GET_PRIVATE(holder, formatted_stack_trace_symbol); 1147 GET_PRIVATE(holder, formatted_stack_trace_symbol);
1148 if (IS_UNDEFINED(formatted_stack_trace)) { 1148 if (IS_UNDEFINED(formatted_stack_trace)) {
1149 // No formatted stack trace available. 1149 // No formatted stack trace available.
1150 var stack_trace = GET_PRIVATE(holder, stack_trace_symbol); 1150 var stack_trace = GET_PRIVATE(holder, stack_trace_symbol);
1151 if (IS_UNDEFINED(stack_trace)) { 1151 if (IS_UNDEFINED(stack_trace)) {
1152 // Neither formatted nor structured stack trace available. 1152 // Neither formatted nor structured stack trace available.
1153 // Look further up the prototype chain. 1153 // Look further up the prototype chain.
1154 holder = %GetPrototype(holder); 1154 holder = %_GetPrototype(holder);
1155 continue; 1155 continue;
1156 } 1156 }
1157 formatted_stack_trace = FormatStackTrace(holder, stack_trace); 1157 formatted_stack_trace = FormatStackTrace(holder, stack_trace);
1158 SET_PRIVATE(holder, stack_trace_symbol, UNDEFINED); 1158 SET_PRIVATE(holder, stack_trace_symbol, UNDEFINED);
1159 SET_PRIVATE(holder, formatted_stack_trace_symbol, formatted_stack_trace); 1159 SET_PRIVATE(holder, formatted_stack_trace_symbol, formatted_stack_trace);
1160 } 1160 }
1161 return formatted_stack_trace; 1161 return formatted_stack_trace;
1162 } 1162 }
1163 return UNDEFINED; 1163 return UNDEFINED;
1164 }; 1164 };
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 1248
1249 // Global list of error objects visited during ErrorToString. This is 1249 // Global list of error objects visited during ErrorToString. This is
1250 // used to detect cycles in error toString formatting. 1250 // used to detect cycles in error toString formatting.
1251 var visited_errors = new InternalArray(); 1251 var visited_errors = new InternalArray();
1252 var cyclic_error_marker = new $Object(); 1252 var cyclic_error_marker = new $Object();
1253 1253
1254 function GetPropertyWithoutInvokingMonkeyGetters(error, name) { 1254 function GetPropertyWithoutInvokingMonkeyGetters(error, name) {
1255 var current = error; 1255 var current = error;
1256 // Climb the prototype chain until we find the holder. 1256 // Climb the prototype chain until we find the holder.
1257 while (current && !%HasOwnProperty(current, name)) { 1257 while (current && !%HasOwnProperty(current, name)) {
1258 current = %GetPrototype(current); 1258 current = %_GetPrototype(current);
1259 } 1259 }
1260 if (IS_NULL(current)) return UNDEFINED; 1260 if (IS_NULL(current)) return UNDEFINED;
1261 if (!IS_OBJECT(current)) return error[name]; 1261 if (!IS_OBJECT(current)) return error[name];
1262 // If the property is an accessor on one of the predefined errors that can be 1262 // If the property is an accessor on one of the predefined errors that can be
1263 // generated statically by the compiler, don't touch it. This is to address 1263 // generated statically by the compiler, don't touch it. This is to address
1264 // http://code.google.com/p/chromium/issues/detail?id=69187 1264 // http://code.google.com/p/chromium/issues/detail?id=69187
1265 var desc = %GetOwnProperty(current, name); 1265 var desc = %GetOwnProperty(current, name);
1266 if (desc && desc[IS_ACCESSOR_INDEX]) { 1266 if (desc && desc[IS_ACCESSOR_INDEX]) {
1267 var isName = name === "name"; 1267 var isName = name === "name";
1268 if (current === $ReferenceError.prototype) 1268 if (current === $ReferenceError.prototype)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1316 function SetUpStackOverflowBoilerplate() { 1316 function SetUpStackOverflowBoilerplate() {
1317 var boilerplate = MakeRangeError('stack_overflow', []); 1317 var boilerplate = MakeRangeError('stack_overflow', []);
1318 1318
1319 %DefineAccessorPropertyUnchecked( 1319 %DefineAccessorPropertyUnchecked(
1320 boilerplate, 'stack', StackTraceGetter, StackTraceSetter, DONT_ENUM); 1320 boilerplate, 'stack', StackTraceGetter, StackTraceSetter, DONT_ENUM);
1321 1321
1322 return boilerplate; 1322 return boilerplate;
1323 } 1323 }
1324 1324
1325 var kStackOverflowBoilerplate = SetUpStackOverflowBoilerplate(); 1325 var kStackOverflowBoilerplate = SetUpStackOverflowBoilerplate();
OLDNEW
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698