@effekt-lang/effekt 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/effekt +0 -0
- package/libraries/common/array.effekt +381 -7
- package/libraries/common/stream.effekt +11 -0
- package/libraries/llvm/file.c +1 -0
- package/libraries/llvm/rts.ll +103 -92
- package/licenses/eclipse public license, version 2.0 - epl-2.0.html +2 -2
- package/licenses/mit license - mit-license.html +46 -30
- package/licenses/the bsd license - bsd-license.html +45 -29
- package/licenses/the mit license - mit.html +46 -32
- package/package.json +1 -1
package/libraries/llvm/rts.ll
CHANGED
|
@@ -144,14 +144,14 @@ define ccc %Neg @unbox(%Pos %input) {
|
|
|
144
144
|
|
|
145
145
|
define private %Prompt @currentPrompt(%Stack %stack) {
|
|
146
146
|
%prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
|
|
147
|
-
%prompt = load %Prompt, ptr %prompt_pointer
|
|
147
|
+
%prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
|
|
148
148
|
ret %Prompt %prompt
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
define private %Prompt @freshPrompt() {
|
|
152
152
|
%promptSize = ptrtoint ptr getelementptr (%PromptValue, ptr null, i64 1) to i64
|
|
153
153
|
%prompt = call %Prompt @malloc(i64 %promptSize)
|
|
154
|
-
store %PromptValue zeroinitializer, %Prompt %prompt, !alias.scope !
|
|
154
|
+
store %PromptValue zeroinitializer, %Prompt %prompt, !alias.scope !13, !noalias !23
|
|
155
155
|
ret %Prompt %prompt
|
|
156
156
|
}
|
|
157
157
|
|
|
@@ -163,8 +163,8 @@ define private %Object @newObject(%Eraser %eraser, i64 %environmentSize) alwaysi
|
|
|
163
163
|
%object = call ptr @malloc(i64 %size)
|
|
164
164
|
%objectReferenceCount = getelementptr %Header, ptr %object, i64 0, i32 0
|
|
165
165
|
%objectEraser = getelementptr %Header, ptr %object, i64 0, i32 1
|
|
166
|
-
store %ReferenceCount 0, ptr %objectReferenceCount
|
|
167
|
-
store %Eraser %eraser, ptr %objectEraser
|
|
166
|
+
store %ReferenceCount 0, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
|
|
167
|
+
store %Eraser %eraser, ptr %objectEraser, !alias.scope !14, !noalias !24
|
|
168
168
|
ret %Object %object
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -180,9 +180,9 @@ define private void @shareObject(%Object %object) alwaysinline {
|
|
|
180
180
|
|
|
181
181
|
next:
|
|
182
182
|
%objectReferenceCount = getelementptr %Header, ptr %object, i64 0, i32 0
|
|
183
|
-
%referenceCount = load %ReferenceCount, ptr %objectReferenceCount
|
|
183
|
+
%referenceCount = load %ReferenceCount, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
|
|
184
184
|
%referenceCount.1 = add %ReferenceCount %referenceCount, 1
|
|
185
|
-
store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount
|
|
185
|
+
store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
|
|
186
186
|
br label %done
|
|
187
187
|
|
|
188
188
|
done:
|
|
@@ -207,17 +207,17 @@ define private void @eraseObject(%Object %object) alwaysinline {
|
|
|
207
207
|
|
|
208
208
|
next:
|
|
209
209
|
%objectReferenceCount = getelementptr %Header, ptr %object, i64 0, i32 0
|
|
210
|
-
%referenceCount = load %ReferenceCount, ptr %objectReferenceCount
|
|
210
|
+
%referenceCount = load %ReferenceCount, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
|
|
211
211
|
switch %ReferenceCount %referenceCount, label %decr [%ReferenceCount 0, label %free]
|
|
212
212
|
|
|
213
213
|
decr:
|
|
214
214
|
%referenceCount.1 = sub %ReferenceCount %referenceCount, 1
|
|
215
|
-
store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount
|
|
215
|
+
store %ReferenceCount %referenceCount.1, ptr %objectReferenceCount, !alias.scope !14, !noalias !24
|
|
216
216
|
ret void
|
|
217
217
|
|
|
218
218
|
free:
|
|
219
219
|
%objectEraser = getelementptr %Header, ptr %object, i64 0, i32 1
|
|
220
|
-
%eraser = load %Eraser, ptr %objectEraser
|
|
220
|
+
%eraser = load %Eraser, ptr %objectEraser, !alias.scope !14, !noalias !24
|
|
221
221
|
%environment = call %Environment @objectEnvironment(%Object %object)
|
|
222
222
|
call void %eraser(%Environment %environment)
|
|
223
223
|
call void @free(%Object %object)
|
|
@@ -244,7 +244,7 @@ define void @eraseNegative(%Neg %val) alwaysinline {
|
|
|
244
244
|
|
|
245
245
|
define private %Stack @getStack(%Prompt %prompt) {
|
|
246
246
|
%stack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
247
|
-
%stack = load %Stack, ptr %stack_pointer, !alias.scope !
|
|
247
|
+
%stack = load %Stack, ptr %stack_pointer, !alias.scope !13, !noalias !23
|
|
248
248
|
ret %Stack %stack
|
|
249
249
|
}
|
|
250
250
|
|
|
@@ -259,7 +259,7 @@ define private ptr @getVarPointer(%Reference %reference, %Stack %stack) {
|
|
|
259
259
|
|
|
260
260
|
define private %Reference @newReference(%Stack %stack) alwaysinline {
|
|
261
261
|
%stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
262
|
-
%stackPointer = load %StackPointer, ptr %stackPointer_pointer
|
|
262
|
+
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
263
263
|
|
|
264
264
|
%intStack = ptrtoint %StackPointer %stackPointer to i64
|
|
265
265
|
%intBase = ptrtoint %Stack %stack to i64
|
|
@@ -280,8 +280,8 @@ define private %Stack @checkLimit(%Stack %stack, i64 %n) alwaysinline {
|
|
|
280
280
|
%stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
281
281
|
%limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
|
|
282
282
|
|
|
283
|
-
%currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !
|
|
284
|
-
%limit = load %Limit, ptr %limit_pointer, !alias.scope !
|
|
283
|
+
%currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
284
|
+
%limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
|
|
285
285
|
%nextStackPointer = getelementptr i8, %StackPointer %currentStackPointer, i64 %n
|
|
286
286
|
%isInside = icmp ule %StackPointer %nextStackPointer, %limit
|
|
287
287
|
br i1 %isInside, label %done, label %realloc
|
|
@@ -304,13 +304,13 @@ realloc:
|
|
|
304
304
|
%newStackPointer_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 1
|
|
305
305
|
%newLimit_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 2
|
|
306
306
|
|
|
307
|
-
store %StackPointer %newStackPointer, ptr %newStackPointer_pointer, !alias.scope !
|
|
308
|
-
store %Limit %newLimit, ptr %newLimit_pointer, !alias.scope !
|
|
307
|
+
store %StackPointer %newStackPointer, ptr %newStackPointer_pointer, !alias.scope !11, !noalias !21
|
|
308
|
+
store %Limit %newLimit, ptr %newLimit_pointer, !alias.scope !11, !noalias !21
|
|
309
309
|
|
|
310
310
|
%prompt_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 3
|
|
311
|
-
%prompt = load %Prompt, ptr %prompt_pointer
|
|
311
|
+
%prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
|
|
312
312
|
%promptStack = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
313
|
-
store %Stack %newStack, ptr %promptStack, !alias.scope !
|
|
313
|
+
store %Stack %newStack, ptr %promptStack, !alias.scope !13, !noalias !23
|
|
314
314
|
|
|
315
315
|
ret %Stack %newStack
|
|
316
316
|
}
|
|
@@ -319,26 +319,26 @@ define private %StackPointer @stackAllocate(%Stack %stack, i64 %n) alwaysinline
|
|
|
319
319
|
%stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
320
320
|
%limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
|
|
321
321
|
|
|
322
|
-
%currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !
|
|
323
|
-
%limit = load %Limit, ptr %limit_pointer, !alias.scope !
|
|
322
|
+
%currentStackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
323
|
+
%limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
|
|
324
324
|
%nextStackPointer = getelementptr i8, %StackPointer %currentStackPointer, i64 %n
|
|
325
325
|
|
|
326
|
-
store %StackPointer %nextStackPointer, ptr %stackPointer_pointer, !alias.scope !
|
|
326
|
+
store %StackPointer %nextStackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
327
327
|
ret %StackPointer %currentStackPointer
|
|
328
328
|
}
|
|
329
329
|
|
|
330
330
|
define private %StackPointer @stackDeallocate(%Stack %stack, i64 %n) {
|
|
331
331
|
%stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
332
|
-
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !
|
|
332
|
+
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
333
333
|
|
|
334
334
|
%limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
|
|
335
|
-
%limit = load %Limit, ptr %limit_pointer, !alias.scope !
|
|
335
|
+
%limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
|
|
336
336
|
%isInside = icmp ule %StackPointer %stackPointer, %limit
|
|
337
337
|
call void @llvm.assume(i1 %isInside)
|
|
338
338
|
|
|
339
339
|
%o = sub i64 0, %n
|
|
340
340
|
%newStackPointer = getelementptr i8, %StackPointer %stackPointer, i64 %o
|
|
341
|
-
store %StackPointer %newStackPointer, ptr %stackPointer_pointer, !alias.scope !
|
|
341
|
+
store %StackPointer %newStackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
342
342
|
|
|
343
343
|
ret %StackPointer %newStackPointer
|
|
344
344
|
}
|
|
@@ -352,11 +352,11 @@ define private i64 @nextPowerOfTwo(i64 %x) {
|
|
|
352
352
|
|
|
353
353
|
define private void @assumeFrameHeaderWasPopped(%Stack %stack) alwaysinline {
|
|
354
354
|
%stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
355
|
-
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !
|
|
355
|
+
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
356
356
|
%oldStackPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 1
|
|
357
357
|
|
|
358
358
|
%limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
|
|
359
|
-
%limit = load %Limit, ptr %limit_pointer, !alias.scope !
|
|
359
|
+
%limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
|
|
360
360
|
%isInside = icmp ule %StackPointer %oldStackPointer, %limit
|
|
361
361
|
call void @llvm.assume(i1 %isInside)
|
|
362
362
|
ret void
|
|
@@ -378,19 +378,19 @@ define private %Stack @reset(%Stack %oldStack) {
|
|
|
378
378
|
%stack.2 = insertvalue %StackValue %stack.1, %Prompt %prompt, 3
|
|
379
379
|
%stack.3 = insertvalue %StackValue %stack.2, %Stack %oldStack, 4
|
|
380
380
|
|
|
381
|
-
store %StackValue %stack.3, %Stack %stack
|
|
381
|
+
store %StackValue %stack.3, %Stack %stack, !alias.scope !11, !noalias !21
|
|
382
382
|
|
|
383
383
|
%promptStack = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
384
|
-
store %Stack %stack, ptr %promptStack, !alias.scope !
|
|
384
|
+
store %Stack %stack, ptr %promptStack, !alias.scope !13, !noalias !23
|
|
385
385
|
|
|
386
386
|
ret %Stack %stack
|
|
387
387
|
}
|
|
388
388
|
|
|
389
389
|
define private void @revalidate(%Stack %stack) {
|
|
390
390
|
%prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
|
|
391
|
-
%prompt = load %Prompt, ptr %prompt_pointer
|
|
391
|
+
%prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
|
|
392
392
|
%stack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
393
|
-
%promptStack = load %Stack, ptr %stack_pointer, !alias.scope !
|
|
393
|
+
%promptStack = load %Stack, ptr %stack_pointer, !alias.scope !13, !noalias !23
|
|
394
394
|
%isThis = icmp eq %Stack %promptStack, %stack
|
|
395
395
|
br i1 %isThis, label %done, label %continue
|
|
396
396
|
|
|
@@ -406,10 +406,10 @@ displace:
|
|
|
406
406
|
br label %update
|
|
407
407
|
|
|
408
408
|
update:
|
|
409
|
-
store %Stack %stack, ptr %stack_pointer, !alias.scope !
|
|
409
|
+
store %Stack %stack, ptr %stack_pointer, !alias.scope !13, !noalias !23
|
|
410
410
|
|
|
411
411
|
%next_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
|
|
412
|
-
%next = load %Stack, ptr %next_pointer
|
|
412
|
+
%next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
|
|
413
413
|
tail call void @revalidate(%Stack %next)
|
|
414
414
|
ret void
|
|
415
415
|
}
|
|
@@ -418,11 +418,11 @@ update:
|
|
|
418
418
|
define private void @invalidate(%Stack %stack, %Stack %end) {
|
|
419
419
|
%prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
|
|
420
420
|
%next_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
|
|
421
|
-
%prompt = load %Prompt, ptr %prompt_pointer
|
|
421
|
+
%prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
|
|
422
422
|
%stack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
423
|
-
store %Stack null, ptr %stack_pointer, !alias.scope !
|
|
423
|
+
store %Stack null, ptr %stack_pointer, !alias.scope !13, !noalias !23
|
|
424
424
|
|
|
425
|
-
%next = load %Stack, ptr %next_pointer
|
|
425
|
+
%next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
|
|
426
426
|
|
|
427
427
|
%isNull = icmp eq %Stack %next, null
|
|
428
428
|
br i1 %isNull, label %error, label %check
|
|
@@ -446,21 +446,21 @@ continue:
|
|
|
446
446
|
define private %Stack @resume(%Resumption %resumption, %Stack %oldStack) {
|
|
447
447
|
%uniqueResumption = call %Resumption @uniqueStack(%Resumption %resumption)
|
|
448
448
|
%rest_pointer = getelementptr %StackValue, %Resumption %uniqueResumption, i64 0, i32 4
|
|
449
|
-
%start = load %Stack, ptr %rest_pointer
|
|
449
|
+
%start = load %Stack, ptr %rest_pointer, !alias.scope !11, !noalias !21
|
|
450
450
|
call void @revalidate(%Stack %start)
|
|
451
451
|
|
|
452
|
-
store %Stack %oldStack, ptr %rest_pointer
|
|
452
|
+
store %Stack %oldStack, ptr %rest_pointer, !alias.scope !11, !noalias !21
|
|
453
453
|
|
|
454
454
|
ret %Stack %start
|
|
455
455
|
}
|
|
456
456
|
|
|
457
457
|
define private {%Resumption, %Stack} @shift(%Stack %stack, %Prompt %prompt) {
|
|
458
458
|
%resumpion_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
459
|
-
%resumption = load %Stack, ptr %resumpion_pointer, !alias.scope !
|
|
459
|
+
%resumption = load %Stack, ptr %resumpion_pointer, !alias.scope !13, !noalias !23
|
|
460
460
|
%next_pointer = getelementptr %StackValue, %Stack %resumption, i64 0, i32 4
|
|
461
|
-
%next = load %Stack, ptr %next_pointer
|
|
461
|
+
%next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
|
|
462
462
|
|
|
463
|
-
store %Stack %stack, ptr %next_pointer
|
|
463
|
+
store %Stack %stack, ptr %next_pointer, !alias.scope !11, !noalias !21
|
|
464
464
|
|
|
465
465
|
%result.0 = insertvalue {%Resumption, %Stack} undef, %Resumption %resumption, 0
|
|
466
466
|
%result = insertvalue {%Resumption, %Stack} %result.0, %Stack %next, 1
|
|
@@ -469,12 +469,12 @@ define private {%Resumption, %Stack} @shift(%Stack %stack, %Prompt %prompt) {
|
|
|
469
469
|
|
|
470
470
|
define private void @erasePrompt(%Prompt %prompt) alwaysinline {
|
|
471
471
|
%referenceCount_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 0
|
|
472
|
-
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !
|
|
472
|
+
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
|
|
473
473
|
switch %ReferenceCount %referenceCount, label %decrement [%ReferenceCount 0, label %free]
|
|
474
474
|
|
|
475
475
|
decrement:
|
|
476
476
|
%newReferenceCount = sub %ReferenceCount %referenceCount, 1
|
|
477
|
-
store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !
|
|
477
|
+
store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
|
|
478
478
|
ret void
|
|
479
479
|
|
|
480
480
|
free:
|
|
@@ -484,9 +484,9 @@ free:
|
|
|
484
484
|
|
|
485
485
|
define private void @sharePrompt(%Prompt %prompt) alwaysinline {
|
|
486
486
|
%referenceCount_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 0
|
|
487
|
-
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !
|
|
487
|
+
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
|
|
488
488
|
%newReferenceCount = add %ReferenceCount %referenceCount, 1
|
|
489
|
-
store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !
|
|
489
|
+
store %ReferenceCount %newReferenceCount, ptr %referenceCount_pointer, !alias.scope !13, !noalias !23
|
|
490
490
|
ret void
|
|
491
491
|
}
|
|
492
492
|
|
|
@@ -494,11 +494,11 @@ define private %Stack @underflowStack(%Stack %stack) {
|
|
|
494
494
|
%stackPrompt = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
|
|
495
495
|
%stackRest = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
|
|
496
496
|
|
|
497
|
-
%prompt = load %Prompt, ptr %stackPrompt
|
|
498
|
-
%rest = load %Stack, ptr %stackRest
|
|
497
|
+
%prompt = load %Prompt, ptr %stackPrompt, !alias.scope !11, !noalias !21
|
|
498
|
+
%rest = load %Stack, ptr %stackRest, !alias.scope !11, !noalias !21
|
|
499
499
|
|
|
500
500
|
%promptStack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
501
|
-
store %Stack null, ptr %promptStack_pointer, !alias.scope !
|
|
501
|
+
store %Stack null, ptr %promptStack_pointer, !alias.scope !13, !noalias !23
|
|
502
502
|
|
|
503
503
|
call void @erasePrompt(%Prompt %prompt)
|
|
504
504
|
call void @free(%Stack %stack)
|
|
@@ -514,8 +514,8 @@ define private %Stack @copyStack(%Stack %stack) alwaysinline {
|
|
|
514
514
|
%stackPointer_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
515
515
|
%limit_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 2
|
|
516
516
|
|
|
517
|
-
%stackPointer = load %StackPointer, ptr %stackPointer_pointer
|
|
518
|
-
%limit = load %Limit, ptr %limit_pointer
|
|
517
|
+
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
518
|
+
%limit = load %Limit, ptr %limit_pointer, !alias.scope !11, !noalias !21
|
|
519
519
|
|
|
520
520
|
%intStackPointer = ptrtoint %StackPointer %stackPointer to i64
|
|
521
521
|
%intBase = ptrtoint %Stack %stack to i64
|
|
@@ -532,17 +532,17 @@ define private %Stack @copyStack(%Stack %stack) alwaysinline {
|
|
|
532
532
|
%newStackPointer_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 1
|
|
533
533
|
%newLimit_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 2
|
|
534
534
|
|
|
535
|
-
store %StackPointer %newStackPointer, ptr %newStackPointer_pointer
|
|
536
|
-
store %Limit %newLimit, ptr %newLimit_pointer
|
|
535
|
+
store %StackPointer %newStackPointer, ptr %newStackPointer_pointer, !alias.scope !11, !noalias !21
|
|
536
|
+
store %Limit %newLimit, ptr %newLimit_pointer, !alias.scope !11, !noalias !21
|
|
537
537
|
|
|
538
538
|
call void @shareFrames(%StackPointer %newStackPointer)
|
|
539
539
|
|
|
540
540
|
%prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
|
|
541
|
-
%prompt = load %Prompt, ptr %prompt_pointer
|
|
541
|
+
%prompt = load %Prompt, ptr %prompt_pointer, !alias.scope !11, !noalias !21
|
|
542
542
|
call void @sharePrompt(%Prompt %prompt)
|
|
543
543
|
|
|
544
544
|
%referenceCount_pointer = getelementptr %StackValue, %Stack %newStack, i64 0, i32 0
|
|
545
|
-
store i64 0, ptr %referenceCount_pointer
|
|
545
|
+
store i64 0, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
546
546
|
|
|
547
547
|
ret %Stack %newStack
|
|
548
548
|
}
|
|
@@ -552,7 +552,7 @@ define private %Resumption @uniqueStack(%Resumption %resumption) alwaysinline {
|
|
|
552
552
|
|
|
553
553
|
entry:
|
|
554
554
|
%referenceCount_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 0
|
|
555
|
-
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer
|
|
555
|
+
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
556
556
|
switch %ReferenceCount %referenceCount, label %copy [%ReferenceCount 0, label %done]
|
|
557
557
|
|
|
558
558
|
done:
|
|
@@ -560,12 +560,12 @@ done:
|
|
|
560
560
|
|
|
561
561
|
copy:
|
|
562
562
|
%newOldReferenceCount = sub %ReferenceCount %referenceCount, 1
|
|
563
|
-
store %ReferenceCount %newOldReferenceCount, ptr %referenceCount_pointer
|
|
563
|
+
store %ReferenceCount %newOldReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
564
564
|
|
|
565
565
|
%firstCopy = call %Stack @copyStack(%Stack %resumption)
|
|
566
566
|
|
|
567
567
|
%stack_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 4
|
|
568
|
-
%stack = load %Stack, ptr %stack_pointer
|
|
568
|
+
%stack = load %Stack, ptr %stack_pointer, !alias.scope !11, !noalias !21
|
|
569
569
|
|
|
570
570
|
br label %check
|
|
571
571
|
|
|
@@ -582,40 +582,40 @@ loop:
|
|
|
582
582
|
|
|
583
583
|
%newCopy = call %Stack @copyStack(%Stack %current)
|
|
584
584
|
|
|
585
|
-
store %Stack %newCopy, ptr %rest_pointer
|
|
585
|
+
store %Stack %newCopy, ptr %rest_pointer, !alias.scope !11, !noalias !21
|
|
586
586
|
|
|
587
587
|
%next_pointer = getelementptr %StackValue, %Stack %current, i64 0, i32 4
|
|
588
|
-
%next = load %Stack, ptr %next_pointer
|
|
588
|
+
%next = load %Stack, ptr %next_pointer, !alias.scope !11, !noalias !21
|
|
589
589
|
|
|
590
590
|
br label %check
|
|
591
591
|
|
|
592
592
|
stop:
|
|
593
|
-
store %Stack %firstCopy, ptr %rest_pointer
|
|
593
|
+
store %Stack %firstCopy, ptr %rest_pointer, !alias.scope !11, !noalias !21
|
|
594
594
|
ret %Stack %firstCopy
|
|
595
595
|
}
|
|
596
596
|
|
|
597
597
|
define void @shareResumption(%Resumption %resumption) alwaysinline {
|
|
598
598
|
%referenceCount_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 0
|
|
599
|
-
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer
|
|
599
|
+
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
600
600
|
%referenceCount.1 = add %ReferenceCount %referenceCount, 1
|
|
601
|
-
store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer
|
|
601
|
+
store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
602
602
|
ret void
|
|
603
603
|
}
|
|
604
604
|
|
|
605
605
|
define void @eraseResumption(%Resumption %resumption) alwaysinline {
|
|
606
606
|
%referenceCount_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 0
|
|
607
|
-
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer
|
|
607
|
+
%referenceCount = load %ReferenceCount, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
608
608
|
switch %ReferenceCount %referenceCount, label %decr [%ReferenceCount 0, label %free]
|
|
609
609
|
|
|
610
610
|
decr:
|
|
611
611
|
%referenceCount.1 = sub %ReferenceCount %referenceCount, 1
|
|
612
|
-
store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer
|
|
612
|
+
store %ReferenceCount %referenceCount.1, ptr %referenceCount_pointer, !alias.scope !11, !noalias !21
|
|
613
613
|
ret void
|
|
614
614
|
|
|
615
615
|
free:
|
|
616
616
|
%stack_pointer = getelementptr %StackValue, %Resumption %resumption, i64 0, i32 4
|
|
617
|
-
%stack = load %Stack, ptr %stack_pointer
|
|
618
|
-
store %Stack null, ptr %stack_pointer
|
|
617
|
+
%stack = load %Stack, ptr %stack_pointer, !alias.scope !11, !noalias !21
|
|
618
|
+
store %Stack null, ptr %stack_pointer, !alias.scope !11, !noalias !21
|
|
619
619
|
call void @eraseStack(%Stack %stack)
|
|
620
620
|
ret void
|
|
621
621
|
}
|
|
@@ -625,17 +625,17 @@ define void @eraseStack(%Stack %stack) alwaysinline {
|
|
|
625
625
|
%prompt_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 3
|
|
626
626
|
%rest_pointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 4
|
|
627
627
|
|
|
628
|
-
%stackPointer = load %StackPointer, ptr %stackPointer_pointer
|
|
629
|
-
%prompt = load %Stack, ptr %prompt_pointer
|
|
630
|
-
%rest = load %Stack, ptr %rest_pointer
|
|
628
|
+
%stackPointer = load %StackPointer, ptr %stackPointer_pointer, !alias.scope !11, !noalias !21
|
|
629
|
+
%prompt = load %Stack, ptr %prompt_pointer, !alias.scope !11, !noalias !21
|
|
630
|
+
%rest = load %Stack, ptr %rest_pointer, !alias.scope !11, !noalias !21
|
|
631
631
|
|
|
632
632
|
%promptStack_pointer = getelementptr %PromptValue, %Prompt %prompt, i64 0, i32 1
|
|
633
|
-
%promptStack = load %Stack, ptr %promptStack_pointer, !alias.scope !
|
|
633
|
+
%promptStack = load %Stack, ptr %promptStack_pointer, !alias.scope !13, !noalias !23
|
|
634
634
|
%isThisStack = icmp eq %Stack %promptStack, %stack
|
|
635
635
|
br i1 %isThisStack, label %clearPrompt, label %free
|
|
636
636
|
|
|
637
637
|
clearPrompt:
|
|
638
|
-
store %Stack null, ptr %promptStack_pointer, !alias.scope !
|
|
638
|
+
store %Stack null, ptr %promptStack_pointer, !alias.scope !13, !noalias !23
|
|
639
639
|
br label %free
|
|
640
640
|
|
|
641
641
|
free:
|
|
@@ -656,7 +656,7 @@ done:
|
|
|
656
656
|
define private void @shareFrames(%StackPointer %stackPointer) alwaysinline {
|
|
657
657
|
%newStackPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 -1
|
|
658
658
|
%stackSharer = getelementptr %FrameHeader, %StackPointer %newStackPointer, i64 0, i32 1
|
|
659
|
-
%sharer = load %Sharer, ptr %stackSharer
|
|
659
|
+
%sharer = load %Sharer, ptr %stackSharer, !alias.scope !12, !noalias !22
|
|
660
660
|
tail call void %sharer(%StackPointer %newStackPointer)
|
|
661
661
|
ret void
|
|
662
662
|
}
|
|
@@ -664,7 +664,7 @@ define private void @shareFrames(%StackPointer %stackPointer) alwaysinline {
|
|
|
664
664
|
define private void @eraseFrames(%StackPointer %stackPointer) alwaysinline {
|
|
665
665
|
%newStackPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 -1
|
|
666
666
|
%stackEraser = getelementptr %FrameHeader, %StackPointer %newStackPointer, i64 0, i32 2
|
|
667
|
-
%eraser = load %Eraser, ptr %stackEraser
|
|
667
|
+
%eraser = load %Eraser, ptr %stackEraser, !alias.scope !12, !noalias !22
|
|
668
668
|
tail call void %eraser(%StackPointer %newStackPointer)
|
|
669
669
|
ret void
|
|
670
670
|
}
|
|
@@ -705,37 +705,37 @@ define private %Stack @withEmptyStack() {
|
|
|
705
705
|
%globals = call %Stack @reset(%Stack null)
|
|
706
706
|
|
|
707
707
|
%globalsStackPointer_pointer = getelementptr %StackValue, %Stack %globals, i64 0, i32 1
|
|
708
|
-
%globalsStackPointer = load %StackPointer, ptr %globalsStackPointer_pointer
|
|
708
|
+
%globalsStackPointer = load %StackPointer, ptr %globalsStackPointer_pointer, !alias.scope !11, !noalias !21
|
|
709
709
|
|
|
710
710
|
%returnAddressPointer.0 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 0, i32 0
|
|
711
711
|
%sharerPointer.0 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 0, i32 1
|
|
712
712
|
%eraserPointer.0 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 0, i32 2
|
|
713
713
|
|
|
714
|
-
store ptr @globalsReturn, ptr %returnAddressPointer.0
|
|
715
|
-
store ptr @topLevelSharer, ptr %sharerPointer.0
|
|
716
|
-
store ptr @topLevelEraser, ptr %eraserPointer.0
|
|
714
|
+
store ptr @globalsReturn, ptr %returnAddressPointer.0, !alias.scope !12, !noalias !22
|
|
715
|
+
store ptr @topLevelSharer, ptr %sharerPointer.0, !alias.scope !12, !noalias !22
|
|
716
|
+
store ptr @topLevelEraser, ptr %eraserPointer.0, !alias.scope !12, !noalias !22
|
|
717
717
|
|
|
718
718
|
%globalsStackPointer_2 = getelementptr %FrameHeader, %StackPointer %globalsStackPointer, i64 1
|
|
719
|
-
store %StackPointer %globalsStackPointer_2, ptr %globalsStackPointer_pointer
|
|
719
|
+
store %StackPointer %globalsStackPointer_2, ptr %globalsStackPointer_pointer, !alias.scope !11, !noalias !21
|
|
720
720
|
|
|
721
721
|
%stack = call %Stack @reset(%Stack %globals)
|
|
722
722
|
|
|
723
723
|
%globalStack = getelementptr %PromptValue, %Prompt @global, i64 0, i32 1
|
|
724
|
-
store %Stack %stack, ptr %globalStack, !alias.scope !
|
|
724
|
+
store %Stack %stack, ptr %globalStack, !alias.scope !13, !noalias !23
|
|
725
725
|
|
|
726
726
|
%stackStackPointer = getelementptr %StackValue, %Stack %stack, i64 0, i32 1
|
|
727
|
-
%stackPointer = load %StackPointer, ptr %stackStackPointer
|
|
727
|
+
%stackPointer = load %StackPointer, ptr %stackStackPointer, !alias.scope !11, !noalias !21
|
|
728
728
|
|
|
729
729
|
%returnAddressPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 0
|
|
730
730
|
%sharerPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 1
|
|
731
731
|
%eraserPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 2
|
|
732
732
|
|
|
733
|
-
store %ReturnAddress @topLevel, ptr %returnAddressPointer
|
|
734
|
-
store %Sharer @topLevelSharer, ptr %sharerPointer
|
|
735
|
-
store %Eraser @topLevelEraser, ptr %eraserPointer
|
|
733
|
+
store %ReturnAddress @topLevel, ptr %returnAddressPointer, !alias.scope !12, !noalias !22
|
|
734
|
+
store %Sharer @topLevelSharer, ptr %sharerPointer, !alias.scope !12, !noalias !22
|
|
735
|
+
store %Eraser @topLevelEraser, ptr %eraserPointer, !alias.scope !12, !noalias !22
|
|
736
736
|
|
|
737
737
|
%stackPointer_2 = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 1
|
|
738
|
-
store %StackPointer %stackPointer_2, ptr %stackStackPointer
|
|
738
|
+
store %StackPointer %stackPointer_2, ptr %stackStackPointer, !alias.scope !11, !noalias !21
|
|
739
739
|
|
|
740
740
|
ret %Stack %stack
|
|
741
741
|
}
|
|
@@ -743,7 +743,7 @@ define private %Stack @withEmptyStack() {
|
|
|
743
743
|
define void @resume_Int(%Stack %stack, %Int %argument) {
|
|
744
744
|
%stackPointer = call ccc %StackPointer @stackDeallocate(%Stack %stack, i64 24)
|
|
745
745
|
%returnAddressPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 0
|
|
746
|
-
%returnAddress = load %ReturnAddress, ptr %returnAddressPointer
|
|
746
|
+
%returnAddress = load %ReturnAddress, ptr %returnAddressPointer, !alias.scope !12, !noalias !22
|
|
747
747
|
tail call tailcc void %returnAddress(%Int %argument, %Stack %stack)
|
|
748
748
|
ret void
|
|
749
749
|
}
|
|
@@ -751,7 +751,7 @@ define void @resume_Int(%Stack %stack, %Int %argument) {
|
|
|
751
751
|
define void @resume_Pos(%Stack %stack, %Pos %argument) {
|
|
752
752
|
%stackPointer = call ccc %StackPointer @stackDeallocate(%Stack %stack, i64 24)
|
|
753
753
|
%returnAddressPointer = getelementptr %FrameHeader, %StackPointer %stackPointer, i64 0, i32 0
|
|
754
|
-
%returnAddress = load %ReturnAddress, ptr %returnAddressPointer
|
|
754
|
+
%returnAddress = load %ReturnAddress, ptr %returnAddressPointer, !alias.scope !12, !noalias !22
|
|
755
755
|
tail call tailcc void %returnAddress(%Pos %argument, %Stack %stack)
|
|
756
756
|
ret void
|
|
757
757
|
}
|
|
@@ -764,7 +764,7 @@ define void @run(%Neg %f) {
|
|
|
764
764
|
%arrayPointer = extractvalue %Neg %f, 0
|
|
765
765
|
%object = extractvalue %Neg %f, 1
|
|
766
766
|
%functionPointerPointer = getelementptr ptr, ptr %arrayPointer, i64 0
|
|
767
|
-
%functionPointer = load ptr, ptr %functionPointerPointer
|
|
767
|
+
%functionPointer = load ptr, ptr %functionPointerPointer, !alias.scope !15, !noalias !25
|
|
768
768
|
|
|
769
769
|
; call
|
|
770
770
|
tail call tailcc %Pos %functionPointer(%Object %object, %Stack %stack)
|
|
@@ -779,7 +779,7 @@ define void @run_Int(%Neg %f, i64 %argument) {
|
|
|
779
779
|
%arrayPointer = extractvalue %Neg %f, 0
|
|
780
780
|
%object = extractvalue %Neg %f, 1
|
|
781
781
|
%functionPointerPointer = getelementptr ptr, ptr %arrayPointer, i64 0
|
|
782
|
-
%functionPointer = load ptr, ptr %functionPointerPointer
|
|
782
|
+
%functionPointer = load ptr, ptr %functionPointerPointer, !alias.scope !15, !noalias !25
|
|
783
783
|
|
|
784
784
|
; call
|
|
785
785
|
tail call tailcc %Pos %functionPointer(%Object %object, %Evidence 0, i64 %argument, %Stack %stack)
|
|
@@ -794,7 +794,7 @@ define void @run_Pos(%Neg %f, %Pos %argument) {
|
|
|
794
794
|
%arrayPointer = extractvalue %Neg %f, 0
|
|
795
795
|
%object = extractvalue %Neg %f, 1
|
|
796
796
|
%functionPointerPointer = getelementptr ptr, ptr %arrayPointer, i64 0
|
|
797
|
-
%functionPointer = load ptr, ptr %functionPointerPointer
|
|
797
|
+
%functionPointer = load ptr, ptr %functionPointerPointer, !alias.scope !15, !noalias !25
|
|
798
798
|
|
|
799
799
|
; call
|
|
800
800
|
tail call tailcc %Pos %functionPointer(%Object %object, %Evidence 0, %Pos %argument, %Stack %stack)
|
|
@@ -806,10 +806,21 @@ define void @run_Pos(%Neg %f, %Pos %argument) {
|
|
|
806
806
|
!0 = !{!"types"}
|
|
807
807
|
|
|
808
808
|
; Scopes
|
|
809
|
-
!1 = !{!"
|
|
810
|
-
!2 = !{!"
|
|
809
|
+
!1 = !{!"stackBase", !0}
|
|
810
|
+
!2 = !{!"stackPointer", !0}
|
|
811
|
+
!3 = !{!"prompt", !0}
|
|
812
|
+
!4 = !{!"object", !0}
|
|
813
|
+
!5 = !{!"vtable", !0}
|
|
811
814
|
|
|
812
815
|
; Scope lists
|
|
813
|
-
!
|
|
814
|
-
!
|
|
815
|
-
!
|
|
816
|
+
!11 = !{!1} ; stackBase
|
|
817
|
+
!12 = !{!2} ; stackPointer
|
|
818
|
+
!13 = !{!3} ; prompt
|
|
819
|
+
!14 = !{!4} ; object
|
|
820
|
+
!15 = !{!5} ; vtable
|
|
821
|
+
|
|
822
|
+
!21 = !{ !2, !3, !4, !5} ; not stackBase
|
|
823
|
+
!22 = !{!1, !3, !4, !5} ; not stackPointer
|
|
824
|
+
!23 = !{!1, !2, !4, !5} ; not prompt
|
|
825
|
+
!24 = !{!1, !2, !3, !5} ; not object
|
|
826
|
+
!25 = !{!1, !2, !3, !4 } ; not vtable
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title><meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.110.0"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=
|
|
1
|
+
<!doctype html><html lang=en><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><title>Eclipse Public License 2.0 (EPL) | The Eclipse Foundation</title><meta property="og:title" content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=twitter:title content="Eclipse Public License 2.0 (EPL) | The Eclipse Foundation"><meta name=description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta property="og:description" content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=twitter:description content="The Eclipse Foundation provides our global community of individuals and organisations with a mature, scalable, and business-friendly environment for open source …"><meta name=author content="Wayne Beaton"><link href=/favicon.ico rel=icon type=image/x-icon><meta property="og:image" content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:image content="https://www.eclipse.org/images/logos/eclipse-foundation-400x400.png"><meta name=twitter:card content="summary"><meta name=twitter:site content="@eclipsefdn"><meta name=twitter:creator content="@eclipsefdn"><meta property="og:url" content="https://www.eclipse.org/legal/epl-2.0/"><meta property="og:type" content="website"><meta property="og:site_name" content="Eclipse Foundation"><meta name=keywords content="epl,epl-2.0,legal,foundation,eclipse,eclipse public license,license,licenses"><meta name=generator content="Hugo 0.110.0"><link rel=canonical href=https://www.eclipse.org/legal/epl-2.0/><link rel=alternate href=/legal/epl-2.0/index.xml type=application/rss+xml title><link rel=stylesheet href="/public/css/styles.css?v=1742148967"><script>(function(e,t,n,s,o){e[s]=e[s]||[],e[s].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var a=t.getElementsByTagName(n)[0],i=t.createElement(n),r=s!="dataLayer"?"&l="+s:"";i.async=!0,i.src="https://www.googletagmanager.com/gtm.js?id="+o+r,a.parentNode.insertBefore(i,a)})(window,document,"script","dataLayer","GTM-5WLCZXC")</script><script>var tableClasses="table"</script><link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel=stylesheet type=text/css></head><body><noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WLCZXC" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript><a class=sr-only href=#content>Skip to main content</a><header class="header-wrapper header-wrapper" id=header><div class=header-toolbar><div class=container><div class=header-toolbar-row><div class="toolbar-btn toolbar-search-btn dropdown"><button class=dropdown-toggle id=toolbar-search type=button data-toggle=dropdown tabindex=0 aria-label=Search>
|
|
2
2
|
<i class="fa fa-search fa-lg" aria-role=none></i></button><div class="toolbar-search-bar-wrapper dropdown-menu dropdown-menu-right" aria-labelledby=toolbar-search><form action=https://www.eclipse.org/home/search method=get><div class=search-bar><input class=search-bar-input name=q placeholder=Search>
|
|
3
3
|
<button>
|
|
4
4
|
<i class="fa fa-search" type=submit></i></button></div></form></div></div><div class="toolbar-btn toolbar-user-menu-btn dropdown"><button class=dropdown-toggle id=toolbar-user-menu type=button data-toggle=dropdown tabindex=0 aria-label="User Menu">
|
|
@@ -59,5 +59,5 @@ open source software collaboration and innovation.</p></div><div class=mega-menu
|
|
|
59
59
|
<i class="fa-brands fa-linkedin-in fa-stack-1x fa-inverse" aria-hidden=true></i>
|
|
60
60
|
<span class=sr-only>Linkedin account</span></span></a></li></ul></div></div><div class="footer-sections row equal-height-md font-bold"><div class=col-md-15><div class=row><section id=footer-eclipse-foundation class="footer-section col-sm-8"><div class=menu-heading>Eclipse Foundation</div><ul class=nav><li><a href=https://www.eclipse.org/org/>About</a></li><li><a href=https://projects.eclipse.org/>Projects</a></li><li><a href=https://www.eclipse.org/collaborations/>Collaborations</a></li><li><a href=https://www.eclipse.org/membership/>Membership</a></li><li><a href=https://www.eclipse.org/sponsor/>Sponsor</a></li></ul></section><section id=footer-legal class="footer-section col-sm-8"><div class=menu-heading>Legal</div><ul class=nav><li><a href=https://www.eclipse.org/legal/privacy/>Privacy Policy</a></li><li><a href=https://www.eclipse.org/legal/terms-of-use/>Terms of Use</a></li><li><a href=https://www.eclipse.org/legal/compliance/>Compliance</a></li><li><a href=https://www.eclipse.org/org/documents/Community_Code_of_Conduct.php>Code of Conduct</a></li><li><a href=https://www.eclipse.org/legal/>Legal Resources</a></li><li><a class=toolbar-manage-cookies href=# onclick=event.preventDefault()>Manage Cookies</a></li></ul></section><section id=footer-more class="footer-section col-sm-8"><div class=menu-heading>More</div><ul class=nav><li><a href=https://www.eclipse.org/security/>Report a Vulnerability</a></li><li><a href=https://status.eclipse.org/>Service Status</a></li><li><a href=https://www.eclipse.org/org/foundation/contact.php>Contact Us</a></li><li><a href=https://www.eclipse.org/projects/support/>Support</a></li></ul></section></div></div><div id=footer-end class="footer-section col-md-8 col-md-offset-1 col-sm-24"><div class=footer-end-newsletter><form id=mc-embedded-subscribe-form action="https://eclipse.us6.list-manage.com/subscribe/post?u=eaf9e1f06f194eadc66788a85&id=e7538485cd&f_id=00f9c2e1f0" method=post novalidate target=_blank><label class=footer-end-newsletter-label for=email>Subscribe to our Newsletter</label><div class=footer-end-newsletter-input-wrapper><input class=footer-end-newsletter-input type=email id=email name=EMAIL autocomplete=email placeholder="Enter your email address">
|
|
61
61
|
<button class="footer-end-newsletter-submit btn btn-link" id=mc-embedded-subscribe type=submit name=subscribe>
|
|
62
|
-
<i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></button></div></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright © Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=
|
|
62
|
+
<i class="fa fa-solid fa-envelope fa-lg" aria-hidden=true></i></button></div></form></div></div></div><div class="col-sm-24 margin-top-20"><div class=row><div id=copyright class=col-md-16><p id=copyright-text>Copyright © Eclipse Foundation AISBL. All Rights Reserved.</p></div></div></div><a href=# class=scrollup>Back to the top</a></div></footer><div id=footer-js><script src="/public/js/main.js?v1.0?v=1742148967"></script>
|
|
63
63
|
<script>(function(){})(jQuery,document)</script></div></body></html>
|