OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 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 // This files contains runtime support implemented in JavaScript. | 5 // This files contains runtime support implemented in JavaScript. |
6 | 6 |
7 // CAUTION: Some of the functions specified in this file are called | 7 // CAUTION: Some of the functions specified in this file are called |
8 // directly from compiled code. These are the functions with names in | 8 // directly from compiled code. These are the functions with names in |
9 // ALL CAPS. The compiled code passes the first argument in 'this'. | 9 // ALL CAPS. The compiled code passes the first argument in 'this'. |
10 | 10 |
(...skipping 25 matching lines...) Expand all Loading... |
36 | 36 |
37 // ---------------------------------------------------------------------------- | 37 // ---------------------------------------------------------------------------- |
38 | 38 |
39 | 39 |
40 /* --------------------------------- | 40 /* --------------------------------- |
41 - - - U t i l i t i e s - - - | 41 - - - U t i l i t i e s - - - |
42 --------------------------------- | 42 --------------------------------- |
43 */ | 43 */ |
44 | 44 |
45 | 45 |
46 // This function should be called rather than %AddElement in contexts where the | |
47 // argument might not be less than 2**32-1. ES2015 ToLength semantics mean that | |
48 // this is a concern at basically all callsites. | |
49 function AddIndexedProperty(obj, index, value) { | |
50 if (index === TO_UINT32(index) && index !== kMaxUint32) { | |
51 %AddElement(obj, index, value); | |
52 } else { | |
53 %AddNamedProperty(obj, TO_STRING(index), value, NONE); | |
54 } | |
55 } | |
56 %SetForceInlineFlag(AddIndexedProperty); | |
57 | |
58 | |
59 function ToPositiveInteger(x, rangeErrorIndex) { | 46 function ToPositiveInteger(x, rangeErrorIndex) { |
60 var i = TO_INTEGER_MAP_MINUS_ZERO(x); | 47 var i = TO_INTEGER_MAP_MINUS_ZERO(x); |
61 if (i < 0) throw MakeRangeError(rangeErrorIndex); | 48 if (i < 0) throw MakeRangeError(rangeErrorIndex); |
62 return i; | 49 return i; |
63 } | 50 } |
64 | 51 |
65 | 52 |
66 function MaxSimple(a, b) { | 53 function MaxSimple(a, b) { |
67 return a > b ? a : b; | 54 return a > b ? a : b; |
68 } | 55 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 // possible due to code generation for array literals. When | 102 // possible due to code generation for array literals. When |
116 // generating code for a array literal a boilerplate array is created | 103 // generating code for a array literal a boilerplate array is created |
117 // that is cloned when running the code. It is essential that the | 104 // that is cloned when running the code. It is essential that the |
118 // boilerplate gets the right prototype. | 105 // boilerplate gets the right prototype. |
119 %FunctionSetPrototype(GlobalArray, new GlobalArray(0)); | 106 %FunctionSetPrototype(GlobalArray, new GlobalArray(0)); |
120 | 107 |
121 // ---------------------------------------------------------------------------- | 108 // ---------------------------------------------------------------------------- |
122 // Exports | 109 // Exports |
123 | 110 |
124 utils.Export(function(to) { | 111 utils.Export(function(to) { |
125 to.AddIndexedProperty = AddIndexedProperty; | |
126 to.MaxSimple = MaxSimple; | 112 to.MaxSimple = MaxSimple; |
127 to.MinSimple = MinSimple; | 113 to.MinSimple = MinSimple; |
128 to.ToPositiveInteger = ToPositiveInteger; | 114 to.ToPositiveInteger = ToPositiveInteger; |
129 to.SpeciesConstructor = SpeciesConstructor; | 115 to.SpeciesConstructor = SpeciesConstructor; |
130 }); | 116 }); |
131 | 117 |
132 }) | 118 }) |
OLD | NEW |