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/v8natives.js

Issue 1132513003: Call builtin code wrapped in functions from the bootstrapper. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix extra natives Created 5 years, 7 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
« no previous file with comments | « src/uri.js ('k') | src/weak-collection.js » ('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 var $delete; 5 var $delete;
6 var $functionSourceString; 6 var $functionSourceString;
7 var $getIterator; 7 var $getIterator;
8 var $getMethod; 8 var $getMethod;
9 var $globalEval; 9 var $globalEval;
10 var $installConstants; 10 var $installConstants;
(...skipping 14 matching lines...) Expand all
25 var $objectLookupGetter; 25 var $objectLookupGetter;
26 var $objectLookupSetter; 26 var $objectLookupSetter;
27 var $objectToString; 27 var $objectToString;
28 var $overrideFunction; 28 var $overrideFunction;
29 var $ownPropertyKeys; 29 var $ownPropertyKeys;
30 var $setFunctionName; 30 var $setFunctionName;
31 var $setUpLockedPrototype; 31 var $setUpLockedPrototype;
32 var $toCompletePropertyDescriptor; 32 var $toCompletePropertyDescriptor;
33 var $toNameArray; 33 var $toNameArray;
34 34
35 (function() { 35 (function(global, shared, exports) {
36 36
37 %CheckIsBootstrapping(); 37 %CheckIsBootstrapping();
38 38
39 var GlobalArray = global.Array; 39 var GlobalArray = global.Array;
40 var GlobalBoolean = global.Boolean; 40 var GlobalBoolean = global.Boolean;
41 var GlobalFunction = global.Function; 41 var GlobalFunction = global.Function;
42 var GlobalNumber = global.Number; 42 var GlobalNumber = global.Number;
43 var GlobalObject = global.Object; 43 var GlobalObject = global.Object;
44 44
45 // ---------------------------------------------------------------------------- 45 // ----------------------------------------------------------------------------
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 function GlobalParseFloat(string) { 205 function GlobalParseFloat(string) {
206 string = TO_STRING_INLINE(string); 206 string = TO_STRING_INLINE(string);
207 if (%_HasCachedArrayIndex(string)) return %_GetCachedArrayIndex(string); 207 if (%_HasCachedArrayIndex(string)) return %_GetCachedArrayIndex(string);
208 return %StringParseFloat(string); 208 return %StringParseFloat(string);
209 } 209 }
210 210
211 211
212 function GlobalEval(x) { 212 function GlobalEval(x) {
213 if (!IS_STRING(x)) return x; 213 if (!IS_STRING(x)) return x;
214 214
215 var global_proxy = %GlobalProxy(global); 215 var global_proxy = %GlobalProxy(GlobalEval);
216 216
217 var f = %CompileString(x, false); 217 var f = %CompileString(x, false);
218 if (!IS_FUNCTION(f)) return f; 218 if (!IS_FUNCTION(f)) return f;
219 219
220 return %_CallFunction(global_proxy, f); 220 return %_CallFunction(global_proxy, f);
221 } 221 }
222 222
223 223
224 // ---------------------------------------------------------------------------- 224 // ----------------------------------------------------------------------------
225 225
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 return IS_UNDEFINED(desc) ? false : desc.isEnumerable(); 315 return IS_UNDEFINED(desc) ? false : desc.isEnumerable();
316 } 316 }
317 return %IsPropertyEnumerable(TO_OBJECT_INLINE(this), P); 317 return %IsPropertyEnumerable(TO_OBJECT_INLINE(this), P);
318 } 318 }
319 319
320 320
321 // Extensions for providing property getters and setters. 321 // Extensions for providing property getters and setters.
322 function ObjectDefineGetter(name, fun) { 322 function ObjectDefineGetter(name, fun) {
323 var receiver = this; 323 var receiver = this;
324 if (receiver == null && !IS_UNDETECTABLE(receiver)) { 324 if (receiver == null && !IS_UNDETECTABLE(receiver)) {
325 receiver = %GlobalProxy(global); 325 receiver = %GlobalProxy(ObjectDefineGetter);
326 } 326 }
327 if (!IS_SPEC_FUNCTION(fun)) { 327 if (!IS_SPEC_FUNCTION(fun)) {
328 throw MakeTypeError(kObjectGetterExpectingFunction); 328 throw MakeTypeError(kObjectGetterExpectingFunction);
329 } 329 }
330 var desc = new PropertyDescriptor(); 330 var desc = new PropertyDescriptor();
331 desc.setGet(fun); 331 desc.setGet(fun);
332 desc.setEnumerable(true); 332 desc.setEnumerable(true);
333 desc.setConfigurable(true); 333 desc.setConfigurable(true);
334 DefineOwnProperty(TO_OBJECT_INLINE(receiver), $toName(name), desc, false); 334 DefineOwnProperty(TO_OBJECT_INLINE(receiver), $toName(name), desc, false);
335 } 335 }
336 336
337 337
338 function ObjectLookupGetter(name) { 338 function ObjectLookupGetter(name) {
339 var receiver = this; 339 var receiver = this;
340 if (receiver == null && !IS_UNDETECTABLE(receiver)) { 340 if (receiver == null && !IS_UNDETECTABLE(receiver)) {
341 receiver = %GlobalProxy(global); 341 receiver = %GlobalProxy(ObjectLookupGetter);
342 } 342 }
343 return %LookupAccessor(TO_OBJECT_INLINE(receiver), $toName(name), GETTER); 343 return %LookupAccessor(TO_OBJECT_INLINE(receiver), $toName(name), GETTER);
344 } 344 }
345 345
346 346
347 function ObjectDefineSetter(name, fun) { 347 function ObjectDefineSetter(name, fun) {
348 var receiver = this; 348 var receiver = this;
349 if (receiver == null && !IS_UNDETECTABLE(receiver)) { 349 if (receiver == null && !IS_UNDETECTABLE(receiver)) {
350 receiver = %GlobalProxy(global); 350 receiver = %GlobalProxy(ObjectDefineSetter);
351 } 351 }
352 if (!IS_SPEC_FUNCTION(fun)) { 352 if (!IS_SPEC_FUNCTION(fun)) {
353 throw MakeTypeError(kObjectSetterExpectingFunction); 353 throw MakeTypeError(kObjectSetterExpectingFunction);
354 } 354 }
355 var desc = new PropertyDescriptor(); 355 var desc = new PropertyDescriptor();
356 desc.setSet(fun); 356 desc.setSet(fun);
357 desc.setEnumerable(true); 357 desc.setEnumerable(true);
358 desc.setConfigurable(true); 358 desc.setConfigurable(true);
359 DefineOwnProperty(TO_OBJECT_INLINE(receiver), $toName(name), desc, false); 359 DefineOwnProperty(TO_OBJECT_INLINE(receiver), $toName(name), desc, false);
360 } 360 }
361 361
362 362
363 function ObjectLookupSetter(name) { 363 function ObjectLookupSetter(name) {
364 var receiver = this; 364 var receiver = this;
365 if (receiver == null && !IS_UNDETECTABLE(receiver)) { 365 if (receiver == null && !IS_UNDETECTABLE(receiver)) {
366 receiver = %GlobalProxy(global); 366 receiver = %GlobalProxy(ObjectLookupSetter);
367 } 367 }
368 return %LookupAccessor(TO_OBJECT_INLINE(receiver), $toName(name), SETTER); 368 return %LookupAccessor(TO_OBJECT_INLINE(receiver), $toName(name), SETTER);
369 } 369 }
370 370
371 371
372 function ObjectKeys(obj) { 372 function ObjectKeys(obj) {
373 obj = TO_OBJECT_INLINE(obj); 373 obj = TO_OBJECT_INLINE(obj);
374 if (%_IsJSProxy(obj)) { 374 if (%_IsJSProxy(obj)) {
375 var handler = %GetHandler(obj); 375 var handler = %GetHandler(obj);
376 var names = CallTrap0(handler, "keys", $proxyDerivedKeysTrap); 376 var names = CallTrap0(handler, "keys", $proxyDerivedKeysTrap);
(...skipping 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 // comments we can include a trailing block comment to catch this. 1886 // comments we can include a trailing block comment to catch this.
1887 p += '\n/' + '**/'; 1887 p += '\n/' + '**/';
1888 } 1888 }
1889 var body = (n > 0) ? $toString(args[n - 1]) : ''; 1889 var body = (n > 0) ? $toString(args[n - 1]) : '';
1890 return '(' + function_token + '(' + p + ') {\n' + body + '\n})'; 1890 return '(' + function_token + '(' + p + ') {\n' + body + '\n})';
1891 } 1891 }
1892 1892
1893 1893
1894 function FunctionConstructor(arg1) { // length == 1 1894 function FunctionConstructor(arg1) { // length == 1
1895 var source = NewFunctionString(arguments, 'function'); 1895 var source = NewFunctionString(arguments, 'function');
1896 var global_proxy = %GlobalProxy(global); 1896 var global_proxy = %GlobalProxy(FunctionConstructor);
1897 // Compile the string in the constructor and not a helper so that errors 1897 // Compile the string in the constructor and not a helper so that errors
1898 // appear to come from here. 1898 // appear to come from here.
1899 var f = %_CallFunction(global_proxy, %CompileString(source, true)); 1899 var f = %_CallFunction(global_proxy, %CompileString(source, true));
1900 %FunctionMarkNameShouldPrintAsAnonymous(f); 1900 %FunctionMarkNameShouldPrintAsAnonymous(f);
1901 return f; 1901 return f;
1902 } 1902 }
1903 1903
1904 1904
1905 // ---------------------------------------------------------------------------- 1905 // ----------------------------------------------------------------------------
1906 1906
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1957 $objectLookupGetter = ObjectLookupGetter; 1957 $objectLookupGetter = ObjectLookupGetter;
1958 $objectLookupSetter = ObjectLookupSetter; 1958 $objectLookupSetter = ObjectLookupSetter;
1959 $objectToString = ObjectToString; 1959 $objectToString = ObjectToString;
1960 $overrideFunction = OverrideFunction; 1960 $overrideFunction = OverrideFunction;
1961 $ownPropertyKeys = OwnPropertyKeys; 1961 $ownPropertyKeys = OwnPropertyKeys;
1962 $setFunctionName = SetFunctionName; 1962 $setFunctionName = SetFunctionName;
1963 $setUpLockedPrototype = SetUpLockedPrototype; 1963 $setUpLockedPrototype = SetUpLockedPrototype;
1964 $toCompletePropertyDescriptor = ToCompletePropertyDescriptor; 1964 $toCompletePropertyDescriptor = ToCompletePropertyDescriptor;
1965 $toNameArray = ToNameArray; 1965 $toNameArray = ToNameArray;
1966 1966
1967 })(); 1967 })
OLDNEW
« no previous file with comments | « src/uri.js ('k') | src/weak-collection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698