mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
Bug 755821: Function() should use the parser's argument parsing code
This commit is contained in:
parent
e7fdd26fde
commit
0e7a16c088
24 changed files with 321 additions and 469 deletions
|
|
@ -10,6 +10,7 @@
|
|||
#define jsscript_h
|
||||
|
||||
#include "mozilla/Atomics.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
#include "mozilla/MemoryReporting.h"
|
||||
#include "mozilla/PodOperations.h"
|
||||
#include "mozilla/Variant.h"
|
||||
|
|
@ -399,6 +400,11 @@ class ScriptSource
|
|||
// scripts.
|
||||
uint32_t introductionOffset_;
|
||||
|
||||
// If this source is for Function constructor, the position of ")" after
|
||||
// parameter list in the source. This is used to get function body.
|
||||
// 0 for other cases.
|
||||
uint32_t parameterListEnd_;
|
||||
|
||||
// If this ScriptSource was generated by a code-introduction mechanism such
|
||||
// as |eval| or |new Function|, the debugger needs access to the "raw"
|
||||
// filename of the top-level script that contains the eval-ing code. To
|
||||
|
|
@ -428,7 +434,6 @@ class ScriptSource
|
|||
// demand. If sourceRetrievable_ and hasSourceData() are false, it is not
|
||||
// possible to get source at all.
|
||||
bool sourceRetrievable_:1;
|
||||
bool argumentsNotIncluded_:1;
|
||||
bool hasIntroductionOffset_:1;
|
||||
|
||||
const char16_t* chunkChars(JSContext* cx, UncompressedSourceCache::AutoHoldEntry& holder,
|
||||
|
|
@ -443,10 +448,10 @@ class ScriptSource
|
|||
sourceMapURL_(nullptr),
|
||||
mutedErrors_(false),
|
||||
introductionOffset_(0),
|
||||
parameterListEnd_(0),
|
||||
introducerFilename_(nullptr),
|
||||
introductionType_(nullptr),
|
||||
sourceRetrievable_(false),
|
||||
argumentsNotIncluded_(false),
|
||||
hasIntroductionOffset_(false)
|
||||
{
|
||||
}
|
||||
|
|
@ -461,10 +466,10 @@ class ScriptSource
|
|||
if (--refs == 0)
|
||||
js_delete(this);
|
||||
}
|
||||
bool initFromOptions(ExclusiveContext* cx, const ReadOnlyCompileOptions& options);
|
||||
bool initFromOptions(ExclusiveContext* cx, const ReadOnlyCompileOptions& options,
|
||||
mozilla::Maybe<uint32_t> parameterListEnd = mozilla::Nothing());
|
||||
bool setSourceCopy(ExclusiveContext* cx,
|
||||
JS::SourceBufferHolder& srcBuf,
|
||||
bool argumentsNotIncluded,
|
||||
SourceCompressionTask* tok);
|
||||
void setSourceRetrievable() { sourceRetrievable_ = true; }
|
||||
bool sourceRetrievable() const { return sourceRetrievable_; }
|
||||
|
|
@ -492,11 +497,6 @@ class ScriptSource
|
|||
return data.match(LengthMatcher());
|
||||
}
|
||||
|
||||
bool argumentsNotIncluded() const {
|
||||
MOZ_ASSERT(hasSourceData());
|
||||
return argumentsNotIncluded_;
|
||||
}
|
||||
|
||||
// Return a string containing the chars starting at |begin| and ending at
|
||||
// |begin + len|.
|
||||
const char16_t* chars(JSContext* cx, UncompressedSourceCache::AutoHoldEntry& asp,
|
||||
|
|
@ -504,6 +504,12 @@ class ScriptSource
|
|||
|
||||
JSFlatString* substring(JSContext* cx, size_t start, size_t stop);
|
||||
JSFlatString* substringDontDeflate(JSContext* cx, size_t start, size_t stop);
|
||||
|
||||
bool isFunctionBody() {
|
||||
return parameterListEnd_ != 0;
|
||||
}
|
||||
JSFlatString* functionBodyString(JSContext* cx);
|
||||
|
||||
void addSizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf,
|
||||
JS::ScriptSourceInfo* info) const;
|
||||
|
||||
|
|
@ -567,6 +573,10 @@ class ScriptSource
|
|||
introductionOffset_ = offset;
|
||||
hasIntroductionOffset_ = true;
|
||||
}
|
||||
|
||||
uint32_t parameterListEnd() const {
|
||||
return parameterListEnd_;
|
||||
}
|
||||
};
|
||||
|
||||
class ScriptSourceHolder
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue