Index: src/runtime/runtime-atomics.cc |
diff --git a/src/runtime/runtime-atomics.cc b/src/runtime/runtime-atomics.cc |
index 636371c134334eaad5736afc6316d778d562cc36..ba869148b8fbfd11e16b05de452b34bbcae638ea 100644 |
--- a/src/runtime/runtime-atomics.cc |
+++ b/src/runtime/runtime-atomics.cc |
@@ -444,18 +444,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsCompareExchange) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoCompareExchange<ctype>(isolate, buffer, index, oldobj, newobj); |
+ return DoCompareExchange<ctype>(isolate, source, index, oldobj, newobj); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoCompareExchangeUint8Clamped(isolate, buffer, index, oldobj, |
+ return DoCompareExchangeUint8Clamped(isolate, source, index, oldobj, |
newobj); |
default: |
@@ -475,18 +476,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsLoad) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoLoad<ctype>(isolate, buffer, index); |
+ return DoLoad<ctype>(isolate, source, index); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoLoad<uint8_t>(isolate, buffer, index); |
+ return DoLoad<uint8_t>(isolate, source, index); |
default: |
break; |
@@ -506,18 +508,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsStore) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoStore<ctype>(isolate, buffer, index, value); |
+ return DoStore<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoStoreUint8Clamped(isolate, buffer, index, value); |
+ return DoStoreUint8Clamped(isolate, source, index, value); |
default: |
break; |
@@ -537,18 +540,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsAdd) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoAdd<ctype>(isolate, buffer, index, value); |
+ return DoAdd<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoAddUint8Clamped(isolate, buffer, index, value); |
+ return DoAddUint8Clamped(isolate, source, index, value); |
default: |
break; |
@@ -568,18 +572,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsSub) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoSub<ctype>(isolate, buffer, index, value); |
+ return DoSub<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoSubUint8Clamped(isolate, buffer, index, value); |
+ return DoSubUint8Clamped(isolate, source, index, value); |
default: |
break; |
@@ -599,18 +604,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsAnd) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoAnd<ctype>(isolate, buffer, index, value); |
+ return DoAnd<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoAndUint8Clamped(isolate, buffer, index, value); |
+ return DoAndUint8Clamped(isolate, source, index, value); |
default: |
break; |
@@ -630,18 +636,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsOr) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoOr<ctype>(isolate, buffer, index, value); |
+ return DoOr<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoOrUint8Clamped(isolate, buffer, index, value); |
+ return DoOrUint8Clamped(isolate, source, index, value); |
default: |
break; |
@@ -661,18 +668,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsXor) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoXor<ctype>(isolate, buffer, index, value); |
+ return DoXor<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoXorUint8Clamped(isolate, buffer, index, value); |
+ return DoXorUint8Clamped(isolate, source, index, value); |
default: |
break; |
@@ -692,18 +700,19 @@ RUNTIME_FUNCTION(Runtime_AtomicsExchange) { |
RUNTIME_ASSERT(sta->GetBuffer()->is_shared()); |
RUNTIME_ASSERT(index < NumberToSize(isolate, sta->length())); |
- void* buffer = sta->GetBuffer()->backing_store(); |
+ uint8_t* source = static_cast<uint8_t*>(sta->GetBuffer()->backing_store()) + |
+ NumberToSize(isolate, sta->byte_offset()); |
switch (sta->type()) { |
#define TYPED_ARRAY_CASE(Type, typeName, TYPE, ctype, size) \ |
case kExternal##Type##Array: \ |
- return DoExchange<ctype>(isolate, buffer, index, value); |
+ return DoExchange<ctype>(isolate, source, index, value); |
INTEGER_TYPED_ARRAYS(TYPED_ARRAY_CASE) |
#undef TYPED_ARRAY_CASE |
case kExternalUint8ClampedArray: |
- return DoExchangeUint8Clamped(isolate, buffer, index, value); |
+ return DoExchangeUint8Clamped(isolate, source, index, value); |
default: |
break; |