How big is the offset from buffer to data ? const void* Data <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=80&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523b8F1aEDx%25252F6En%25252FkOKh2zVkvONjtDNg9gr5KG7gT9XeJk%25253D&gsn=Data&ct=xref_usages>() const { return buffer_ <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&ct=xref_jump_to_def&gsn=buffer_> -> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=218&ct=xref_jump_to_def&gsn=-%3E> Data <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=225&ct=xref_jump_to_def&gsn=Data>(); }
sorry for spamming emails, i will try to condensate more Il giorno lun 10 set 2018 alle ore 23:07 dan Med <litokis.ta...@gmail.com> ha scritto: > Cause i saw the code but didn't find how it handles all the possible > javascript i might write into a script file.... > > Il giorno lun 10 set 2018 alle ore 23:06 dan Med <litokis.ta...@gmail.com> > ha scritto: > >> But after using it for a little while, I have found v8 in general is >> pretty simple. It provides an interface to C functions and memory. This is >> kinda what it's for. >> >> so how can i see the memory management ? >> >> >> Il giorno lun 10 set 2018 alle ore 23:06 dan Med <litokis.ta...@gmail.com> >> ha scritto: >> >>> So, the hole length of this raw memory is set to be Data ? And to use it >>> i should create a view on top of it like with typedarrays? >>> >>> >>> So to call arraybuffer::append i should first, try to make the typed >>> array bigger that action will call the arraybuffer::append ? i didn't ask >>> how memcpy work, i didn't get the Data() thing, in the class that's all. >>> >>> Il giorno lun 10 set 2018 alle ore 22:55 @soylentgraham < >>> gra...@grahamreeves.com> ha scritto: >>> >>>> > How can i understand the structure in memory of an arraybuffer and how >>>> > big is the data field which is pointed by this void pointerIt has no >>>> > structure. It is just a series of linear bytes, raw memory, allocated by >>>> > the memory allocator. (If you implement your own memory allocator you >>>> > can catch when this happens)It's just the data(buffer) for an array. >>>> > How are they represented in memory....It IS memory. It's nothing more >>>> > (it's an array of bytes) >>>> > How big is the data field ?If by "field", you mean, the data buffer... >>>> > it's Capacity >>>> > <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=76&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523kB%25252BJ1WxDvoDqf1c8Tz5Ol3yne4lD03cRpevK2LHMUZk%25253D&gsn=Capacity&ct=xref_usages> >>>> > (capacity is how much it can fit) in length. But not how much is being >>>> > used. (bytes_used) >>>> If you're curious about when memory grows, reallocates, is written to, >>>> accessed... it might be worth setting up your environment so you can debug >>>> it by stepping through the code as it executes. You can watch memory, >>>> (this would show what memcpy changes) see the values passed around, track >>>> when memory gets allocated etc. >>>> Your questions are a mix of very broad, ("How does v8 work") and very >>>> specific programming questions (what is memcpy() doing)Broad questions are >>>> very hard to answer in general. ("How does a car work") >>>> >>>> I agree, simply browsing the code doesn't give a good overview of say, how >>>> the javascript compiler works, or how memory is utilised. (How it is >>>> allocated is very simple, on the C/++ side it doesn't implement any memory >>>> management, and the array buffer/view is a view of the C-side memory)But >>>> after using it for a little while, I have found v8 in general is pretty >>>> simple. It provides an interface to C functions and memory. This is kinda >>>> what it's for. >>>> But the point of v8 is that it does a lot of that for you. I don't REALLY >>>> need to know how the memory is tracked on the javascript side, it just >>>> works (if I'm using the API correctly)Then again, if you NEED to know how >>>> it works for a specific purpose (very restricted memory, fixing a bug), we >>>> can help you a lot more easily by answering a very specific question. ("My >>>> car's low-oil light is blinking, where do I fill it up") >>>> If you're just curious as to how the entire v8 engine works... that's a >>>> massive ask. A lot of people work on it, and there is a lot of work and >>>> topics involved.Your best bet is reading the (limited) documentation on >>>> the wiki, and read the blog posts https://v8project.blogspot.com/ which go >>>> into quite a lot of detail on each post topic.I've not seen any real >>>> general overview (the wiki itself says it's out of date) so, stepping >>>> through all the code as it executes is probably your best bet. >>>> >>>> >>>> On Monday, 10 September 2018 21:25:37 UTC+1, dan Med wrote: >>>>> >>>>> in this snippet for example >>>>> >>>>> namespace WTF >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=40&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%2523WTF%252523n%252523namespace&gsn=WTF&ct=xref_usages> >>>>> {// A utility class to build an ArrayBuffer instance. Validity must be >>>>> checked// by isValid() before using an instance.class WTF_EXPORT >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/wtf_export.h?l=46&ct=xref_jump_to_def&gsn=WTF_EXPORT> >>>>> ArrayBufferBuilder >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=44&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523ArrayBufferBuilder%25253AWTF%252523c%252523hTnYOn1mFcU%2Bkythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523NyhHD05MjDx8XOe1m%25252BLqXBLvqdjWPsLmDrRvvmR2Ywk%25253D&gsn=ArrayBufferBuilder&ct=xref_usages> >>>>> final { // Disallow copying since it's expensive and we don't want code >>>>> to do it by // accident. USING_FAST_MALLOC >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/allocator.h?l=146&ct=xref_jump_to_def&gsn=USING_FAST_MALLOC>(ArrayBufferBuilder >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=44&ct=xref_jump_to_def&gsn=ArrayBufferBuilder>); >>>>> public: // Creates an ArrayBufferBuilder using the default capacity. >>>>> ArrayBufferBuilder >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=51&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523me5JBk4wDIaIJCK86MiUpy%25252BnGYRZwEr0AvVg3KaU0pw%25253D&gsn=ArrayBufferBuilder&ct=xref_usages>(); >>>>> ArrayBufferBuilder >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=53&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523VW0P45Tk9IGjtOqM%25252B9dHdJ64so3WDAfcY1jNBLt0GNY%25253D&gsn=ArrayBufferBuilder&ct=xref_usages>(unsigned >>>>> capacity >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=53&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523trfcCH7BPCRWiubGq1QF9bypkCRNYtWGHb2AzglMces%25253D&gsn=capacity&ct=xref_usages>) >>>>> : bytes_used_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=92&ct=xref_jump_to_def&gsn=bytes_used_>(0), >>>>> variable_capacity_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=93&ct=xref_jump_to_def&gsn=variable_capacity_>(true) >>>>> { buffer_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&ct=xref_jump_to_def&gsn=buffer_> >>>>> = >>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=226&ct=xref_jump_to_def&gsn=%3D> >>>>> ArrayBuffer >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=42&ct=xref_jump_to_def&gsn=ArrayBuffer>::Create >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=125&ct=xref_jump_to_def&gsn=Create>(capacity >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=53&ct=xref_jump_to_def&gsn=capacity>, >>>>> 1); } bool IsValid >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=58&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523Bx72YH%25252BiA4nF5ZIPsFhA9MQpdVCDOCRHSZa0Ksg6Wp4%25253D&gsn=IsValid&ct=xref_usages>() >>>>> const { return buffer_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&ct=xref_jump_to_def&gsn=buffer_>.get >>>>> >>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=211&ct=xref_jump_to_def&gsn=get>(); >>>>> } // Appending empty data is not allowed. unsigned Append >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=61&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523BHKR8BlIFhr03faCJF5mu7RDXZ%25252FPtZDAlnACyKmv1XM%25253D&gsn=Append&ct=xref_usages>(const >>>>> char* data >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=61&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%25233VvJP%25252BUI3abzouA4%25252FYSBHt09pw3AiNI9e9QAJGooqYI%25253D&gsn=data&ct=xref_usages>, >>>>> unsigned length >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=61&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523xOZXOK9mCrzsbUtqCxdbDuLg939IJhl7gbf0EykKwnY%25253D&gsn=length&ct=xref_usages>); >>>>> // Returns the accumulated data as an ArrayBuffer instance. If needed, >>>>> // creates a new ArrayBuffer instance and copies contents from the >>>>> internal // buffer to it. Otherwise, returns a RefPtr pointing to the >>>>> internal // buffer. scoped_refptr >>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=167&ct=xref_jump_to_def&gsn=scoped_refptr><ArrayBuffer >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=42&ct=xref_jump_to_def&gsn=ArrayBuffer>> >>>>> ToArrayBuffer >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=67&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523JX559OA9Zt0rALNU4DOTOkzcmtws4U5V42xhN0rrbow%25253D&gsn=ToArrayBuffer&ct=xref_usages>(); >>>>> // Converts the accumulated data into a String using the default >>>>> encoding. String >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/text/wtf_string.h?l=64&ct=xref_jump_to_def&gsn=String> >>>>> ToString >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=70&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523VMCyw7t%25252FF0UIo65pz8LTbfX5k5G4pIXrUNQbDNKDjaE%25253D&gsn=ToString&ct=xref_usages>(); >>>>> // Number of bytes currently accumulated. unsigned ByteLength >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=73&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523P5Klo%25252BJeJiug%25252FrSAfsaHI8wAnW8h5UBg2%25252BoJByO85kA%25253D&gsn=ByteLength&ct=xref_usages>() >>>>> const { return bytes_used_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=92&ct=xref_jump_to_def&gsn=bytes_used_>; >>>>> } // Number of bytes allocated. unsigned Capacity >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=76&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523kB%25252BJ1WxDvoDqf1c8Tz5Ol3yne4lD03cRpevK2LHMUZk%25253D&gsn=Capacity&ct=xref_usages>() >>>>> const { return buffer_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&ct=xref_jump_to_def&gsn=buffer_>-> >>>>> >>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=218&ct=xref_jump_to_def&gsn=-%3E>ByteLength >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=249&ct=xref_jump_to_def&gsn=ByteLength>(); >>>>> } void ShrinkToFit >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=78&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523WBvAUuWtgva6ffSXIiEGEkt%25252FFFbeCcQcsCz5E%25252FHCKOo%25253D&gsn=ShrinkToFit&ct=xref_usages>(); >>>>> const void* Data >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=80&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523b8F1aEDx%25252F6En%25252FkOKh2zVkvONjtDNg9gr5KG7gT9XeJk%25253D&gsn=Data&ct=xref_usages>() >>>>> const { return buffer_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&ct=xref_jump_to_def&gsn=buffer_>-> >>>>> >>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=218&ct=xref_jump_to_def&gsn=-%3E>Data >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=225&ct=xref_jump_to_def&gsn=Data>(); >>>>> } // If set to false, the capacity won't be expanded and when appended >>>>> data // overflows, the overflowed part will be dropped. void >>>>> SetVariableCapacity >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=84&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%25232ib6USbezkKcLs8hjPaCz4GUGrUHdD%25252BeN%25252FKenERnRLA%25253D&gsn=SetVariableCapacity&ct=xref_usages>(bool >>>>> value >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=84&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523vUjrriXMW5FurGjU87jcAlZRQs3b8JSgA4Tt1xrSq7I%25253D&gsn=value&ct=xref_usages>) >>>>> { variable_capacity_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=93&ct=xref_jump_to_def&gsn=variable_capacity_> >>>>> = value >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=84&ct=xref_jump_to_def&gsn=value>; >>>>> } private: // Expands the size of m_buffer to size + m_bytesUsed bytes. >>>>> Returns true // iff successful. If reallocation is needed, copies only >>>>> data in // [0, m_bytesUsed) range. bool ExpandCapacity >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=90&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523szv9AYLlP3J7qhn%25252Fm%25252BJqzPmSgWf45%25252BRVwVxvXDk3WYQ%25253D&gsn=ExpandCapacity&ct=xref_usages>(unsigned >>>>> size >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=90&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523mXwymG5xtblCCeS4C9QcnmOwJxql8nYDr2HLqNZVJ8I%25253D&gsn=size&ct=xref_usages>); >>>>> unsigned bytes_used_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=92&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523x95FyaH%25252BSeW1SF4BFhX9oIq7qgtHy3xzXCMmc37LcL8%25253D&gsn=bytes_used_&ct=xref_usages>; >>>>> bool variable_capacity_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=93&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523FKWGJXbcZ%25252BRuy6YD7uxQ765XV8Mhciv4FM%25252FF5B3bNvU%25253D&gsn=variable_capacity_&ct=xref_usages>; >>>>> scoped_refptr >>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=167&ct=xref_jump_to_def&gsn=scoped_refptr><ArrayBuffer >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=42&ct=xref_jump_to_def&gsn=ArrayBuffer>> >>>>> buffer_ >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523aFDjYtlmS2tmLXL2XyJ158HoigBmsAdzguhOSb6XQIw%25253D&gsn=buffer_&ct=xref_usages>; >>>>> DISALLOW_COPY_AND_ASSIGN >>>>> <https://cs.chromium.org/chromium/src/base/macros.h?l=33&ct=xref_jump_to_def&gsn=DISALLOW_COPY_AND_ASSIGN>(ArrayBufferBuilder >>>>> >>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=96&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.h%2523E6nSXqAY3ipexrHDKPfjzHqWqWIsAlT3EH3KVhT57GQ%25253D&gsn=ArrayBufferBuilder&ct=xref_usages>);};} >>>>> // namespace WTF >>>>> >>>>> >>>>> >>>>> How can i understand the structure in memory of an arraybuffer and how >>>>> big is the data field which is pointed by this void pointerHow are they >>>>> represented in memory....How big is the data field ? >>>>> >>>>> >>>>> Il giorno lun 10 set 2018 alle ore 22:19 dan Med <litoki...@gmail.com> >>>>> ha scritto: >>>>> >>>>>> i already did that and btw it is under the WTF/webkit . >>>>>> I'm interested how v8 handles javascript into every detail if u can >>>>>> guide me... >>>>>> Tell me which repository are being used by v8 on the related topic >>>>>> that would help me really much. >>>>>> >>>>>> By when it is called i mean, which javascript code will enable me to >>>>>> call that funciton cause if u click u can't go any further than that, >>>>>> >>>>>> Il giorno lun 10 set 2018 alle ore 21:53 Jakob Kummerow < >>>>>> jkum...@chromium.org> ha scritto: >>>>>> >>>>>>> On Mon, Sep 10, 2018 at 12:22 PM dan Med <litoki...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> I don't quite see if this google group is useful or not, everybody >>>>>>>> keeps answering me with superficial things, >>>>>>>> >>>>>>> >>>>>>> You said you wanted to read the compiler's source but couldn't find >>>>>>> it, so I told you that it's in src/compiler/. If that was not the answer >>>>>>> you wanted, then try asking a different question? >>>>>>> >>>>>>> Please also keep in mind that people's time is limited. The >>>>>>> easier/quicker it is to answer your question, the more likely you are to >>>>>>> get an answer. >>>>>>> >>>>>>> i don't care about the trminology like tell me which allocator it >>>>>>>> uses when and why or at least if there's something i can read to >>>>>>>> understand..... >>>>>>>> I'm surprised u don't know what a JIT page is, basically if you >>>>>>>> call a function foo() let's say 100 times then v8,had enough time to >>>>>>>> understand the parameters given to that specific function and how to >>>>>>>> optimize it efficently based on it's prediction/observation. >>>>>>>> >>>>>>>> I'm not interested in the terminology of things, (that's just a >>>>>>>> matter of reading the source code ) i'm more in reading how it works >>>>>>>> when >>>>>>>> and why.. >>>>>>>> >>>>>>> >>>>>>> It's great that you want to understand how things work. Terminology >>>>>>> is an important aspect of that though, because it enables >>>>>>> communication. If >>>>>>> we use different words for the same thing, we won't understand each >>>>>>> other. >>>>>>> Based on your explanation, I'm guessing that by "JIT page" you mean >>>>>>> "the strategy V8 uses to select functions for optimization". The core of >>>>>>> that logic is in MarkCandidatesForOptimization in >>>>>>> src/runtime-profiler.cc. >>>>>>> >>>>>>> >>>>>>>> For example when is ArrayBufferBuilder::Append called ?? >>>>>>>> >>>>>>> >>>>>>> I don't know; it's not part of V8. But you can use Code Search to >>>>>>> find out where anything is called, just click the function in question >>>>>>> to >>>>>>> get a list of call sites: >>>>>>> https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?q=ArrayBufferBuilder&sq=package:chromium&g=0&l=61 >>>>>>> >>>>>>> >>>>>>>> And i thing i've looked at the entire v8 source code but didn't >>>>>>>> find much, apart from the array.js file which describes some javascript >>>>>>>> function, i don't understand where's the rest.... >>>>>>>> >>>>>>> >>>>>>> >>>>>>> Il giorno lun 10 set 2018 alle ore 20:45 Jakob Kummerow < >>>>>>>> jkum...@chromium.org> ha scritto: >>>>>>>> >>>>>>>>> On Sun, Sep 9, 2018 at 8:54 AM dan Med <litoki...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Oh and one more thing, i've surfed perhaps the entire source code >>>>>>>>>> of v8 at least the interesting parts, but what i came across was >>>>>>>>>> just very >>>>>>>>>> short code execpt for some builtins written in javascript i believe, >>>>>>>>>> can't >>>>>>>>>> find all of the things i've found on the documentation such as the >>>>>>>>>> interpreter >>>>>>>>>> >>>>>>>>> >>>>>>>>> src/interpreter/ >>>>>>>>> >>>>>>>>> >>>>>>>>>> and the JIT compilers, >>>>>>>>>> >>>>>>>>> >>>>>>>>> src/compiler/ >>>>>>>>> >>>>>>>>> >>>>>>>>>> one more thing i'd like to understand how the memory is handeled >>>>>>>>>> like how can i read about the JIT pages, >>>>>>>>>> >>>>>>>>> >>>>>>>>> What's a JIT page? >>>>>>>>> >>>>>>>>> >>>>>>>>>> or which memory allocator does v8 use >>>>>>>>>> >>>>>>>>> >>>>>>>>> It uses several allocation techniques for different purposes. >>>>>>>>> >>>>>>>>> >>>>>>>>>> and it's garbage collector >>>>>>>>>> >>>>>>>>> >>>>>>>>> src/heap/ >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thank you ! >>>>>>>>>> >>>>>>>>>> Il giorno dom 9 set 2018 alle ore 17:51 dan Med < >>>>>>>>>> litoki...@gmail.com> ha scritto: >>>>>>>>>> >>>>>>>>>>> I don't have understood this part, let me explain it to you. >>>>>>>>>>> This is how i get it tell me if i'm wrong at any part. >>>>>>>>>>> >>>>>>>>>>> I need to understand how is the structure in memory of the >>>>>>>>>>> arraybuffer how is it represented and if the data of the array are >>>>>>>>>>> directly >>>>>>>>>>> stored at an offset accessed by buffer_ -> data(). >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> before the call to expand capacity it does create an array >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> the arraybuffer in src <https://cs.chromium.org/chromium/src/>/ >>>>>>>>>>> third_party <https://cs.chromium.org/chromium/src/third_party/>/ >>>>>>>>>>> blink <https://cs.chromium.org/chromium/src/third_party/blink/>/ >>>>>>>>>>> renderer >>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/> >>>>>>>>>>> /platform >>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/> >>>>>>>>>>> /wtf >>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/> >>>>>>>>>>> /typed_arrays >>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/> >>>>>>>>>>> /array_buffer_builder.cc >>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc> >>>>>>>>>>> is >>>>>>>>>>> called whenever the renderer (has to execute some javascript which >>>>>>>>>>> defines >>>>>>>>>>> arraybuffers) >>>>>>>>>>> First when is arraybuffer::append called, cause i know that if >>>>>>>>>>> someone need to reallocate a bigger arraybuffer then a new instance >>>>>>>>>>> will be >>>>>>>>>>> created and filled with the old values if the length in the >>>>>>>>>>> original array >>>>>>>>>>> isn't has much as the user reqeusted ? >>>>>>>>>>> >>>>>>>>>>> One more thing is, when this class is called, the arraybuffer is >>>>>>>>>>> always set to the initial length of static const int >>>>>>>>>>> kDefaultBufferCapacity >>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc?l=38&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.cc%2523YXDT7WTpXCAcuhdyTlkuCzsfCzI%25252BoHLRFAlkbCrkx4g%25253D&gsn=kDefaultBufferCapacity&ct=xref_usages> >>>>>>>>>>> = 32768; if in the javascript i declare an arraybuffer of >>>>>>>>>>> 20bytes will it allocate of >>>>>>>>>>> 32768bytes anyway =? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Il giorno mar 4 set 2018 alle ore 12:14 Graham Reeves < >>>>>>>>>>> gra...@grahamreeves.com> ha scritto: >>>>>>>>>>> >>>>>>>>>>>> > is std::numeric_limits >>>>>>>>>>>> <https://cs.chromium.org/chromium/src/buildtools/third_party/libc%2B%2B/trunk/include/limits?l=442&ct=xref_jump_to_def&gsn=numeric_limits> >>>>>>>>>>>> <unsigned>::max >>>>>>>>>>>> <https://cs.chromium.org/chromium/src/buildtools/third_party/libc%2B%2B/trunk/include/limits?l=450&ct=xref_jump_to_def&gsn=max>(); >>>>>>>>>>>> referring to the max unsigned int value ? cause the source code >>>>>>>>>>>> won't find >>>>>>>>>>>> it >>>>>>>>>>>> Yes, that's the maximum value unsigned (an unsigned int) can >>>>>>>>>>>> be, but what do you mean by, the source won't find it? >>>>>>>>>>>> >>>>>>>>>>>> On Monday, 3 September 2018 19:55:48 UTC+1, dan Med wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Can someone help me out? >>>>>>>>>>>>> >>>>>>>>>>>>> Il giorno sab 1 set 2018 alle ore 15:30 <litoki...@gmail.com> >>>>>>>>>>>>> ha scritto: >>>>>>>>>>>>> >>>>>>>>>>>>>> array_buffer_builder.cc in src >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/>/third_party >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/>/blink >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/>/ >>>>>>>>>>>>>> renderer >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/> >>>>>>>>>>>>>> /platform >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/> >>>>>>>>>>>>>> /wtf >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/> >>>>>>>>>>>>>> /typed_arrays >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/> >>>>>>>>>>>>>> /array_buffer_builder.cc >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc> >>>>>>>>>>>>>> >>>>>>>>>>>>>> the ArrayBufferBuilder >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=44&ct=xref_jump_to_def&gsn=ArrayBufferBuilder> >>>>>>>>>>>>>> ::Append >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc?l=74&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.cc%2523NFGzJegTouRzc7WYe5NO52sD3rtLZRfs3mHeMLIQn8I%25253D&gsn=Append&ct=xref_usages> >>>>>>>>>>>>>> method >>>>>>>>>>>>>> will be called through a view on top of the arraybuffer? >>>>>>>>>>>>>> something like, >>>>>>>>>>>>>> there's a arraybuffer of 30bytes in length and we define a view >>>>>>>>>>>>>> on top of >>>>>>>>>>>>>> it (so a typedarray) wehn i call on the new typedarray object >>>>>>>>>>>>>> the .append >>>>>>>>>>>>>> method it will call ArrayBufferBuilder >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=44&ct=xref_jump_to_def&gsn=ArrayBufferBuilder> >>>>>>>>>>>>>> ::Append >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc?l=74&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.cc%2523NFGzJegTouRzc7WYe5NO52sD3rtLZRfs3mHeMLIQn8I%25253D&gsn=Append&ct=xref_usages> >>>>>>>>>>>>>> and then inside it's code it will execute ArrayBufferBuilder >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=44&ct=xref_jump_to_def&gsn=ArrayBufferBuilder> >>>>>>>>>>>>>> ::ExpandCapacity >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc?l=45&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.cc%2523Fu6GnwJLuMqh5Thz%25252BDq0LStBEA8HzkICqnAPtIOPIhY%25253D&gsn=ExpandCapacity&ct=xref_usages> >>>>>>>>>>>>>> if >>>>>>>>>>>>>> it needs to reallocate the array ? >>>>>>>>>>>>>> >>>>>>>>>>>>>> if so inside the expandCapacity definition bytes_used >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=92&ct=xref_jump_to_def&gsn=bytes_used_> >>>>>>>>>>>>>> referes >>>>>>>>>>>>>> to the elements inside the actual arraybuffer so if i have a >>>>>>>>>>>>>> arraybuffer >>>>>>>>>>>>>> which is 8 bytes in length [ ][ ][ ][ ][ ][ ][ ][ ] and i fill >>>>>>>>>>>>>> in only 3 >>>>>>>>>>>>>> bytes so >>>>>>>>>>>>>> [1][2][3][ ][ ][ ][ ][ ] the bytes_used >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=92&ct=xref_jump_to_def&gsn=bytes_used_> >>>>>>>>>>>>>> when >>>>>>>>>>>>>> retrieved will be set to 3 bytes ?? >>>>>>>>>>>>>> >>>>>>>>>>>>>> ArrayBufferBuilder >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=44&ct=xref_jump_to_def&gsn=ArrayBufferBuilder>::ArrayBufferBuilder >>>>>>>>>>>>>> >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.cc?l=40&gs=kythe%253A%252F%252Fchromium%253Flang%253Dc%25252B%25252B%253Fpath%253Dsrc%252Fthird_party%252Fblink%252Frenderer%252Fplatform%252Fwtf%252Ftyped_arrays%252Farray_buffer_builder.cc%2523lcp23D0sHKN2WnDoJe7UbBQtgQbZY3lJ%25252Bn9qnDlawck%25253D&gsn=ArrayBufferBuilder&ct=xref_usages>() >>>>>>>>>>>>>> : bytes_used_ >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=92&ct=xref_jump_to_def&gsn=bytes_used_>(0), >>>>>>>>>>>>>> variable_capacity_ >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=93&ct=xref_jump_to_def&gsn=variable_capacity_>(true) >>>>>>>>>>>>>> { buffer_ >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer_builder.h?l=94&ct=xref_jump_to_def&gsn=buffer_> >>>>>>>>>>>>>> = >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/base/memory/scoped_refptr.h?l=226&ct=xref_jump_to_def&gsn=%3D> >>>>>>>>>>>>>> ArrayBuffer >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=42&ct=xref_jump_to_def&gsn=ArrayBuffer>:: >>>>>>>>>>>>>> >>>>>>>>>>>>>> <https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/wtf/typed_arrays/array_buffer.h?l=125&ct=xref_jump_to_def&gsn=Create> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.