| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 (function(global, utils) { | 5 (function(global, utils) { |
| 6 | 6 |
| 7 "use strict"; | 7 "use strict"; |
| 8 | 8 |
| 9 %CheckIsBootstrapping(); | 9 %CheckIsBootstrapping(); |
| 10 | 10 |
| 11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
| 12 // Imports | 12 // Imports |
| 13 | 13 |
| 14 var GlobalObject = global.Object; | 14 var GlobalObject = global.Object; |
| 15 var MakeRangeError; | |
| 16 var MakeTypeError; | |
| 17 var MaxSimple; | 15 var MaxSimple; |
| 18 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 16 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
| 19 | 17 |
| 20 utils.Import(function(from) { | 18 utils.Import(function(from) { |
| 21 MakeTypeError = from.MakeTypeError; | |
| 22 MakeRangeError = from.MakeRangeError; | |
| 23 MaxSimple = from.MaxSimple; | 19 MaxSimple = from.MaxSimple; |
| 24 }); | 20 }); |
| 25 | 21 |
| 26 // ------------------------------------------------------------------- | 22 // ------------------------------------------------------------------- |
| 27 | 23 |
| 28 | 24 |
| 29 function CheckSharedIntegerTypedArray(ia) { | 25 function CheckSharedIntegerTypedArray(ia) { |
| 30 if (!%IsSharedIntegerTypedArray(ia)) { | 26 if (!%IsSharedIntegerTypedArray(ia)) { |
| 31 throw MakeTypeError(kNotIntegerSharedTypedArray, ia); | 27 throw %make_type_error(kNotIntegerSharedTypedArray, ia); |
| 32 } | 28 } |
| 33 } | 29 } |
| 34 | 30 |
| 35 function CheckSharedInteger32TypedArray(ia) { | 31 function CheckSharedInteger32TypedArray(ia) { |
| 36 CheckSharedIntegerTypedArray(ia); | 32 CheckSharedIntegerTypedArray(ia); |
| 37 if (!%IsSharedInteger32TypedArray(ia)) { | 33 if (!%IsSharedInteger32TypedArray(ia)) { |
| 38 throw MakeTypeError(kNotInt32SharedTypedArray, ia); | 34 throw %make_type_error(kNotInt32SharedTypedArray, ia); |
| 39 } | 35 } |
| 40 } | 36 } |
| 41 | 37 |
| 42 // https://tc39.github.io/ecmascript_sharedmem/shmem.html#Atomics.ValidateAtomic
Access | 38 // https://tc39.github.io/ecmascript_sharedmem/shmem.html#Atomics.ValidateAtomic
Access |
| 43 function ValidateIndex(index, length) { | 39 function ValidateIndex(index, length) { |
| 44 var numberIndex = TO_NUMBER(index); | 40 var numberIndex = TO_NUMBER(index); |
| 45 var accessIndex = TO_INTEGER(numberIndex); | 41 var accessIndex = TO_INTEGER(numberIndex); |
| 46 if (numberIndex !== accessIndex) { | 42 if (numberIndex !== accessIndex) { |
| 47 throw MakeRangeError(kInvalidAtomicAccessIndex); | 43 throw %make_range_error(kInvalidAtomicAccessIndex); |
| 48 } | 44 } |
| 49 if (accessIndex < 0 || accessIndex >= length) { | 45 if (accessIndex < 0 || accessIndex >= length) { |
| 50 throw MakeRangeError(kInvalidAtomicAccessIndex); | 46 throw %make_range_error(kInvalidAtomicAccessIndex); |
| 51 } | 47 } |
| 52 return accessIndex; | 48 return accessIndex; |
| 53 } | 49 } |
| 54 | 50 |
| 55 //------------------------------------------------------------------- | 51 //------------------------------------------------------------------- |
| 56 | 52 |
| 57 function AtomicsCompareExchangeJS(sta, index, oldValue, newValue) { | 53 function AtomicsCompareExchangeJS(sta, index, oldValue, newValue) { |
| 58 CheckSharedIntegerTypedArray(sta); | 54 CheckSharedIntegerTypedArray(sta); |
| 59 index = ValidateIndex(index, %_TypedArrayGetLength(sta)); | 55 index = ValidateIndex(index, %_TypedArrayGetLength(sta)); |
| 60 oldValue = TO_NUMBER(oldValue); | 56 oldValue = TO_NUMBER(oldValue); |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 "and", AtomicsAndJS, | 144 "and", AtomicsAndJS, |
| 149 "or", AtomicsOrJS, | 145 "or", AtomicsOrJS, |
| 150 "xor", AtomicsXorJS, | 146 "xor", AtomicsXorJS, |
| 151 "exchange", AtomicsExchangeJS, | 147 "exchange", AtomicsExchangeJS, |
| 152 "isLockFree", AtomicsIsLockFreeJS, | 148 "isLockFree", AtomicsIsLockFreeJS, |
| 153 "wait", AtomicsWaitJS, | 149 "wait", AtomicsWaitJS, |
| 154 "wake", AtomicsWakeJS, | 150 "wake", AtomicsWakeJS, |
| 155 ]); | 151 ]); |
| 156 | 152 |
| 157 }) | 153 }) |
| OLD | NEW |